3

低/散発的な負荷のアプリケーションがあり、新しいインスタンスの開始によって発生する遅延(約10秒)は、要求の処理に必要な時間をはるかに超えています。通常、500ミリ秒未満で完了します。

そのため、新しいインスタンスの生成(「リクエストの読み込み」)によって引き起こされるレイテンシの急上昇を回避するために、次の2つの設定を行いました。

  • 最小アイドルインスタンス=最大アイドルインスタンス=1に設定して、常に1つのインスタンスが実行されていることを確認します(1つのインスタンスでトラフィックを処理できます)。と
  • 保留中のレイテンシを15秒に設定します。これにより、GAEは、新しいインスタンスを開始するのではなく、1つの常駐インスタンスが解放されるまで最大15秒待機します。

請求が有効になります。ただし、GAEは引き続き新しいインスタンスを開始するため、許容できない遅延が発生します。何故ですか?

ログでは、リクエストが常に500ミリ秒未満で返されることがわかります。リクエストが最大15秒キューに入れられる方法はありません。

これについて私は何ができますか?どんな助けでも大歓迎です。

更新:私の解決策は、5分ごとにリクエストを発行するcronジョブを設定して、常に動的インスタンスを実行することでした。結局のところ(以下の回答を参照)、アイドル状態のインスタンスは、99%の時間で発生する低負荷のシナリオではなく、クレイジーな負荷の急増のために予約されています。

4

2 に答える 2

3

@komaが言うように、app-engineは、アイドル状態のインスタンスの数を一定に保つために動的インスタンスを作成しますが、新しいインスタンスを作成するだけでなく、平均してアイドル状態のインスタンスを使用する代わりにすぐに使用します。アイドル状態のインスタンスが多数ある場合、App Engineは実際には、単一のリクエストが着信した場合でも動的なインスタンスをスピンアップすることを好み、トラフィックが急増した場合にアイドル状態のインスタンスを「保存」します。

これは、すでにアイドリングしているインスタンスを使用してリクエストを処理し、将来のリクエストのために動的なインスタンスを起動することを期待するため、非常に直感的ではありませんが、それは機能しません。

于 2013-01-21T17:14:03.367 に答える
0

min idle instance = 1に設定すると、最初のリクエストで確実に別のインスタンスが生成されます。アイドルインスタンスがなくなったためです(最初のリクエストの処理でビジーです!)。また、新しいインスタンスが開始されたため、一部のリクエストを処理してアイドル状態ではなくなる可能性がありますか?

GoogleAppEngineインスタンスがすぐにシャットダウンし続けるも参照してください

于 2013-01-20T11:53:49.157 に答える