このページでは、従量課金制の Blaze 料金プランに基づいた、Cloud Functions のスケーラブルな使用量ベースの上限について詳しく説明します。これらの上限は、Node.js 10 ランタイム環境に関数をデプロイする Firebase プロジェクトに適用されます。
Blaze プランでは、十分な回数の呼び出し、十分な量のコンピューティング時間とインターネット トラフィックを無料で利用できます。ただし、関数のデプロイでは、関数のコンテナに使用されるストレージ容量に対して、少額の課金が発生します。詳しくは、Firebase のよくある質問をご覧ください。
Firebase の割り当てには次の 4 つの上限が設けられています。
リソースに関する上限
関数の処理に使用できるリソースの合計量に影響します。
時間に関する上限
実行できる時間の長さに影響します。
レートに関する上限
これらは、Firebase API を呼び出して関数を管理できる頻度に影響します。
ネットワークの制限
これは、アウトバウンド接続とインスタンスの上限に影響します。
上記の各上限について、以下で詳しく説明します。該当する場合には、Firebase(第 1 世代)と Firebase(第 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。 |
× | イベントごと |
最大関数メモリ | 各関数のインスタンスが使用できるメモリの量 | 8 GiB | 32 GiB | × | 関数ごと |
プロジェクトの最大メモリ | プロジェクトで使用できるメモリ量(バイト)。これは、1 分間に関数インスタンス全体でユーザーがリクエストしたメモリの合計で測定されます。 | 選択したリージョンによって異なります。この上限は、大容量リージョンでは高く、最近開いたリージョンでは低くなる可能性があります。 | なし | ○ | プロジェクトとリージョンごと |
プロジェクトの最大 CPU | プロジェクトで使用できる CPU の量(ミリ vCPU)。これは、1 分間の関数インスタンス全体でユーザーがリクエストした CPU の合計で測定されます。 | 選択したリージョンによって異なります。この上限は、大容量リージョンでは高く、最近開いたリージョンでは低くなる可能性があります。 | なし | ○ | プロジェクトとリージョンごと |
時間に関する上限
割り当て | 説明 | 上限(第 1 世代) | 上限(第 2 世代) | 上限引き上げ可否 | 範囲 |
---|---|---|---|---|---|
関数の最大実行時間 | 強制終了されるまで関数を実行できる時間の上限 | 540 秒 | HTTP 関数の場合は 60 分。 イベント ドリブン関数の場合は 9 分。 |
× | 呼び出しごと |
レートに関する上限
割り当て | 説明 | 上限(第 1 世代) | 上限(第 2 世代) | 上限引き上げ可否 | 範囲 |
---|---|---|---|---|---|
API 呼び出し(読み取り) | Firebase API 経由で関数の説明または一覧を取得する呼び出しの数 | 100 秒あたり 5,000 | 60 秒あたり 1,200 | 第 1 世代のみ | プロジェクトごと(第 1 世代) リージョンごと(第 2 世代) |
API 呼び出し(書き込み) | Firebase API 経由で関数をデプロイまたは削除する呼び出しの数 | 100 秒あたり 80 | 60 秒あたり 60 | × 1 | プロジェクトごと(第 1 世代) リージョンごと(第 2 世代) |
API 呼び出し(CALL) | "call" API 呼び出しの数 | 100 秒あたり 16 | なし | × 2 | プロジェクトごと |
ネットワークの制限
Firebase(第 2 世代)のネットワーキング リクエストと帯域幅の上限については、ネットワーキングの上限をご覧ください。
Firebase(第 1 世代)には、次のネットワーク制限が適用されます。
- インスタンスあたりの 1 秒あたりのアウトバウンド接続: 500(増やせない)
- インスタンスごとの 1 秒あたりのアウトバウンド DNS 解決数: 100(増やせない)
スケーラビリティ
HTTP によって呼び出される Firebase は、受信トラフィックを処理するために迅速にスケールアップしますが、バックグラウンド関数はゆっくりとしたペースでスケールアップします。関数のスケーラビリティは以下のような要因によって決まります。
- 関数の実行に必要な時間(一般に、短時間で完了する関数は、スケールアップして処理できる同時リクエスト数を増やすことができます)。
- コールド スタート時の関数の初期化に必要な時間。
- 関数のエラー率。
リージョンの負荷やデータセンターの容量といった一時的な要因。
バックグラウンド関数の追加割り当て
割り当て | 説明 | 上限 | 上限引き上げ可否 | 範囲 | プロダクト バージョン |
---|---|---|---|---|---|
最大同時呼び出し数 | 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 のエラーコードを返します。
ここに記載されているデフォルトから割り当てを引き上げるには、Firebase 割り当て ページに移動し、変更する割り当てを選択します。次に、割り当てを編集 をクリックし、プロンプトが表示されたらユーザー情報を入力して、選択した各割り当ての新しい割り当て上限を入力します。
Firebase CLI デプロイメントの割り当て上限
Firebase CLI によってデプロイされる関数ごとに、次のタイプのレートと時間上限が影響を受けます。
- API 呼び出し(読み取り) - 関数の数に関係なく、デプロイごとに 1 回の呼び出し
- 上限: 100 秒あたり 5,000 回
- API 呼び出し(書き込み) - 関数あたり 1 回の呼び出し
- 上限: 100 秒あたり 80 回
Firebase CLI リファレンスもご覧ください。