我有一台Linux机器64位(centos5.5),2.83GHz Q9550,6gb内存和一个SATA 500gb驱动器。
从这台机器我只提供缩略图,大小约为10kb,此时服务器上有大约700万缩略图。我把它们设置在/ 25/25/25/25文件夹设置中,这是我推荐的。
平均而言,nginx状态报告显示我正在提供大约300到400个活动连接。
实施例
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个活动nginx连接。
答案 0 :(得分:13)
除了提到的noatime
选项@nos之外,您可能还需要考虑以下事项:
access_log off;
- 评论它不会做任何事情;你需要主动禁用它。tcp_nodelay on;
将帮助nginx在“实时”连接上更快地提供文件。tcp_nopush
。我发现最好打开它,但是YMMV。if_modified_since
设为before
;它将允许nginx发送304 Not Modified
标头,而不是重新提供内容。open_file_cache
设置send_timeout
,以便nginx可以释放陈旧的客户端连接。至于你的系统的其余部分:
hdparam
设置。很多帮助你上网的教程,hdparam调整将充分利用你的磁盘。socket
performance settings 但是,我认为最好的性能提升是将Varnish放在你的nginx服务器前面并使用它而不是nginx来提供静态文件。它会将内存中的“热”文件保存得比nginx更好,这样就可以很少/不使用磁盘来处理最常用的内容。
然而,最重要的是监控一切 - 不要随意使用,了解您的服务器正在做什么以及您的瓶颈在哪里。
答案 1 :(得分:0)
在700万个文件中,经常访问多少个?如果你看一块10KB,你最多只能在文件系统缓存中存储500,000个文件,为正在运行的程序和文件系统缓冲区(存储目录信息)留下1 GB的RAM。 / p>
如果您无法增加RAM来保存经常访问的文件,那么您需要更快的磁盘设置和更低的延迟。移至15K驱动器将使磁盘I / O容量增加一倍,但移动到SSD驱动器是您的最佳选择。