如何正确使用Siege来对GET请求进行基准测试?

时间:2013-10-16 08:19:30

标签: linux web-services http benchmarking

我使用siege对本地HTTP服务进行基准测试:

siege -q -b -t 30S -c 64 "http://localhost:8888/endpoint?params=abc"

基准测试结果为每秒吞吐量提供约500个事务。

但是,当我通过启动curl的8个同时循环来手动对服务进行基准测试时,相同的端点会提供每秒数千个吞吐量。

那么我对围攻做错了什么?

2 个答案:

答案 0 :(得分:8)

有些事情可能会影响您的测试。如果将并发-c设置为8以匹配您使用curl测试的并发数,请检查您得到了什么。您的站点可能无法处理大量并发用户。

默认情况下,围攻也不会保持活着(至少我不认为)。通过不使用此选项,服务器和客户端必须设置和拆除可能成本高昂的套接字。您应该能够设置标题并使其受到尊重(siege -H "Connection: Keep-Alive")。

作为旁注,我发现在进行基准测试时使用多种工具很有用,一旦你进行了围攻工作,我会使用AB(apache bench),httperf并保持手动卷曲测试。

答案 1 :(得分:1)

您可以使用bash进程替换在命令行中将其拉出来创建动态siegrc文件:

siege -R <(echo connection = keep-alive) ...