free -m total used free shared buffers cached Mem: 7996 2043 5952 0 73 140 -/+ buffers/cache: 1830 6165 Swap: 7812 15 7797 nginx -v
nginx:nginx版本:nginx / 1.0.0
uname -a
Linux tr1 2.6.38-gentoo-r6#4 SMP Tue Sep 27 27:24:13 EEST 2011 x86_64 Intel(R)Xeon(R)CPU E5620 @ 2.40GHz GenuineIntel GNU / Linux
cat /proc/version
Linux版本2.6.38-gentoo-r6(root @ tr1)(gcc版本4.4.5(Gentoo 4.4.5 p1.2,pie-0.4.5))#4 SMP Tue Sep 27 27:24:13 EEST 2011
grep directio /etc/nginx/nginx.conf [nothing] grep open_file /etc/nginx/nginx.conf open_file_cache max=2000 inactive=3600s; [...]
我不知道有什么禁用内核文件caching。 我添加并删除了nginx.conf中的open_file_cache。 然而,nginx似乎直接从磁盘读取所有内容。 我们有更多的nginx机器,使用“相同的”nginxconfiguration(php上游负载平衡,加上静态文件传输),它使用内核打开文件caching,I / O负载less得多。
在这种情况下,同一台机器上还运行着一个Apache。
iostat, iotop -o
通常显示permant磁盘使用情况(不同于其他机器上的nginx负载均衡器),nginx是最高I / O(静态文件传输)
htop
给出了空闲/缓冲区/内存情况的一个漂亮的图片。 并确认什么是免费的。 1GB mem被进程使用。 一些6GB内存未使用。 只有剩余内存的一小部分用于内核caching(htop表示作为内存使用的黄色部分)
我们想知道为什么nginx将磁盘I / O驱动到100%,而剩余几个内存(用于内核打开文件caching)
PS:正如我所说,我们有一些类似的php上游平衡器运行,通过nginx附加的静态文件传递。 但是只有这个因为过度的爱荷华州才能达到高负荷的平均水平,放慢其他一切。