sid*_*idi 6 stress-testing load-testing amazon-web-services locust
我一直在尝试使用Locust.io在EC2计算优化实例上加载测试我的API服务器.它提供了一个易于配置的选项,用于设置连续请求等待时间和并发用户数.理论上,rps = 等待时间 X #_users.但是,在测试时,此规则会针对#_users的极低阈值进行细分(在我的实验中,大约有1200个用户).变量hatch_rate,#_ of_slaves,包括在分布式测试设置中,对rps几乎没有影响.
实验信息
该测试已在具有16个vCPU的C3.4x AWS EC2计算节点(AMI映像)上完成,具有通用SSD和30GB RAM.在测试期间,CPU利用率最高达到60%(取决于孵化率 - 控制产生的并发进程),平均保持在30%以下.
Locust.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的方法是什么?我有什么明显的遗失吗?
(这里是蝗虫的作者之一)
首先,为什么要控制RPS?Locust的核心思想之一是描述用户行为,并使其产生负载(在您的情况下为请求)。蝗虫旨在回答的问题是:我的应用程序可以支持多少个并发用户?
我知道追求某个RPS编号很诱人,有时我也会通过争取任意RPS编号来“作弊”。
但是要回答您的问题,您确定蝗虫不会陷入僵局吗?像这样,它们完成一定数量的请求,然后由于没有其他要执行的任务而变得闲置?不看测试代码就很难说是怎么回事。
建议将分布式模式用于较大的生产环境,并且我运行的大多数实际负载测试都针对多个但较小的实例。但是,如果不使CPU达到最大,这无关紧要。您确定您没有饱和单个CPU内核吗?不确定正在运行什么操作系统,但是如果是Linux,则负载值是多少?
| 归档时间: |
|
| 查看次数: |
4689 次 |
| 最近记录: |