• 1 
瀏覽模式: 普通 | 列表

Linux 上常發生的問題 Out Of Memory, oom-killer

會發生 Out of Memory 就我的理解是主機的記憶體不夠,但真的不夠嗎,是程式一直狂吃記憶體讓記憶體不夠用,又當你沒有設置Swap時,這情況會使主機整台 Crashed,

引用: http://www.admin99.net/read.php/303.htm
OOM是Out of Memory的簡寫,也就是內存不足。出現該問題的原因有很多,如程序內存泄漏等。內存泄漏問題可以通過定時地終止和重啟有問題的程序來發現和解決。在比較新的Linux內核版本(比如2.6)中,有一種名為OOM(Out Of Memory )殺手的算法,它可以在必要時執行Kill而殺掉一些程序。
比較變態的是,oom-killer只考慮lowmemory而不考慮highmemory,即便這個時候物理內存還有很多free或者cached或者buffer,只要swap不足,便會執行oom-killer。

簡單怀疑swap空間會不會有什麼問題?重建一些swap,權且試試看
先移除原來的swap區
swapoff /dev/sda3

創建/swap做為新的swap區,新swap分區的大小是4G,為了以后同樣生效,不要忘了編輯/etc/fstab文件。

dd if=/dev/zero of=/swap bs=1024 count=$[1024 * 1024 * 4]

[閱讀全文]

標籤: 記憶體 crash

Quote: 未知

inux的穩定性勿容置疑,但是有些時候一些Kernel的致命錯誤還是會發生(有些時候甚至是因為硬件的原因或驅動故障),
Kernel Panic會導致系統crash,並且默認的系統會一直hung在那裡,直到你去把它重新啟動!

不過你可以在/etc/sysctl.conf文件中加入
kernel.panic = 20
來告訴系統從Panic錯誤中自動重啟,等待時間為20秒!這個由管理員自己設定!
另外一個討厭的事情是系統hung住之後,鍵盤鼠標沒有響應,這個可以通過設置Magic SysRq來試著解決,也是在/etc/sysctl.conf中,
kernel.sysrq=1
來激活Magic SysRq!
這樣在掛住的時候至少還有一招可以使,
按住 [ALT]+[SysRq]+[COMMAND], 這裡SysRq是Print SCR鍵,
而COMMAND按以下來解釋!
b - 立即重啟
e - 發送SIGTERM給init之外的系統進程
o - 關機
s - sync同步所有的文件系統
u - 試圖重新掛載文件系統

  • 1