6

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

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

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

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

那么我在围攻中做错了什么?

4

2 回答 2

8

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

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

附带说明一下,我发现在基准测试时使用多种工具很有用,一旦你开始围攻工作,我会使用 AB(apache bench)、httperf 并保持你的手动 curl 测试。

于 2013-10-23T18:42:30.820 回答
1

您可以在命令行上使用 bash 进程替换来创建动态 siegrc 文件:

siege -R <(echo connection = keep-alive) ...
于 2017-06-02T04:20:55.103 回答