Cloud Run サービスでは、リビジョンのスケーリングが自動的に行われます。すべての受信リクエストを処理できるように、必要なインスタンスの数が調整されます。
リクエストを処理するインスタンスが増えると、CPU とメモリの消費量も増加し、コストも高くなります。
より細かく制御するために、Cloud Run では、インスタンスあたりの最大同時リクエスト数を設定し、1 つのインスタンスで同時に処理可能な最大リクエスト数を指定できます。
インスタンスあたりの最大同時リクエスト数
インスタンスあたりの最大同時リクエスト数を構成できます。デフォルトでは、各 Cloud Run インスタンスは同時に最大 80 件のリクエストを受信できますが、これを 1,000 件まで増やすことができます。
デフォルト値を使用する必要がありますが、必要に応じて最大同時実行数を減らすこともできます。たとえば、コードで並行リクエストを処理できない場合は、同時実行を 1
に設定します。
指定された同時実行の値は最大値であり、インスタンスの CPU の使用率がすでに高い場合、Cloud Run は特定のインスタンスにそれほど多くのリクエストを送信しません。
次の図は、インスタンスの設定あたりの最大同時リクエスト数が、同時実行の受信リクエストの処理に必要なインスタンスの数にどのように影響するかを示しています。
最大同時実行数を 1 つのリクエストに制限する場合
実行中のインスタンスに同時に 1 つのリクエストしか送信されないように、同時実行を制限することもできます。次のような場合には、この設定を検討する必要があります。
- 1 つのリクエストで利用可能な CPU またはメモリのほとんどを使用する場合。
- たとえば、コンテナが 2 つのリクエストを共有できないグローバルな状態に依存している場合。コンテナ イメージは複数のリクエストを同時に処理するように設計されていません。
受信リクエストが急増したときに多くのインスタンスを起動する必要があるため、同時実行を 1
に設定するとスケーリングのパフォーマンスが低下する可能性があります。
事例紹介
次の指標は、インスタンスあたりの同時リクエストの最大数が 1 に設定されている Cloud Run サービスに対して、400 のクライアントが 1 秒あたり 3 件のリクエストを行うユースケースを示しています。上の緑の線は時間の経過に伴うリクエスト数を示し、下の青い線はリクエストの処理を開始したインスタンスの数を示しています。
次の指標は、インスタンスあたりの最大同時実行リクエスト数が 80 に設定された Cloud Run サービスに対して、400 のクライアントが 1 秒あたり 3 件のリクエストを行うユースケースを示しています。上の緑の線は時間の経過に伴うリクエスト数を示し、下の青い線はリクエストの処理を開始したインスタンスの数を示しています。同じリクエスト量を処理するために必要なインスタンスが、はるかに少ないことに注意してください。
次のステップ
Cloud Run サービスのインスタンスあたりの最大同時リクエスト数を管理するには、インスタンスあたりの最大同時リクエスト数の設定をご覧ください。
インスタンス設定あたりの最大同時リクエスト数を最適化するには、同時実行を調整するための開発のヒントをご覧ください。