情境:
我有一個 H 主機集群,為 API 提供服務,其中每個主機使用 P(恆定)數量的(python,但不相關)進程(非同步,但在其他方面也不相關)為 API 提供服務。
我可以存取以下資訊(如圖所示):
- 整個叢集上的平均(每秒)查詢接收器數量,R(t)
- 平均延遲(處理請求所需的時間)L=
L(t)
,它也隨時間變化。- 平均值超過幾秒並且跨所有進程/主機
- 主機數量
H(t)
,由於自動縮放而隨時間變化。
可能會發生錯誤,導致整個進程及其中的所有進程內查詢終止,但其餘進程仍繼續運作。
- 錯誤率(例如,每台主機每天的 #crashes 數)是已知的且恆定的,例如
E
。
問題:我想計算由於崩潰而導致的(預期?)失敗查詢的數量。
假設:
- 查詢在主機和進程之間同等平衡。
- 失敗的進程「立即」恢復
一些想法:
- 在任何給定的時刻,數量新的查詢應該是
R(t) / [P*H(t)]
. - 這沒有考慮尚未完成的“正在運行”的查詢。我想我想以某種方式將其與 L(t) 聯繫起來...
- 每秒新查詢數的倒數
[P*H(t)] / R(t)
應該小於L(t)
,否則意味著完成查詢需要比接收新查詢更多的時間,最終使伺服器超載(這不會發生!)