nginx设置问题

我知道这不是直接的编程问题,但在stackoverflow上的人似乎能够回答任何问题。

我有一台运行Centos 5.2 64位的服务器。 相当强大的双核2服务器与4GB内存。 它主要提供静态文件,闪光灯和图片。 当我使用lighttpd时,它可以很容易地达到80 MB / sec,但是当我使用nginx进行testing时,它会降到20 MB / sec以下。

我的设置非常简单,使用默认的安装文件,并添加了以下内容

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至less应该是一样强大的,所以我一定不会做任何事情。

当你重新加载你的nginx(kiil -HUP)时,你会在你的错误日志中得到类似的东西

 2008/10/01 03:57:26 [注意] 4563#0:信号1(SIGHUP)收到,重新配置
 2008/10/01 03:57:26 [notice] 4563#0:重新配置
 2008/10/01 03:57:26 [notice] 4563#0:使用“epoll”事件方法
 2008/10/01 03:57:26 [提示] 4563#0:启动工作进程
 2008/10/01 03:57:26 [通知] 4563#0:启动工作进程3870

什么事件的方法是你的nginx编译使用?

你在做什么access_log? 考虑添加buffer = 32k,这将减少日志文件的写入锁的争用。

考虑减少工人的数量,这听起来反直觉,但工人需要为accept()等sys调用彼此同步。 尝试减少工人的数量,理想情况下,我会建议1。

您可以尝试明确设置监听套接字上的读写套接字缓冲区,请参阅http://wiki.codemongers.com/NginxHttpCoremodulee#listen

也许lighttpd使用某种缓存? 这里有一篇很棒的文章,介绍了如何使用nginx设置memcached,使性能提升了400%。

memcached模块上的nginx文件就在这里 。

建议: – 每个处理器使用1个工人。 – 检查各种nginx缓冲区设置