---
title: 実行環境とレート制限
description: この記事では、関数の実行環境、レート制限、および実行制限についての情報を提供します。
url: https://docs.tealium.com/ja/server-side/functions/environment/
---
## 実行環境

関数の実行環境は、[GraalVM](https://www.graalvm.org/") JavaScriptランタイムに基づいて構築され、ECMAScript 2020互換のコードを実行します。

### 関数の制限

* 関数は、[関数用APIとライブラリ]()に記載されているライブラリを除き、サードパーティのライブラリを使用することはできません。
* 関数は最大32 MBのメモリを使用できます。
関数が32 MBを超えて使用しようとすると、ログに次のエラーが記録されます：  
`Exception 400 BAD REQUEST - OutOfMemoryError: memory limit 32 mb is exceeded.`
* 関数の最大サイズは64 KBで、これは約1500行のコードに相当します。
64 KBを超える関数は、サイズが縮小されるまで保存できません。
* 関数のログメッセージは以下のように制限されます：
    * **アカウントごとの関数ごとの制限**：1分間に5 MBのログメッセージ。この制限に達すると、関数のログ記録が1分間スロットルされます。関数がスロットルされると、情報メッセージはログに記録されません。エラーメッセージと警告メッセージは引き続きログに記録されます。完全なログ記録は1分後に再開されます。
    * **すべての関数のアカウント制限**：1分間に50 MBのログメッセージ。現在、ログ記録はスロットルされません。この制限を超えると、Tealiumはログメッセージの数を制限するよう要求する場合があります。

### ランタイムバージョン

関数の実行環境、つまりランタイムバージョンは、関数のタイプによって異なります：

 * **データ変換関数**：現在のランタイムバージョンはTransformation V0です。詳細については、[データ変換関数について]()を参照してください。
 * **イベントおよびビジター関数**：最新のランタイムバージョンはAction V3です。既存の関数はAction V2を使用しており、これは非推奨です。詳細については、以下を参照してください：
     * [イベントおよびビジター関数 V2]()
     * [イベントおよびビジター関数 V3]()
     * [V2関数をV3に移行する]()
 * **CloudStreamデータレコード変換関数**：現在のランタイムバージョンはTransformation V1です。
 * **CloudStreamデータレコード関数**：最新のランタイムバージョンはCLS Action V1です。

関数のランタイムバージョンは、コードエディタの**コード**タブに表示されます。以下のように表示されます：![](https://docs.tealium.com/images/server-side/functions-runtime-version-location.png)

ランタイムバージョンは新機能を提供するために更新されることがあります。新しいランタイムバージョンが利用可能になると、**関数概要**ページに次のようなメッセージが表示されます：![](https://docs.tealium.com/images/server-side/functions-new-runtime-available.png)

Tealiumが新しいランタイムバージョンをリリースするにつれて、古いバージョンは非推奨となり、最終的には廃止されます。ランタイムバージョンが非推奨または廃止された場合、**関数概要**画面および関数の**コード**タブにメッセージが表示されます。

## イベントおよびデータレコード変換関数の実行時間制限

データ変換関数には以下の実行制限があります：

* 1分間に1時間の実行時間または
* 1分間に250,000回の呼び出し（1時間に1500万回）
* 各関数呼び出しの実行時間は150ミリ秒  
関数が150ミリ秒の実行時間を超えると、ログに次のエラーが記録されます：  
`Invocation timeout limit of 150 milliseconds is exceeded`

これらの実行制限はアカウントと地域に基づいています。ある地域のアカウント内のすべての関数の実行時間と呼び出し回数の合計は、これらの制限を超えることはできません。

いずれかの制限を超えると、関数の実行は一時的に停止（スロットル）されます。次のメッセージが**関数概要**に表示され、スロットルされた関数の横に黄色の警告アイコンが表示されます：

![](https://docs.tealium.com/images/server-side/throttle-msg.png)

スロットルされた関数の詳細を表示する方法については、[関数の統計を表示する](https://docs.tealium.com/view-function-statistics/)を参照してください。

## イベント、ビジター、およびデータレコード関数の実行時間制限

イベント、ビジター、およびデータレコード関数には以下の実行制限があります：

* 実行レート：1分間に180,000回の呼び出し
* 実行時間：1分間に8時間
* 各関数呼び出しの実行時間：10秒  
関数が10秒の実行時間を超えると、ログに次のエラーが記録されます：  
`Exception 504 - Invocation timeout limit of 10000 milliseconds is exceeded.`

## トレース制限

トレースで関数をテストする場合、関数呼び出しは1分間に15回に制限されます。

## 実行レートと実行時間：例1

この例では、外部APIと通信する関数が呼び出し1回あたり約100 msかかると仮定します。また、このアカウントには1つの関数のみが構成されており、この関数の平均実行レートは1秒あたり1000回の呼び出しと仮定します。

1分間の時間枠内での実行レートと実行時間は次のとおりです：

実行レート = 1000 * 60 * 1分 = **1分間に60,000回の呼び出しの実行レート**

実行時間 = 1000回の呼び出し/秒 * 100 ms / 1000 = 100分 = **1分間に1.66時間の実行時間**

この場合、実行レートと実行時間はどちらも制限以下です。

## 実行レートと実行時間：例2

この例では、外部APIのパフォーマンスが一時的に低下し、関数の実行時間が呼び出し1回あたり800 msになると仮定します。これは実行時間が8倍に増加することを意味します。

実行時間 = (1000呼び出し/秒 * 100 ms / 1000) * 8 = 800分 = **1分間に13.28時間の実行時間**。

この場合の実行時間は1分間に13.28時間であり、1分間に8時間の最大値を超えています。関数の呼び出しはスロットルされる可能性があります。