我正在使用locust加载测试应用程序。我在我的本地ubuntu系统上编写并测试了脚本,一切顺利。
我使用亚马逊Linux映像创建了一个EC2实例,在调整了/etc/security/limits.conf文件中的文件限制后,我加载了蝗虫,并且正常情况下进行了一个小测试(简单的GET测试,只是为了检查管道,2000用户,20孵化率。)
然而,当我加载一个更大的测试,8000个用户40孵化率,我注意到大约3,000或4,000个用户,孵化率似乎减慢,只增加4 - 5而不是40新"用户"一次。所以花了很长时间才达到8000.如果没有预期的行为,那么问题可能是什么?
答案 0 :(得分:1)
蝗虫呼叫"用户"实际上是gevent衍生的TaskSet。这意味着您在一个Python进程中产生了数千个eventlet,这意味着管理这些eventlet的大量开销。
如果您想要生成数千个任务集,我建议您在distributed mode中运行蝗虫。您可以让许多从站在同一硬件上运行,或者在多个实例上分配您的从站。谷歌已经写了一篇简洁的文章,并为此目的开源了一些Kubernetes容器。我们用Alpine和一个经过大量修改的Locust编写了我们自己的Docker容器,我们的从属与TaskSets的比例最终为1:100。从属与实例的比例在很大程度上取决于您获得的实例大小。