2

今日、AppEngine がしばらくダウンしました: http://code.google.com/status/appengine/detail/serving/2012/10/26#ae-trust-detail-helloworld-get-latency

その結果、すべてのリクエストが保留中のままになり、中には 24分間もかかるものもありました。これは私のサーバーログからの抜粋です。これらのリクエストは、一般に 200 ミリ秒未満で処理されます。

https://www.evernote.com/shard/s8/sh/ad3b58bf-9338-4cf7-aa35-a255d96aebbc/4b90815ba1c8cd2080b157a54d714ae0

以前は 1 日あたり約 2 ドルだった私のクォータ (1 日あたり 8 ドル) は、数分で爆発的に増加しました。

実際のリクエストがまだ非常に高速に応答しているにもかかわらず、pending_ms がすべてのクォータを消費するのを防ぐにはどうすればよいですか? 300ミリ秒から自動までの保留中の遅延がありました。最大時間を 10 秒に制限すると、そのタイプのアウトブレイクを防ぐことができますか?

4

1 に答える 1

0

ブラックジャック75、

  • その通りです。保留中のレイテンシーを 10 秒程度に上げると、開始されるインスタンスの数を減らすのに役立ちます。

実行時間の長いリクエストにより、インスタンスが拘束されているようです。これが発生すると、アプリ エンジンは新しいリクエストを処理するために新しいインスタンスをスピンアップしますが、もちろんインスタンスには費用がかかります。

ダッシュボードでインスタンス グラフを見て、リクエストの読み込みが完了した後、インスタンスのバーストがアイドル状態のままであった時間を確認できます。安全な最大値を見積もるのに役立つ典型的な使用法を見ることができます。それらを下げると、正当なトラフィックが新しいインスタンスをスピンアップする必要がある場合、特にバースト トラフィックで速度が低下する可能性があるため、予算に合わせてこれを調整する必要があります。比較のために、最小値と最大値を 1 に設定した非運用アプリスポットでは正常に動作します。

それに加えて、アプリ エンジンのリソース使用量を削減するための一般的な手法が役立ちます。通常のリクエスト時間が短いため、すでにそれを経験しているようです。コードがスレッドを正しく処理し (グローバルがないなど)、インスタンスに複数の要求を処理するのに十分な空きメモリがある場合は、同時要求を有効にすることが役立ちます。

于 2012-11-24T15:07:48.553 に答える