このドキュメントでは、App Engine の割り当てと上限について説明します。
割り当ては、Cloud プロジェクトで使用できる特定の共有 Google Cloud リソース(ハードウェア、ソフトウェア、ネットワーク コンポーネントなど)の量を制限します。
割り当てはシステムの一部で、次の機能があります。
- Google Cloud のプロダクトとサービスの使用量や消費量をモニタリングする。
- 公平性の確保や使用量急増の抑制などのため、これらのリソースの消費量を制限する。
- 規定の制限を自動的に適用する構成を維持する。
- 割り当ての変更を実施またはリクエストする手段を提供する。
割り当てを超過すると、ほとんどの場合、システムは関連する Google リソースへのアクセスをすぐにブロックするため、ユーザーが試行しているタスクは失敗します。ほとんどの場合、割り当ては各 Cloud プロジェクトに適用され、その Cloud プロジェクトを使用するすべてのアプリケーションと IP アドレスで共有されます。
App Engine リソースには上限もあります。これらの上限は、割り当てシステムとは無関係です。上限は、特に明記されていない限り、変更できません。
App Engine アプリケーションは、一定の割り当てに達するまでリソースを利用できます。アプリケーションの日々のリソース消費状況は、Google Cloud コンソールの [割り当ての詳細] ページで確認できます。
割り当てのタイプ
次の割り当てのタイプが App Engine アプリケーションに適用されます。
- 無料の割り当て: アプリケーションには、無料で利用できるリソースの量が設定されます。アプリケーションが無料の割り当てを超えると、そのリソースの追加使用に対して料金が請求されます。
無料の割り当てが提供されるのは、App Engine スタンダード環境の場合のみです。
- 1 日の割り当ては App Engine システムの整合性を維持し、1 つのアプリがリソースを過剰に消費して他のアプリの実行に支障をきたすことがないように設定されます。これらの上限を超えると、エラーが発生します。1 日の割り当ては、太平洋時間の午前 0 時にリセットされます。
- 分単位の割り当ては、アプリケーションが短時間ですべてのリソースを消費しないように制限します。また、別のアプリケーションが特定のリソースを占有しないように制限します。アプリケーションが短時間でリソースを消費し、分単位の割り当てを超えると、Google Cloud コンソールの [割り当て] ページで、該当する割り当ての横に「制限中」と表示されます。1 分間の最大値に達しているリソースに対するリクエストは拒否されます。
プロジェクト オーナーと課金管理者は、プロジェクトの課金を有効にできます。
アプリケーションの課金を有効にすると、アプリケーションの安全上の上限が上がります。詳細については、リソースをご覧ください。
割り当てを超過した場合に起こることと、割り当て超過状態の対処法については、リソースが不足した場合をご覧ください。
ヒント: 1 分あたりの最大割り当ては、トラフィック量が多いレベルに合わせて調整され、ニュースでサイトが取り上げられてトラフィックが急増しても対処できるレベルになっています。特定の割り当てがこの条件を満たしていないと思われる場合には、Issue Tracker でフィードバックをお送りください。フィードバックを送信することは、割り当て増加をリクエストすることにはなりませんが、一般的なユースケースにおいて低すぎる可能性がある割り当てを Google が把握するために役立ちます。
非常に高いトラフィック レベルが予想される場合や、なんらかの理由でアプリが特に高い割り当てを必要とする(重要なプロダクトのリリース、大規模な負荷テストなど)場合、サポート パッケージにサインアップすることをおすすめします。
リソースの補充
App Engine は、システムのリソース割り当てに対するアプリケーションの利用状況を記録しています。 App Engine は、毎日午前 0 時にすべてのリソース測定をリセットします。ただし、保存データの場合には、その時点でのデータストア ストレージの使用量を表します。
毎日の割り当ては、太平洋標準時の深夜 0 時に補充されます。分単位の割り当ては 60 秒ごとにリセットされます。
リソースがすべて消費された場合
アプリケーションが割り当てられたリソースをすべて消費すると、割り当てが補充されるまで、そのリソースは使用できなくなります。つまり、割り当てが補充されるまでアプリケーションが動作しない場合があります。
リクエストの開始に必要なリソースの場合、リソースがすべて消費されると、App Engine では、デフォルトで、リクエスト ハンドラを呼び出さずに、HTTP 403
または 503
エラーコードを返します。この動作は、インスタンス時間リソースに適用されます。
ヒント: アプリケーションが割り当てを超えたときに、カスタム エラーページを表示するようにアプリケーションを構成することもできます。詳しくは、Python(2.7、3)、Java、Go、PHP(5.5、7)、Node.js をご覧ください。
他のリソースの場合、リソースがすべて消費されたときにアプリケーションがリソースを利用しようとすると、例外が発生します。この例外はアプリケーションで処理できます。たとえば、わかりやすいエラー メッセージをユーザーに表示できます。Python API の場合、この例外は apiproxy_errors.OverQuotaError
です。Java の API の場合、この例外は com.google.apphosting.api.ApiProxy.OverQuotaException
です。Go API の場合は、appengine.IsOverQuota
関数で、エラーが割り当て不足による API 呼び出しの失敗を示しているかどうかを報告します。
次の例は OverQuotaError
を取得する方法を表しています。メール関連の割り当てを超過した場合に、SendMessage()
メソッドでこの例外が発生します。
try: mail.SendMessage(to='test@example.com', from='admin@example.com', subject='Test Email', body='Testing') except apiproxy_errors.OverQuotaError, message: # Log the error. logging.error(message) # Display an informative message to the user. self.response.out.write('The email could not be sent. ' 'Please try again later.')
アプリがデフォルトの上限を超えている場合、メール割り当てを引き上げるには、SendGrid でメールを送信します。他の割り当てを引き上げる場合、シルバー、ゴールド、プラチナのいずれかのサポート パッケージの契約があれば、サポート担当者に連絡して、スループット上限の変更をリクエストできます。
App Engine フレキシブル環境の割り当て
アプリケーションを App Engine フレキシブル環境にデプロイする場合、一部の Google Cloud リソースが消費されます。これらのリソースを変更することはできず、割り当てに対してカウントされます。
たとえば、サービスのインスタンス リソースの使用量は、Compute Engine のリソース割り当てページで確認できます。リソース
アプリケーションでは、割り当てに従って次のリソースを使用できます。請求対象の上限が適用されるリソースには、「(請求対象)」と明記されています。リソースの量は 24 時間の割り当て量を表します。
追加リソースの料金については、料金ページをご覧ください。
デフォルトの Cloud Storage バケット
以下に示すように、デフォルトの Cloud Storage バケットには、毎日の使用量に対する無料の割り当て枠があります。デフォルトで無料のこのバケットは、Google Cloud コンソールでプロジェクトの App Engine の設定ページから作成できます。
以下の割り当ては、デフォルトのバケットを使用する場合に適用されます。 割り当てについては、Cloud Storage マルチリージョン バケットの料金をご覧ください。
リソース | デフォルトの上限 |
---|---|
デフォルトの Cloud Storage バケットに保存されるデータ | 最初の 5 GB は無料。上限なし。 |
デフォルトの Cloud Storage バケットでのクラス A オペレーション | 最初の 20,000 回/日は無料。上限なし。 |
デフォルトの Cloud Storage バケットでのクラス B オペレーション | 最初の 50,000 回/日は無料。上限なし。 |
デフォルトの Cloud Storage バケットからのネットワーク送信(下り、外向き) | 最初の 1 GB は無料。上限なし。 |
Blobstore
以下の割り当ては、Blobstore を使用する場合に適用されます。
- Blobstore の保存データ
- Blobstore に保存されているデータの合計量。有料と無料の両方に適用されます。
リソース | デフォルトの上限 |
---|---|
Blobstore の保存データ | 最初の 5 GB は無料。上限なし。 |
コードと静的データの保存
- 静的データの上限
- Go 以外の言語では、1 つの静的データファイルのサイズを 32 MB 以下にする必要があります。 Go での上限は 64 MB です。
- ストレージの合計
- ストレージの割り当ては、アプリのすべてのバージョンのコードと静的データを合計した量に対して適用されます。保存しているコードと静的データの合計サイズはメイン ダッシュボードの表に表示されます。保存しているコードのサイズは [バージョン] 画面、静的データのサイズは [バックエンド] 画面にそれぞれ表示されます。1 GB を超えるコードと静的データを保存すると、毎月 1 GB あたり $ 0.026 が課金されます。
Datastore モードの Firestore(Datastore)
保存データ(請求対象)の割り当ては、データストアおよび Blobstore 内のアプリケーションのために保存されたすべてのデータが対象になります。Google Cloud コンソールで [割り当ての詳細] 画面の [データストア] セクションに表示される他の割り当ては、Datastore サービスの割り当てを表します。
- 保存データ(課金対象)
-
データストア エンティティに保存されているデータと、それに対応するインデックスと Blobstore の合計量。
データストアに保存されているデータの場合、大きなオーバーヘッドが発生する可能性があります。オーバーヘッドの量は、関連するプロパティの数や種類によって異なります。オーバーヘッドには組み込みインデックスとカスタム インデックスで使用される容量も含まれます。データストアに保存される個々のエンティティには、以下のメタデータが必要となります。
- エンティティ キー。種類、ID またはキー名、エンティティの祖先のキーを含みます。
- 各プロパティの名前と値。データストアにはスキーマが存在しないため、どのエンティティに対しても各プロパティの名前と値を一緒に保存しておく必要があります。
- このエンティティを参照するすべての組み込みインデックス行とカスタム インデックス行。個々の行には、エンティティの種類、任意の数のプロパティ値(インデックスの定義によって異なる)、エンティティ キーが含まれます。
- インデックス数
- アプリケーションに存在するデータストア インデックスの数。アプリケーションの構成に表示されていなくても、削除されていない以前のインデックスも含まれます。制限について詳しくは、Datastore の制限のページをご覧ください。
- 書き込みオペレーション
- データストア書き込みオペレーションの合計数。
- 読み取りオペレーション
- データストア読み取りオペレーションの合計数。
- 小規模なオペレーション
- データストアで実行された小規模オペレーションの合計数。小規模オペレーションには、データストア ID を割り当てるための呼び出しや、キーのみのクエリなどが含まれます。
リソース | デフォルトの上限 |
---|---|
保存データ(請求対象) | 1 GiB 無料。上限なし。 無料の割り当てを超えると、利用料金が適用されます。 |
インデックス数 | 200 |
エンティティの読み込み数 | 50,000 件まで無料、上限なし。 無料の割り当てを超えると、利用料金が適用されます。 |
エンティティの書き込み数 | 20,000 件まで無料、上限なし。 無料の割り当てを超えると、利用料金が適用されます。 |
エンティティの削除数 | 20,000 件まで無料、上限なし。 無料の割り当てを超えると、利用料金が適用されます。 |
小規模なオペレーション | 無制限 |
注: データストア管理者とデータストア閲覧者によるデータストア オペレーションはアプリケーションの割り当てに対してカウントされます。
デプロイ
App Engine アプリケーションごとに 1 日あたり 10,000 回までデプロイできます。
デプロイ時に Cloud Build によってコンテナ イメージがビルドされ、Container Registry に保存されます。イメージに使用される保存容量の合計が無料枠を超えると料金が発生します。
ファイル
次の割り当てが、アプリのデプロイ ファイルの合計数に適用されます。
ファイル | 最大 |
---|---|
アプリあたりのデフォルト ファイル数 | 10,000 ファイル 上限の引き上げをリクエストされる場合は、サポートにお問い合わせください。 |
インスタンス時間
インスタンスの使用時間には、インスタンスの稼働時間に応じて所定の料金が請求されます。
「F」と「B」のインスタンス クラスには、個別の無料の割り当てがあります(「フロントエンド」と「バックエンド」インスタンス クラスとも呼ばれます)。App Engine サービスを使用する場合、適用される割り当てはサービスのインスタンス クラスによって決まります。
リソース | 無料の割り当て |
---|---|
「F」インスタンス | 1 日あたり 28 時間無料 |
「B」インスタンス | 1 日あたり 9 時間無料 |
インスタンス時間の累積はインスタンスが起動した時点で開始されます。終了時点は、インスタンスに指定したスケーリングのタイプに応じて以下のように異なります。
- 基本または自動スケーリング: 課金はインスタンスが最後のリクエストを処理してから 15 分後に終了します。
- 手動スケーリング: 課金はインスタンスがシャットダウンしてから 15 分後に終了します。
App Engine によって作成されるアイドル状態のインスタンスの数が、Google Cloud コンソールの [パフォーマンス設定] タブで指定した最大数を超えると、超過分のインスタンスはインスタンス時間に累積されません。
ログ
ログデータが取得されると、Logs API が課金されます。
ログの取得上限は、アプリケーションのリクエストログとアプリケーション ログのデータが対象となります。App Engine アプリケーションのロギングは、Google Cloud のオペレーション スイートに含まれます。料金と上限について詳しくは、Google Cloud のオペレーション スイートの料金をご覧ください。
メール
App Engine ではメッセージ単位でメールの料金を請求します。1 人に送信した 1 件のメールを 1 通のメッセージとします。たとえば、同じメールを 10 人に送信した場合、10 通のメッセージとして計算します。
- 送信済みメッセージ
- アプリケーションから送信したメッセージの総数。アプリケーションの最初の課金が処理されるまで、送信済みメッセージ数の上限は無料レベルのままになります。
- 送信済み管理者メッセージ
- アプリケーションから管理者に送信したメッセージの総数。各管理者メールのサイズの上限は 16 KB です。これにはヘッダー、添付ファイル、本文が含まれます。
- メッセージの本文として送信したデータ
- メールの本文として送信したデータの量。
- 送信済み添付ファイル
- メールと一緒に送信された添付ファイルの総数。
- 添付ファイルとして送信したデータ
- メールの添付ファイルとして送信したデータの量。
リソース | 1 日の上限(デフォルト) | 最大レート |
---|---|---|
メール受信者 | 100 通 | 8 通/分 |
管理者メール | 5,000 通 | 24 通/分 |
メッセージの本文として送信したデータ | 60 MB | 340 KB/分 |
送信済み添付ファイル | 2,000 件 | 8 件/分 |
添付ファイルとして送信したデータ | 100 MB | 10 MB/分 |
Mail API に追加できる承認送信者の上限は 50 件です。
毎日のメール割り当てを超えるメールの送信
アプリによるメール送信のための割り当てを引き上げる必要がある場合、サードパーティのメール プロバイダ(SendGrid、Mailjet、Mailgun など)を使用できます。
リクエスト
- 送信帯域幅(請求対象)
-
リクエストに応答してアプリケーションが送信したデータの量。
次の操作が含まれます。
- アプリケーション サーバー、静的ファイル サーバー、Blobstore がリクエストに応答して送信したデータ。保護されたリクエストも保護されていないリクエストも含まれます。
- メールで送信したデータ。
- URL 取得サービスが送信した HTTP 送信リクエストに含まれるデータ。
- 受信帯域幅
-
アプリケーションがリクエストから受信したデータの量。HTTP 受信リクエストのサイズは 32 MB 以下です。
次の操作が含まれます。
- 保護されたリクエストまたは保護されていないリクエストからアプリケーションが受信したデータ
- Blobstore へのアップロード
- URL 取得サービスが HTTP リクエストに応答して受信したデータ
- 保護された送信帯域幅
- 保護された接続経由でアプリケーションがリクエストに応答して送信したデータの量。
- 保護された受信帯域幅
- 保護された接続経由でアプリケーションがリクエストから受信したデータの量。
検索
以下の表に、Search API の無料割り当てを示します。検索呼び出しの各タイプの詳細については、Java、Python、Go のドキュメントをご覧ください。
料金表に従って Search API リソースの料金が請求されます。
リソースまたは API 呼び出し | 無料の割り当て |
---|---|
ストレージの合計(ドキュメントとインデックス) | 0.25 GB |
クエリ | 1,000 クエリ/日 |
インデックスへのドキュメントの追加 | 0.01 GB/日 |
アプリケーション コンソールでは、割り当てに API リクエストの実際の数が表示されます。 1 回の呼び出しで複数のドキュメントのインデックスを作成した場合、ドキュメントの数だけ呼び出し回数が増えます。
サービスの信頼性を維持するため、Search API には次の制限が設定されています。
- アプリまたはインデックス内での実行できるクエリの回数は 1 分あたり合計で 100 分まで。
- 1 分間に追加または削除できるドキュメントは 15,000 件まで。
注: これらの上限は分単位で適用されますが、Google Cloud コンソールには各上限についての日単位の合計数が表示されます。シルバー、ゴールド、プラチナ サポートをご契約の方は、サポート担当者に連絡して、スループットの上限を引き上げることができます。
タスクキュー
タスクが実行されると、関連するリクエストがアプリケーションのリクエスト割り当てにカウントされます。
これらの上限はすべてのタスクキューに適用されます。
リソース | 1 日の上限 | 最大レート |
---|---|---|
タスクキュー管理の呼び出し回数(Google Cloud コンソールを使用) | 10,000 | なし |
リソース | デフォルトの上限 |
---|---|
キューの最大数(push と pull の両方のキューを含むが、デフォルトのキューは対象外) | 100 件 |
注: タスクを実行または削除すると、タスクが使用したストレージが解放されます。ストレージの割り当ては一定の間隔で更新されるため、回収された容量がすぐに反映されない場合があります。詳しくは、Python、Java、Go、PHP のドキュメントをご覧ください。
以下の上限は、タスクキューのタイプに応じて適用されます。
push キューの上限 | |
---|---|
タスクの最大サイズ | 100 KB |
キューの実行レート | 1 件のキューで 1 秒あたり 500 回のタスク呼び出し |
タスクの最大延期期間 / ETA | 現在の日時から 30 日 |
バッチに追加可能なタスクの最大数 | 100 件 |
トランザクションに追加可能なタスクの最大数 | 5 件 |
タスクキューのデフォルトの最大数 | 100 件。上限の引き上げをリクエストする場合は、サポートにお問い合わせください。 |
cron
以下の割り当ては、cron ジョブに適用されます。
- cron ジョブ
- cron ジョブの数。
リソース | デフォルトの上限 |
---|---|
cron ジョブ | 250 件 |
URL 取得
- UrlFetch API の呼び出し回数
- アプリケーションが URL 取得サービスにアクセスして HTTP または HTTPS リクエストを実行した回数。
- UrlFetch の送信データ
- リクエストで URL 取得サービスに送信されたデータの量。
- UrlFetch の受信データ
- レスポンスで URL 取得サービスから受信したデータの量。受信帯域幅の上限が適用されます。
リソース | 1 日の上限 | 最大レート |
---|---|---|
UrlFetch API の呼び出し回数 | 860,000,000 回 | 660,000 回/分 |
UrlFetch の送信データ | 4.5 TB | 3,600 MB/分 |
UrlFetch の受信データ | 4.5 TB | 3,600 MB/分 |