デフォルトでは、Cloud Run サービスの最大インスタンス数は 100 です。この数は、リージョンで許可されている最大数まで増やすことができます。各リージョンの最大上限は、Cloud Run サービスの CPU とメモリの構成によっても影響を受けます。具体的には、サービスで使用できるインスタンスの最大数は、次の各値の最小値です。
- リージョン割り当てのベースラインを、リクエストされた 1 CPU の倍数で割った値
- リージョン割り当てのベースラインを、リクエストされた 2 GB メモリの倍数で割った値
たとえば、ベースライン割り当てが 4 GB のメモリまたは 2 つの CPU を持つ 1, 000 個のインスタンスである場合、実質的な上限は 500 です。
リージョンのベースラインのリージョンごとの割り当ては、コンソールの [割り当て] ページで確認できます。
ベースラインのリージョン割り当てを増やす方法
Cloud Run サービスがデプロイされているリージョンでインスタンスの最大数を増やす必要がある場合は、割り当ての増加をリクエストできます。
最大インスタンス数の設定に関するベスト プラクティス
次のセクションでは、サービスの最大インスタンス数の制限を構成するためのベスト プラクティスについて説明します。
イベントドリブン サービスに最適な最大インスタンス値
関数などのイベントドリブン サービスでは、受信イベントに基づいてトラフィックの急増が断続的に発生することがあります。これらのサービスの最適な最大インスタンス値を決定するには、サービス呼び出し時間、予想される平均呼び出し、ピーク呼び出し頻度、呼び出しの失敗に対するフォールト トレランスなどの要素を考慮する必要があります。
目安として、インスタンスの最大数を 3 から始めて、呼び出しの失敗をモニタリングし、必要に応じて最大インスタンス数を引き上げます。
すべてのインスタンスがビジー状態の場合のリクエストの処理
通常の状況では、受信トラフィックの負荷を処理するために新しいインスタンスを作成して、サービスがスケールアップします。ただし、最大インスタンス制限を設定した場合、受信トラフィックの負荷を処理できるインスタンス数を確保できないことがあります。
その場合、Cloud Run は最大 30 秒間、新しい受信リクエストの処理を試みます。
- インスタンスがこの期間内にリクエストの処理を完了した場合、新しい受信リクエストの処理を開始します。
- 使用可能なインスタンスがなくなると、リクエストは失敗します。
Cloud Run は、容量が使用可能になるまで、イベント ドリブン サービスに送信されるイベントを自動的に保存します。
Cloud Run のスケーリング能力を超える最大インスタンス数の上限
最大インスタンス制限を指定するということは、上限を指定するということです。上限を大きく設定しても、指定した数だけインスタンスがスケールアップされるわけではありません。これは、任意の時点で共存するインスタンス数が上限を超えてはいけないことのみを意味しています。
また、最大インスタンス上限を設定すると、Cloud Run がトラフィックの需要に対応するためのスケーリング戦略に影響する場合があります。一般に、Cloud Run はスケールアップよりも指定された上限を優先しますが、この上限を上回る可能性はあります。
トラフィックの急増に対処する
トラフィックが急増した場合など、Cloud Run が、指定された最大インスタンス数の上限よりも多いインスタンスを一時的に作成する場合があります。サービスがこの一時的な動作を許容できない場合は、安全性を確保するため、サービスが許容できるインスタンス値よりも少ない最大インスタンス値を設定することをおすすめします。
デプロイ
新しいリビジョンをデプロイすると、Cloud Run は前のリビジョンから新しいリビジョンにトラフィックを移行します。最大インスタンス数の上限は、リビジョンごとに個別に設定されるため、デプロイ後、一時的に指定された上限を超えることがあります。
たとえば、サービスの最大インスタンス数の上限が 5 に設定されているとします。通常、このサービスはリクエストを処理する際に最大で 5 つのインスタンスを使用します。新しいリビジョンをデプロイすると、新しいリビジョンのインスタンスの上限は 5 になります。
新しいリビジョンをデプロイしても、以前のリビジョンですでに処理中のリクエストは中断されません。これらのリクエストは引き続き処理されます。新しい受信リクエストは、新たにデプロイされたサービスのリビジョンで処理されます。
したがって、前の例のサービスでは、新しいリビジョンをデプロイした後に、インスタンス数の合計が最大 10 個(リビジョンごとに 5 つ)になる場合があります。以前のリビジョンのインスタンスが終了するまでの時間は、アクティブなリクエストの処理が完了するまでの時間によって異なります。インスタンス数に適切な上限を選択する際に、この点を考慮する必要があります。