我有一组用于测试REST API的Locust测试。
在EC2实例上运行时,这些Locust测试执行得非常糟糕。
我在Vagrant VM环境中开发了测试,使用一个VM作为Locust主站,一个VM作为Locust从站。
不费力地调试测试,我的Vagrant开发环境可以运行200个用户并产生50转。
但如果我在EC2上运行完全相同的Locust测试并点击完全相同的API主机,性能就会很糟糕。
使用C3.large实例作为主服务器和C3.2xlarge实例作为从服务器的示例:
如果我指定300个用户,Locust将以指定的生成率生成100左右,那么只会非常缓慢地添加新用户。它通常会减慢到永远不会真正创建300个用户的程度。最多我得到5到8 rps。
我不知道从哪里开始寻找性能上的差异。是蝗虫大师还是奴隶?这是EC2特有的吗?
答案 0 :(得分:0)
JusDockin,您是否检查了实例的文件描述符限制?
ulimit -n
ulimit -Hn
这可能会直接影响您能够生成的HTTP请求数。 我可以在t2.small实例上轻松生成200个用户(没有尝试生成更多,因为亚马逊在加载测试时看起来并不太友好,除非你事先警告它们)。这就是我在用户数据中的含义:
echo "* soft nofile 40000" >> /etc/security/limits.conf
echo "* hard nofile 40000" >> /etc/security/limits.conf