Nginx 活动连接数不多导致负载过高

Nginx 活动连接数不多导致负载过高

我有一台 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)

相关内容