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