语境:
我有一组 H 主机为 API 提供服务,其中每个主机使用 P(恒定)数量(python,但不相关)的进程(异步,但也无关紧要)为 API 提供服务。
我可以访问以下信息(以图表形式):
- 整个集群的平均(每秒)查询接收器数量,R(t)
- 平均延迟(处理请求所需的时间)L=
L(t)
,它也随时间而变化。- 平均值是秒数,涵盖所有进程/主机
- 主机的数量
H(t)
,由于自动缩放,它会随着时间而变化。
可能会发生错误,导致整个进程和其中所有进程内的查询终止,但其余进程仍继续工作。
- 错误率(例如每个主机每天的崩溃次数)是已知且恒定的
E
。
问题:我想计算崩溃导致的失败查询的数量(预期?)。
假设:
- 查询在主机和进程之间保持平衡。
- 失败的进程“立即”恢复
一些想法:
- 在任何给定的秒数,新的查询应该是
R(t) / [P*H(t)]
。 - 这没有考虑尚未完成的“正在运行”查询。我想以某种方式将其与 L(t) 联系起来...
- 每秒新查询数的倒数
[P*H(t)] / R(t)
应该小于L(t)
,否则就意味着完成一个查询所花的时间比接收新查询所花的时间更多,最终导致服务器过载(这不会发生!)