Hello!
2012/8/10 Wenhua Zhang:
> 您好,想请问您一个关于nginx 压力测试的问题。
> 目前正在做关于nginx性能的基准测试,目标是查看当服务器的所有CPU都跑满的情况下,QPS能到多少。
> 之前使用ab和http_load进行测试,访问nginx自带的index.html,当nginx绑定到一个CPU上时,当CPU压到100%时,QPS在20000左右。
> 但当nginx绑定到两个CPU上时,CPU很难压到100%,而且QPS一直在2000左右。
> 想请问一下您有没有做过类似的测试,或是有没有什么建议?
>
几个建议:
1. 配置 nginx worker 的 CPU affinity
2. 如果使用 ab 的话,尽量启用 ab 的 -k 选项,即启用 HTTP 1.0 keepalive
3. worker 进程数和 CPU 核数基本上一一对应
4. 减少请求涉及的磁盘 I/O 等阻塞 I/O 的系统调用
5. ab 和 http_load 都只能单线程运行,建议启动多个压测工具实例并行测试,或者换用 weighttpd 工具并指定 -t N 选项。
6. 避免使用 --with-debug 选项构造 nginx
7. 检查 nginx 的 error.log 文件,避免错误或者警告信息刷文件。
8. 调整 kernel 的 TCP 相关的参数,以确保最优化。
如果以上建议都无效果,可以考虑使用 strace, dtrace, systemtap 等工具进行性能问题的诊断。
Best regards,
-agentzh
P.S. 同时抄送 openresty 邮件列表:https://groups.google.com/group/openresty