分类:
2010-06-23 13:18:27
发现问题:
刚装好的centOS用于部署一个web application。运行一段时间后发现,系统非常卡,ssh终端连接速度慢,vi打开文件卡住,就连类似于ls这样的命令都要很长的一段时间,整台服务器几乎无法操作。
查找原因:
top查看发现,系统的load average非常高,都到了几百了,但是cpu占用率很低,task中也只有1-2个在running。内存等占用都很小。于是重启,之后load average等参数变正常,机器不卡了。但是过短时间后,机器又开始慢了,观察发现,load average基本上每隔一点时间就加一,也就是说每隔一段时间就有一个任务被运行。
ps查看发现,在进程中
/The mcelog.cron job in /etc/cron.hourly fails. It is apparently hanging in the test `cat /sys/hypervisor/uuid` != "00000000-0000-0000-0000-000000000000" 有好多这样的错误挂在进程中。而且都是D的状态。
总之就是关于cron.hourly中mcelog.cron 无法读取/sys/hypervisor/uuid这样类型的错误。
Google之
找不到很好的有效的解决方案,仅仅是一些不痛不痒的修改,比如说,有人认为这种情况是因为系统在执行某项任务的时候而导致IO负载过高,没办法读取,结局的方法就是关闭诸如为whereis建立索引的背景程序。关掉了etc/updatedb.conf(即打开updatedb.conf在首行加上DAILY_UPDATE=no)之后问题依旧....
崩溃中....
服务器虽然运行正常,load average也不是猛增,但是这样下去老定期重启也不是办法啊~ 于是在网上找了N多方法,依然不行....
柳暗花明
一次在redhat的官网中偶然发现了类似的问题,于是... 问题被轻而易举的解决了!!!
问题分析
原来这是linux一个已知的小bug。在xend服务关闭的时候,读取/sys/hypervisor/uuid 可能会发生错误,临时的解决方案是启动xend服务(我在网上居然有一个人说关闭这个服务,但是他的问题和我的问题很相似,我不知道是不是还有可能是其他原因...),linux的内核开发者们已经提交了这个bug,具体可参考 这两个bug提交记录~
结论
相信google,但是也不要忽略了其他途径,比如说man,比如说国外的linux开发社区。
学好英语是多么的重要。
其他
这哥们也遇到了一样的问题~ 哈哈