在全新安装 nginx 后,我运行 apache benchmark 时得到了这些结果,我觉得这非常非常奇怪。获取的页面是 nginx 安装的默认静态 index.html 测试页面。在本地运行 ab 每秒的请求数非常高,但远程运行的请求数却低得多。我已暂时禁用防火墙来进行这些测试。
AB -n 100 本地运行:
文档路径:/ 文档长度:3698 字节 并发级别:1 测试时间:0.21347 秒 已完成请求:100 失败请求:0 写入错误:0 总共传输:391000 字节 HTML 传输:369800 字节 每秒请求数:4684.50 [#/秒](平均) 每个请求的时间:0.213 [毫秒](平均) 每个请求的时间:0.213 [毫秒](所有并发请求的平均值) 传输速率:已接收 17847.94 [Kbytes/sec]
AB -n 100 远程运行(从两台不同的机器尝试,一台是 Windows 7,另一台是 Mac OS 10.7):
并发级别:1 测试时间:12.502 秒 已完成请求:100 失败请求:0 写入错误:0 总共传输:391000 字节 HTML 传输:369800 字节 每秒请求数:8.00 [#/秒](平均) 每个请求的时间:125.020 [毫秒](平均) 每个请求的时间:125.020 [毫秒](平均 传输速率:30.54 [千字节/秒] 连接时间(毫秒) 最小平均值[+/-标准差] 中位数 最大值 连接:38 43 1.6 42 56 加工:78 82 2.1 82 97 等待:38 43 1.3 43 49 总计:121 125 2.6 125 139
我们所有的网站都运行在 Apache 上,它也存在同样的问题。我安装了 nginx 来尝试查看这是否是 Apache 配置问题,但显然不是。我无法确定为什么结果之间会有如此大的差异,希望有人能提供一些见解。
这是正常的吗?我的服务器配置有误吗?
答案1
由于您处于远程状态,所以您的测试速度非常慢,并且请求延迟成为了测试的瓶颈。
吞吐量是这里的一个关注点(您的客户端到服务器的链接速度有多快),但我看到的主要问题是您的并发性设置为 1 - 这意味着在发送下一个请求之前,ab
正在等待每个请求完成。
正如它所说,它正在处理Time per request: 125.020 [ms] (mean)
每个请求。由于默认情况下 HTTP 保持活动ab
也是禁用的,我猜想您在ping
服务器时获得的往返时间约为 60ms?
尝试一下ab -n 100 -k -c 10
- 它不会消除所有的延迟,但它应该将每个请求的时间减少一半,并将所有并发的平均值减少 10 倍 - 可能使您的测试完成速度快 20 倍。