2

我正在使用 locust 对应用程序进行负载测试。我在本地 ubuntu 系统上编写并测试了脚本,一切顺利。

我使用 Amazon Linux 映像创建了一个 EC2 实例,在调整了 /etc/security/limits.conf 文件中的文件限制后,我加载了 locust,并且进行了一个小测试(简单的 GET 测试,只是为了检查管道) , 2000 个用户,20 个孵化率)。

然而,当我加载一个更大的测试,8000 个用户 40 个孵化率时,我注意到大约 3,000 或 4,000 个用户的孵化率似乎变慢了,一次只添加 4 - 5 个而不是 40 个新“用户”。所以花了很长时间才达到 8000。这是预期的行为,如果不是,知道问题可能是什么吗?

4

1 回答 1

1

Locust 所说的“用户”实际上是 gevent 产生的任务集。这意味着您在单个 Python 进程中生成了数千个 eventlet,这意味着管理这些 eventlet 需要大量开销。

如果您想生成数千个任务集,我建议您在分布式模式下运行 Locust 。您可以在同一硬件上运行许多从属服务器,或者将您的从属服务器分布在多个实例上。谷歌写了一篇简洁的文章,并为此目的开源了一些 Kubernetes 容器。我们用 Alpine 和一个经过大量修改的 Locust 编写了自己的 Docker 容器,我们的 slave 与 TaskSet 的比例最终为 1:100。从属实例与实例的比例很大程度上取决于您获得的实例大小。

于 2016-10-20T17:57:38.330 回答