我使用围攻来对本地HTTP服务进行基准测试:
siege -q -b -t 30S -c 64 "http://localhost:8888/endpoint?params=abc"
基准测试结果提供每秒 ~500 个事务吞吐量。
但是,当我通过启动 8 个同时curl
循环来手动对服务进行基准测试时,相同的端点每秒提供数千个吞吐量。
那么我围攻做错了什么?
有一些事情可能会影响你的测试。 检查一下,如果将并发-c
设置为 8 以匹配使用 curl 测试的并发数,则会得到什么。 您的网站可能无法处理大量并发用户。
此外,围攻默认不会保持活力(我认为至少不会)。 如果不使用此选项,服务器和客户端必须设置和拆卸套接字,这可能很昂贵。 您应该能够设置标头并使其得到遵守 ( siege -H "Connection: Keep-Alive"
)。
作为旁注,我发现在基准测试时使用多种工具很有用,一旦你开始围攻工作,我会玩AB(apache bench),httperf并保持你的手动卷曲测试。
您可以使用 bash 进程替换在命令行上将其拉下来,以创建一个动态的 siegrc 文件:
siege -R <(echo connection = keep-alive) ...