为大量静态内容的服务器调优Nginx/CentOS
我有一台64位(centos5.5)、2.83GHz Q9550、6gb ram和一个SATA 500gb驱动器的linux机器 从这台机器上,我只提供缩略图,大多数大小在10kb左右,目前服务器上大约有700万个缩略图。我在一个/25/25/25/25文件夹中设置了它们,这是我推荐的 平均而言,nginx状态报告显示,im为大约300到400个活动连接提供服务 例如:为大量静态内容的服务器调优Nginx/CentOS,nginx,centos,performance,iostat,Nginx,Centos,Performance,Iostat,我有一台64位(centos5.5)、2.83GHz Q9550、6gb ram和一个SATA 500gb驱动器的linux机器 从这台机器上,我只提供缩略图,大多数大小在10kb左右,目前服务器上大约有700万个缩略图。我在一个/25/25/25/25文件夹中设置了它们,这是我推荐的 平均而言,nginx状态报告显示,im为大约300到400个活动连接提供服务 例如: Active connections: 297 server accepts handled requests 19758
Active connections: 297
server accepts handled requests
1975808 1975808 3457352
Reading: 39 Writing: 8 Waiting: 250
现在的问题是,这台机器有一个非常困难的时间,并越来越慢,因为我的网站越来越忙。负载始终在8到9之间
我注意到iostat显示超过100%的util
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
sda 0.20 1.40 99.80 31.14 1221.56 255.49 11.28 114.14 831.81 7.62 99.84
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
sda 0.20 0.60 100.80 24.00 1192.00 203.20 11.18 113.77 775.42 8.02 100.04
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
sda 0.20 314.80 44.80 130.00 598.40 3547.20 23.72 113.76 937.18 5.72 100.02
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
sda 0.00 5.40 56.20 110.80 660.80 937.60 9.57 112.37 518.01 5.99 100.04
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
sda 0.60 12.40 82.80 41.60 1008.00 432.00 11.58 113.66 852.51 8.04 100.04
下面您可以看到我的一些nginx配置设置:
worker_processes 6;
worker_connections 4096;
http {
include mime.types;
default_type application/octet-stream;
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 4;
gzip on;
gzip_http_version 1.1;
gzip_vary on;
gzip_comp_level 2;
gzip_proxied any;
gzip_types text/plain text/html text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
gzip_buffers 16 8k;
}
我的问题是,除了移动到RAID设置,可能还有SSD,还有什么我可以调整/调整以从这台机器中获得更多的东西吗?我有一种感觉,像我这样的服务器应该能处理每秒大约300到400个活跃的NGNIX连接。 < P>连同<代码> NoTime<代码>选项NOS,您可能需要考虑以下内容:
- 在nginx中,设置
access\u注销代码>--注释它没有任何作用;您需要主动禁用它
- 减少辅助进程的数量。nginx不能从每个CPU有一个以上的工作进程中获益
将帮助nginx在“实时”连接上更快地提供文件tcp\u节点延迟开启
- 尝试玩
。我发现最好把它打开,但是YMMVtcp\u nopush
- 如果从开始修改,则将设置为之前的;它将允许nginx发送
标题,而不是重新提供内容304未修改的
- 播放设置
- 减少
,以便nginx可以释放过时的客户端连接send\u超时
设置。有很多教程可以帮助您在线使用,hdparam的调整将使您的磁盘发挥最大的作用hdparam
- 调整你的
插座
- 以较低的计时器频率重新编译内核。默认设置是,这对于提供视频的台式机来说非常好,但对于服务器来说却不是那么好,因为服务器的值为100-250可能更合适
- 禁用cups和蓝牙等服务
不过,最重要的是要监控一切——不要凭直觉,知道服务器在做什么以及瓶颈在哪里。在700万个文件中,有多少经常被访问?如果您的内存为10KB,则最多只能在文件系统缓存中存储500000个文件,为运行的程序和文件系统缓冲区(存储目录信息)留下1GB的RAM
如果您无法增加RAM以容纳频繁访问的文件,那么您需要更快的磁盘设置和更低的延迟。移动到15K驱动器将使您的磁盘I/O容量翻倍,但移动到SSD驱动器是最适合您的情况。这会更好,您应该尽快做的一件事是禁用atime,使用
noatime
选项将文件安装在文件所在的文件系统上-这将大大减少驱动器IO-您可能不需要更新文件的访问时间谢谢回复,noatime似乎是一个很好的选项。我找到了这个教程,我必须将noatime添加到/dev/sda5。不需要重新启动就可以完成,但是mount命令是否不会使机器减速/锁定一段时间,或者这个命令是即时的?我会使用relatime而不是noatime。当访问时间早于修改后的时间时,它将更新访问时间。该站点甚至还讨论了“nodiratime”,这意味着:不要更新此文件系统上的目录inode访问时间,或者使用缓冲来代替完全关闭访问日志:access\u log path combined buffer=16k
“调整你的套接字”已失效。