我正在尝试使用多核 SMP 工作器来提高 lighttpd 系统的性能。但结果发现,它不但没有提高性能,反而降低了性能。我似乎不明白为什么会这样。
这文档声称当配置的 SMP 工作器数量大约为核心数量的两倍时,它应该与核心/处理器数量线性扩展。我针对核心:工作器比率和进行了1:1
测试1:2
。
我正在用 对此进行基准测试ab
。我的设置有 4 个虚拟核心。
以下是使用小文档进行的测试结果
ab -n 10000 -c 50 http://localhost/index.html
1. Default(no smp workers)
Requests per second: 3581.99 [#/sec] (mean)
Time per request: 13.959 [ms] (mean)
Time per request: 0.279 [ms] (mean, across all concurrent requests)
Transfer rate: 1518.15 [Kbytes/sec] received
2. 8 SMP workers
Requests per second: 2292.12 [#/sec] (mean)
Time per request: 21.814 [ms] (mean)
Time per request: 0.436 [ms] (mean, across all concurrent requests)
Transfer rate: 971.46 [Kbytes/sec] received
3. 4 SMP workers
Requests per second: 2510.13 [#/sec] (mean)
Time per request: 19.919 [ms] (mean)
Time per request: 0.398 [ms] (mean, across all concurrent requests)
Transfer rate: 1063.86 [Kbytes/sec] received
这些结果对我来说很有意义。这些结果在任何其他机器上也很容易重复。事实上,随着机器的功率越来越大,降解效果也越来越明显。有什么解释吗?
答案1
如果你有 4 个核心,那为什么要用 8 个线程进行测试?我会选择 2、3、4 和 5
您正在与 Web 服务器在同一台机器上运行 ab。您是否隔离了 ab 和 lighttpd 之间的处理器?如果没有,那么它们将争夺 CPU,如果您的负载过高,那么 Web 服务器进程将过早地被踢出 CPU。
尝试从单独的硬件运行 ab。