Agent Runtime には、エージェントのパフォーマンスを最適化してスケーリングできるデプロイ パラメータが用意されています。これらのパラメータを構成することで、予測不可能なトラフィック パターンやスパイク トラフィック パターンを効果的に処理できます。
このページでは、エージェント ランタイムのパフォーマンスを最適化してスケーリングする方法に関するベスト プラクティスについて説明します。次のシナリオについて説明します。
これらのシナリオでは、デプロイ パラメータを使用して、一般的なパフォーマンス ボトルネックを解決する方法を示します。特に、実際のアプリケーションで予測不可能なスパイク状のトラフィック パターンが発生する場合に有効です。
コールド スタートの問題
コールド スタートは、リクエストが到着したときに、リクエストを処理できるアイドル状態のインスタンスやコンテナがない場合に発生します。この場合、Agent Runtime は新しいインスタンスやコンテナを起動する必要があります。これにより、リクエストに大きなレイテンシが追加されます。
たとえば、デフォルトの min_instances=1 を使用してエージェントに 300 件の同時リクエストを送信すると、次の結果が表示されます。
コールド スタート(初回実行): 平均レイテンシは約 4.7 秒。
ウォーム スタート(2 回目の実行): 平均レイテンシは約 0.4 秒。
4 秒を超えるオーバーヘッドは、負荷を処理するために新しいインスタンスが起動したことが原因です。
コールド スタートの問題を軽減するには、次の方法をお試しください。
ベースライン トラフィックを処理するのに十分な
min_instances値を設定します。たとえば、min_instances=10をサンプル エージェントに設定すると、コールド スタートの平均レイテンシを約 1.4 秒に短縮できます。トラフィックの急増や高トラフィックが発生するアプリケーションの場合は、1 からスケーリングする必要なく通常の負荷を処理できる値にmin_instancesを設定します。最大値は 10 です。キューを使用して、安定した継続的で予測可能な負荷を Agent Runtime に送信します。たとえば、
min_instances=10とデフォルトのconcurrency(9)を使用して、Agent Development Kit(ADK)ベースのエージェントで 1 分あたり 1,500 件のクエリ(1 秒あたり 25 件の秒間クエリ数)の持続的な負荷テストを 60 秒間実行すると、次の結果が得られます。- 平均レイテンシは一貫して約 1.6 秒と低くなっています。
安定した継続的な負荷により、サービスはウォーム状態を維持し、最適なパフォーマンスを実現します。
非同期ワーカーの利用率が低い
デフォルトでは、container_concurrency は同期コード用に構成されています。この場合、各 Agent Platform インスタンスは一度に 1 つのリクエストのみを処理します。Agent Development Kit(ADK)に基づくエージェントなどの非同期エージェントは、複数の I/O バウンド リクエスト(LLM やツール呼び出しなど)を同時に処理できます。
たとえば、min_instances=10 とデフォルトの container_concurrency=9 を使用して ADK ベースのエージェントに 300 件の同時リクエストを送信すると、次の結果が得られます。
- レイテンシの中央値は約 4 秒ですが、最大レイテンシは 60 秒まで急上昇します。これは、サービスがゆっくりとスケールアウトしている間にリクエストが大量にキューに登録されていることを示しています。
使用率の低い非同期ワーカーを軽減するには、container_concurrency を増やして、各 Agent Platform インスタンスが複数のリクエストを処理できるようにします。各エージェント プロセスが処理できる同時リクエストの数は container_concurrency / 9 です。値 9 は、各コンテナ内で並行して実行されているエージェント プロセスの数を表します。
たとえば、min_instances=10 と container_concurrency=36 を使用して同じ ADK ベースのエージェントに 300 件の同時リクエストを送信すると、次の結果が得られます。
- 最大レイテンシが 60 秒から約 7 秒に短縮されます。これは、既存のインスタンスがトラフィックの急増をより効果的に吸収できることを示しています。
非同期エージェント(ADK ベースのエージェントなど)の場合は、container_concurrency を 9 の倍数(36 など)に設定します。これにより、トラフィックの急増に対する応答性が向上し、スケールアウトによるレイテンシが短縮されます。
container_concurrency の値を大きくしすぎると、メモリ不足(OOM)エラーが発生する可能性があります。