我一直在尝试在 EC2 计算优化实例上使用 Locust.io 对我的 API 服务器进行负载测试。它提供了一个易于配置的选项,用于设置连续请求等待时间和并发用户数。理论上,rps =等待时间 X #_users。然而,在测试时,这个规则在#_users的阈值非常低(在我的实验中,大约 1200 个用户)时失效。变量hash_rate,#_of_slaves,包括在分布式测试设置中对rps几乎没有影响。
实验信息
该测试是在具有 16 个 vCPU、通用 SSD 和 30GB RAM 的 C3.4x AWS EC2 计算节点(AMI 映像)上完成的。在测试期间,CPU 利用率最高达到 60%(取决于孵化率 - 控制生成的并发进程),平均保持在 30% 以下。
蝗虫.io
setup:使用 pyzmq,并将每个 vCPU 内核设置为从属。单个 POST 请求设置,请求正文 ~ 20 字节,响应正文 ~ 25 字节。请求失败率:<1%,平均响应时间为6ms。
变量:连续请求之间的时间设置为 450 毫秒(最小:100 毫秒,最大:1000 毫秒),孵化率以舒适的每秒 30 次为单位,以及通过变化#_users测量的RPS。
RPS 遵循对多达 1000 个用户的预测等式。之后增加#_users 会导致收益递减,上限约为 1200 个用户。#_users这里不是自变量,更改等待时间也会影响 RPS。但是,将实验设置更改为 32 核实例(c3.8x 实例)或 56 核(在分布式设置中)根本不会影响 RPS。
那么真的,控制RPS的方法是什么?我在这里有什么明显的遗漏吗?