nginx设置问题

时间:2008-09-24 08:05:30

标签: nginx lighttpd

我知道这不是一个直接的编程问题,但是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至少应该是那么强大,所以我一定不能做点什么。

3 个答案:

答案 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)

也许lighttpd正在使用某种缓存?有一篇很棒的文章here描述了如何使用nginx设置memcached,以获得400%的性能提升。

memcached模块上的nginx doc是here

答案 2 :(得分:1)

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