linux 运行一段时间后出现echo 0 >/sendmail:26969 blocked for more than 120 seconds

 首先声明:个人环境以及系统参数不同,下面的方法需要根据自己的环境来做调试,建议大家首先看看系统日志,然后再调整参数。

 

 界面出现这个提示,然后本地也登录不进去。ssh 更不用说了,也进不去。

这时候只能先重启下了,再进系统看下日志,日志也没有发现什么异常........

 

首先还是看下自己系统的内核版本。。我的是:2.6.32-220.e16.i686

针对上面的错误提示:

 

解决方法:

①:增加一个参数到 sysctl.conf

vm.dirty_ratio = 10 (详细的解释再以后的文章提到)   

{这是一个知道是不是BUG。默认情况下,Linux使用高达40%的可用内存文件系统缓存。在这个标志已达到文件系统刷新所有悬而未决的数据到磁盘造成以下所有的IOS同步。冲洗掉这个数据到磁盘,这是有时间限制,默认为120秒。在这里的情况,IO子系统是不够快之内120秒刷新数据。这尤其发生在与LOF内存的系统。
问题是解决了在以后的内核并没有从甲骨文的“修复”。我固定刷新缓存从40%到10%,通过设置“vm.dirty_ratio = 10”在/ etc / sysctl.conf中通过降低标记。此设置不会影响数据库的整体性能,因为你希望使用直接IO,完全绕过文件系统缓存。
原理:linux会设置40%的可用内存用来做系统cache,当flush数据时这40%内存中的数据由于和IO同步问题导致超时(120s),所将40%减小到10%,避免超时。
简单讲就是设置在文件/ ETC / sysctl.conf文件中加入“vm.dirty_ratio = 10”。}

 

这个方法比较保守,只能再观察一段时间,看看情况了。不过我这边几个服务器不能再出现此问题了,不然就 kill

 

解决办法②:

yum upgrade kernel* -y

init 6

基本可以解决

 

如有不足之处,望留言做下诠释。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章