最近、Google App Engine でのサービスの負荷が短期間で急激に増加しました。負荷は、約 2 時間で 1 ~ 2 リクエスト/秒から約 10 リクエスト/秒になりました。動的インスタンスの数はかなり急速に拡大しましたが、その過程で「リクエストが長すぎます」というタイムアウト メッセージが多数表示されました。
そのため、次回は、負荷を処理するのに十分なアイドル状態のインスタンスを準備したいと考えています。しかし、問題は、適切な数をどのように判断するかです。今回は、はるかに大きな負荷のバーストが予想されます。実際には何もない状態から、平均 500 要求/秒、おそらく 3000 のピークまで発生します。これは 15 分から 1 時間続くと予想されます。
私の主な目標は、HTTP Post を介して渡された情報が、1 回の書き込みによってデータストアに確実に保存されるようにすることです。
バーストに備えるために私が取った手順は次のとおりです。
- 通常 2 つの urlfetch リクエストを生成する分析やその他のレポートを無効にするために、ファスト パスを削除しました。
- データストアの書き込みは、遅延ライブラリを介してタスクキューに遅延されます
私が知りたいのは: 1. N リクエスト/秒あたりに必要なアイドル インスタンスの数を計算するためのヒント/洞察。2. タスク キューの最大スループットは 500/秒のようです。これはタスクをプッシュできるレートですか? そうでない場合、上限はありますか? これらはおそらくデータストアへの書き込みにすぎないため、そうではないと思いますが、確認したいと思います。
このフラッシュ モブのすべての情報を保存する自信がない場合の代替案は、強力な Amazon EC2 インスタンスをセットアップし、その上で Web サーバーを実行して、クライアントにこのサーバーにバックアップ リクエストを送信させることです。