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