割り当て

このドキュメントでは、Google Cloud Functions の割り当て上限について説明します。

Google Cloud Functions の割り当てには次の 3 つの上限が設けられています。

  • リソースに関する上限

    関数の処理に使用できるリソースの合計量に影響します。

  • 時間に関する上限

    実行できる時間の長さに影響します。

  • レートに関する上限

    これらは、Cloud Functions API を呼び出して関数を管理できるレートに影響します。

上記の各上限について、以下で詳しく説明します。該当する場合には、Cloud Functions(第 1 世代)と Cloud Functions(第 2 世代)の上限の違いが記載されています。

リソースに関する上限

リソースに関する上限は、関数の処理に使用できるリソースの合計量に影響します。リージョンのスコープはプロジェクトごとであり、各プロジェクトは独自の上限を保持します。

割り当て 説明 上限(第 1 世代) 上限(第 2 世代) 上限引き上げ可能 範囲
関数の数 リージョンごとにデプロイできる関数の合計数 1,000 1,000 から、デプロイされる Cloud Run サービスの数を引いた数 × リージョンごと
デプロイメントの最大サイズ デプロイする 1 つの関数の最大サイズ ソース用に 100 MB(圧縮)
ソースとモジュール用に 500 MB(非圧縮)
該当なし × 関数ごと
非圧縮 HTTP リクエストの最大サイズ HTTP リクエストで HTTP 関数に送信されるデータ 10 MB 32 MB × 呼び出しごと
非圧縮 HTTP レスポンスの最大サイズ HTTP レスポンスで HTTP 関数から送信されるデータ 10 MB ストリーミング レスポンスの場合は 10 MB。
ストリーミング以外のレスポンスの場合は 32 MB。
× 呼び出しごと
イベント ドリブン関数の最大イベントサイズ イベントでバックグラウンド関数に送信されるデータ 10 MB Eventarc イベントの場合は 512 KB。
以前のイベントの場合は 10 MB。
× イベントごと
最大関数メモリ 各関数のインスタンスが使用できるメモリの量 8GiB 32GiB いいえ 関数ごと

時間に関する上限

割り当て 説明 上限(第 1 世代) 上限(第 2 世代) 上限引き上げ可能 範囲
関数の最大実行時間 強制終了されるまで関数を実行できる時間の上限 540 秒 HTTP 関数の場合は 60 分。
イベント ドリブン関数の場合は 9 分。
いいえ 呼び出しごと

レートに関する上限

割り当て 説明 上限(第 1 世代) 上限(第 2 世代) 上限引き上げ可能 範囲
API 呼び出し(読み取り) Cloud Functions API 経由で関数の情報または一覧を取得する呼び出しの数 100 秒あたり 5,000 60 秒あたり 1,200 第 1 世代のみ プロジェクトごと(第 1 世代)
リージョンごと(第 2 世代)
API 呼び出し(書き込み) Cloud Functions API 経由で関数をデプロイまたは削除する呼び出しの数 100 秒あたり 80 60 秒あたり 60 × 1 プロジェクトごと(第 1 世代)
リージョンごと(第 2 世代)
API 呼び出し(CALL) "call" API 呼び出しの数 100 秒あたり 16 該当なし × 2 プロジェクトごと

スケーラビリティ

HTTP によって呼び出される Cloud Functions の関数は、受信トラフィックを処理するために迅速にスケールアップしますが、バックグラウンド関数はゆっくりとしたペースでスケールアップします。関数のスケーラビリティは以下のような要因によって決まります。

  • 関数の実行に必要な時間(一般に、短時間で完了する関数は、スケールアップして処理できる同時リクエスト数を増やすことができます)。
  • コールド スタート時の関数の初期化に必要な時間。
  • 関数のエラー率。
  • リージョンの負荷やデータセンターの容量といった一時的な要因。

  • 最小インスタンス最大インスタンス同時実行で定義される構成(同時実行は第 2 世代のみ)。

以下で説明するように、バックグラウンド関数には追加の上限があります。これらの上限は、第 1 世代の HTTP 関数には適用されません。第 2 世代の HTTP 関数のデフォルトの最大インスタンス上限は 100 で、1,000 に増やすことができます。第 1 世代の HTTP 関数には、デフォルトの最大インスタンス上限はありません。 第 1 世代の HTTP 関数で無制限のスケーリングイベントが発生しないように、上限を設定することをおすすめします(例: 3000)。

バックグラウンド関数の追加割り当て

割り当て 説明 上限 上限引き上げ可否 範囲 プロダクト バージョン
最大同時呼び出し数 1 つの関数の最大同時呼び出し数
例: 1 件のイベントを処理するのに 100 秒かかる場合、呼び出しレートは平均で 1 秒あたり 30 件に制限されます。
3,000 件 はい 関数ごと 第 1 世代のみ
最大呼び出しレート 1 個の関数によって処理されるイベントの最大レート
例: 1 件のイベントを処理するのに 100 ミリ秒かかる場合、平均で 100 件のリクエストのみが並列に処理される状況であっても、呼び出しレートは 1 秒あたり 1,000 件に制限されます。
1 秒あたり 1,000 × 関数ごと 第 1 世代のみ
同時イベントの最大データサイズ 1 個の関数の同時呼び出しの受信イベントの最大合計サイズ
例: イベントのサイズが 1 MB であり、その処理に 10 秒かかる場合、平均レートは 1 秒あたり 1 イベントとなります。これは、最初の 10 件のイベントのいずれかの処理が完了するまでは、11 番目のイベントが処理されないためです。
10 MB × 関数ごと 第 1 世代と第 2 世代
受信イベントの最大スループット 1 個の関数の受信イベントの最大スループット
例: イベントのサイズが 1 MB である場合、関数が 100 ミリ秒以内に完了したとしても、最大の呼び出しレートは 1 秒あたり 10 件になる場合があります。
1 秒あたり 10 MB × 関数ごと 第 1 世代と第 2 世代

割り当て上限に達した場合

関数が割り当てられたリソースをすべて消費すると、割り当てが補充されるまでそのリソースは使用できなくなります。つまり、それまでは、その関数だけでなく同じプロジェクト内の他のすべての関数が動作しなくなる可能性があります。いずれかのリソースが割り当てを超過したために関数を実行できない場合、関数は HTTP 500 のエラーコードを返します。

ここに記載されているデフォルトから割り当てを引き上げるには、Cloud Functions の [割り当て] ページに移動し、変更する割り当てを選択します。次に、[割り当てを編集] をクリックし、プロンプトが表示されたらユーザー情報を入力して、選択した各割り当ての新しい上限を入力します。