8

我知道这不是直接的编程问题,但 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 应该至少同样强大,所以我一定没有做任何事情。

4

3 回答 3

7

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

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

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

你在做任何 access_log'ing 吗?考虑添加 buffer=32k,这将减少对日志文件写锁的争用。

考虑减少工作人员的数量,这听起来违反直觉,但工作人员需要相互同步才能进行系统调用,如 accept()。尝试减少工人的数量,理想情况下我建议 1。

您可以尝试在侦听套接字上显式设置读写套接字缓冲区,请参阅http://wiki.codemongers.com/NginxHttpCoreModule#listen

于 2008-10-01T08:01:10.250 回答
3

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

memcached 模块上的 nginx 文档在这里

于 2008-09-24T20:44:48.517 回答
1

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

于 2008-10-12T20:35:24.183 回答