我有一台 64 位 (centos5.5) Linux 机器,2.83GHz Q9550,6GB RAM 和一个 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%。
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 连接。
答案1
- 已禁用 access_log
- 使用 open_file_cache
- 挂载选项:async,noatime
- 增加 vm.dirty_writeback_centisecs(15000)
- 使用到期
- 更新硬件(更多内存,最高可达 24Gb;RAID 或 SSD)
- 使用 gzip_static
我使用 btrfs ssd 软 raid(mkfs.btrfs -m single /dev/sde -d raid0 /dev/sdd /dev/sdc)