我知道这不是一个直接的编程问题,但是stackoverflow上的人似乎能够回答任何问题。
我有一台运行Centos 5.2 64位的服务器。相当强大的双核2服务器,4GB内存。它主要提供静态文件,flash和图片。当我使用lighttpd时,它可以轻松地提供超过80 MB /秒的速度,但是当我使用nginx进行测试时,它会降低到低于20 MB /秒。
我的设置很简单,使用默认设置文件,我添加了以下
user lighttpd;
worker_processes 8;
worker_rlimit_nofile 206011;
#worker_rlimit_nofile 110240;
error_log /var/log/nginx/error.log;
#error_log /var/log/nginx/error.log notice;
#error_log /var/log/nginx/error.log info;
pid /var/run/nginx.pid;
events {
worker_connections 4096;
}
http {
....
keepalive_timeout 2;
....
}
我认为nginx至少应该是那么强大,所以我一定不能做点什么。
答案 0 :(得分:6)
当你重新加载你的nginx(kiil -HUP)时,你会在你的错误日志中得到这样的东西
2008/10/01 03:57:26 [notice] 4563#0: signal 1 (SIGHUP) received, reconfiguring 2008/10/01 03:57:26 [notice] 4563#0: reconfiguring 2008/10/01 03:57:26 [notice] 4563#0: using the "epoll" event method 2008/10/01 03:57:26 [notice] 4563#0: start worker processes 2008/10/01 03:57:26 [notice] 4563#0: start worker process 3870
你的nginx编译使用什么事件方法?
你在做任何access_log'ing吗?考虑添加buffer = 32k,这将减少日志文件写锁的争用。
考虑减少工作人员的数量,这听起来很直观,但是工作人员需要彼此同步以进行诸如accept()之类的sys调用。尝试减少工人数量,理想情况下我建议1。
您可以尝试在侦听套接字上显式设置读取和写入套接字缓冲区,请参阅http://wiki.codemongers.com/NginxHttpCoreModule#listen
答案 1 :(得分:3)
答案 2 :(得分:1)
建议: - 每个处理器使用1个工作者。 - 检查各种nginx缓冲区设置