コンテクスト:
API を提供する H 台のホストのクラスターがあり、各ホストは P (定数) 個の (Python ですが無関係な) プロセス (非同期ですが、それ以外は無関係) を使用して API を提供します。
以下の情報(グラフとして)にアクセスできます。
- クラスタ全体の平均(1秒あたり)クエリ受信数、R(t)
- 平均待ち時間(リクエストの処理にかかる時間)L =
L(t)
、これも時間とともに変化します。- 平均は秒単位で、すべてのプロセス/ホストにわたっています
H(t)
自動スケーリングにより時間の経過とともに変化するホストの数。
エラーが発生してプロセス全体とプロセス内のすべてのクエリが強制終了される可能性がありますが、残りのプロセスは動作し続けます。
- エラー率 (例: ホストあたりの 1 日あたりのクラッシュ数) は既知で一定です ( とします)
E
。
問題: クラッシュの結果として失敗するクエリの (予想される?) 数を計算したい。
前提:
- クエリはホストとプロセス間で均等に分散されます。
- 失敗したプロセスは「すぐに」回復する
いくつかの考え:
- 毎秒、新しいクエリは である必要があります
R(t) / [P*H(t)]
。 - これは、まだ完了していない「実行中」のクエリを考慮していません。これを何らかの形で L(t) に関連付けたいと思います...
- 1 秒あたりの新規クエリ数の逆数 は
[P*H(t)] / R(t)
より小さくする必要がありますL(t)
。そうでないと、新しいクエリを受信するよりもクエリを完了するのに時間がかかり、最終的にサーバーが過負荷になります (これは発生していません)。