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

基本可以解決

 

如有不足之處,望留言做下詮釋。

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