我有一个通过NFS共享文件的LAMP集群,偶尔其中一个会在神秘的刷新过程开始出现时被攻击一段时间。
谁能帮我? 解决这个问题的唯一方法就是重启 – 杀死进程只会产生新进程。
top - 19:43:43 up 104 days, 4:52, 1 user, load average: 27.15, 56.72, 33.31 Tasks: 301 total, 9 running, 292 sleeping, 0 stopped, 0 zombie Cpu(s): 15.6%us, 77.0%sy, 0.0%ni, 4.2%id, 2.0%wa, 0.0%hi, 1.2%si, 0.0%st Mem: 8049708k total, 7060492k used, 989216k free, 157156k buffers Swap: 4194296k total, 483228k used, 3711068k free, 928768k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 840 root 20 0 0 0 0 R 98.0 0.0 6:45.83 flush-0:24 843 root 20 0 0 0 0 R 97.6 0.0 5:50.32 flush-0:25 835 root 20 0 0 0 0 R 96.0 0.0 6:42.44 flush-0:22 836 root 20 0 0 0 0 R 95.0 0.0 6:51.56 flush-0:27 833 root 20 0 0 0 0 R 94.3 0.0 6:27.21 flush-0:23 841 root 20 0 0 0 0 R 93.7 0.0 6:46.97 flush-0:26 2305 apache 20 0 772m 31m 25m S 23.6 0.4 0:07.60 httpd 2298 apache 20 0 772m 31m 25m S 13.6 0.4 0:08.98 httpd 26771 apache 20 0 775m 47m 41m S 10.3 0.6 4:07.97 httpd 2315 apache 20 0 770m 29m 25m S 9.0 0.4 0:07.44 httpd 24370 memcache 20 0 457m 123m 608 S 8.6 1.6 66:20.28 memcached 1191 apache 20 0 770m 30m 26m S 8.3 0.4 0:13.54 httpd 2253 apache 20 0 771m 32m 27m S 8.3 0.4 0:11.75 httpd 3476 varnish 20 0 52.9g 2.0g 20m S 8.0 25.6 0:15.30 varnishd 17234 apache 20 0 775m 50m 45m S 7.0 0.6 9:22.09 httpd 23161 apache 20 0 780m 54m 43m S 7.0 0.7 6:33.40 httpd
谢谢
您的系统正在被磁盘写入请求超载,您的configuration“脏比率”对于您的环境不是最佳的。
您可以为虚拟内存设置两个pipe理参数:
这些是位于/proc/sys/vm/中的dirty_background_ratio和dirty_ratio ,
这些参数代表了内存的百分比。
如果您为dirty_ratio设置较低的值您可以获得更多的磁盘负载,但会降低脏内存pipe理的RAM消耗。
dirty_background_ratio是最小的剩余内存百分比,导致从系统中写入脏数据到磁盘的停止。 这意味着您必须find写入时的脏块尺寸(刷新过程)和系统在写入过程中停止的最小内存之间的最佳折衷scheme。
良好performance的关系可能是:
dirty_ratio 90% dirty_background_ratio 5%
平均比例:
dirty_ratio 40~50% dirty_background_ratio 10~20%
造成这种系统不平衡的原因可能有几种,其中最常见的原因是RAM数量不足以pipe理安装的其他时间,这可能是由于服务器上安装的内存性能下降造成的,通风不正确的喂养。
尽pipe大多数问题都是以软件缺陷的forms出现的,但是这些错误并不为人所知,这是由于与安装的服务相关的硬件configuration较差。 特别是在租用机器的情况下。
为了帮助那些不太熟悉Linux机器的人,上面提到的参数可以这样replace:
永久模式:
(只运行这两个命令一次,否则用你最喜欢的编辑器编辑这个文件)
# echo "vm.dirty_ratio = 40" >> /etc/sysctl.conf # echo "vm.dirty_background_ratio = 10" >> /etc/sysctl.conf
暂时模式:
# echo "40" > /proc/sys/vm/dirty_ratio # echo "10" > /proc/sys/vm/dirty_background_ratio
您可以在此链接中find有关这些设置的更多信息
我发现以下类似的讨论链接:
0005972:顶级和正常运行时间显示错误的负载平均值 – CentOS Bug Tracker
最后发帖说:
The high load average issue is resolved in a newer version of the hpvsa driver (1.2.4-7) that is now released by HP. Contact HP Support to obtain a copy of the new driver.
你的Apacheconfiguration文件中有EnableMMAP Off吗?
如果内存映射位于NFS挂接的文件系统上的文件,并且另一个NFS客户机上的进程删除或截断该文件,则下次尝试访问映射文件内容时,该进程可能会收到总线错误。
对于适用这些因素之一的安装,您应该使用EnableMMAP off来禁用交付文件的内存映射。
我不确定这些是否是症状,但值得一试
如果你有一个ext4文件系统,检查这个bug 缓慢写入ext4分区 – 信息:任务flush-253:7:2137阻塞超过120秒。 这已经在最近的RHSA-2011-1530内核中得到修复,当然你也可以从Centos中获得。