Vel*_*elo 5 performance nginx ubuntu-12.04
我刚刚设置了一个 ubuntu 12.04.2 LTS 服务器,它提供大量相当大的静态文件。配置与另一台运行良好的机器上的配置相同。另一台机器使用 Ubuntu 11.10 和 nginx 1.0.5 。有问题的机器使用nginx 1.1.19,它几乎不能推动大约20MB / s(但在1Gbit专线上),iotop显示nginx的高磁盘IO。这是来自iotop:
TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
4569 be/4 www-data 754.61 K/s 0.00 B/s 0.00 % 99.99 % nginx: worker process
4571 be/4 www-data 1257.69 K/s 0.00 B/s 0.00 % 99.99 % nginx: worker process
4574 be/4 www-data 2.46 M/s 0.00 B/s 0.00 % 99.99 % nginx: worker process
3951 be/4 www-data 1760.77 K/s 0.00 B/s 0.00 % 99.99 % nginx: worker process is shutting down
3950 be/4 www-data 503.08 K/s 0.00 B/s 0.00 % 99.99 % nginx: worker process is shutting down
4573 be/4 www-data 2012.31 K/s 0.00 B/s 0.00 % 99.99 % nginx: worker process
3952 be/4 www-data 1006.15 K/s 0.00 B/s 0.00 % 99.99 % nginx: worker process is shutting down
3954 be/4 www-data 1760.77 K/s 0.00 B/s 0.00 % 99.99 % nginx: worker process is shutting down
4572 be/4 www-data 4.05 M/s 0.00 B/s 0.00 % 99.99 % nginx: worker process
3956 be/4 www-data 2.70 M/s 0.00 B/s 0.00 % 99.99 % nginx: worker process is shutting down
3953 be/4 www-data 251.54 K/s 0.00 B/s 0.00 % 99.99 % nginx: worker process is shutting down
4567 be/4 www-data 2.21 M/s 0.00 B/s 0.00 % 98.30 % nginx: worker process
4570 be/4 www-data 754.61 K/s 0.00 B/s 0.00 % 97.91 % nginx: worker process
3949 be/4 www-data 1006.15 K/s 0.00 B/s 0.00 % 88.21 % nginx: worker process is shutting down
3955 be/4 www-data 1509.23 K/s 0.00 B/s 0.00 % 84.60 % nginx: worker process is shutting down
Run Code Online (Sandbox Code Playgroud)
所以出于某种原因,那些试图关闭的进程会导致 IO 和服务器进入几乎无响应的状态,负载增长高达 5-6(这是一台双核机器)。同时 CPU 利用率约为 0.5%
重新启动 nginx 后一切正常,然后再次发生这种情况。
这是来自nginx错误日志的最新消息:
013/03/18 13:09:28 [alert] 3676#0: open socket #297 left in connection 145
Run Code Online (Sandbox Code Playgroud)
然后发生这种情况:
2013/03/18 13:10:11 [alert] 3749#0: 100 worker_connections are not enough
Run Code Online (Sandbox Code Playgroud)
这是 nginx.conf:
user www-data;
worker_processes 8;
worker_rlimit_nofile 20480;
pid /var/run/nginx.pid;
events {
worker_connections 100;
# multi_accept on;
}
http {
##
# Basic Settings
##
sendfile off;
output_buffers 1 512k;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 5;
types_hash_max_size 2048;
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激!
编辑:
Sendfile
开和关没有区别。
worker_rlimit_nofile == worker_connections
没什么区别。
worker_processes
也没什么变化。
smartctl
显示磁盘没有问题,但是我在这台机器上尝试了第二个磁盘,但仍然没有区别。
我会打开sendfile
:
sendfile on
Run Code Online (Sandbox Code Playgroud)
我认为它避免了不必要的复制并节省了系统调用。另外,只有当 sendfile 打开时,tcp_nopush 才会打开。看这里。
归档时间: |
|
查看次数: |
4313 次 |
最近记录: |