系統(tǒng)之家 - 系統(tǒng)光盤下載網(wǎng)站!

當(dāng)前位置:系統(tǒng)之家 > 系統(tǒng)教程 > Linux OOM killer 機(jī)制

Linux如何使用OOM killer 機(jī)制?

時間:2015-08-06 11:44:48 作者:zhijie 來源:系統(tǒng)之家 1. 掃描二維碼隨時看資訊 2. 請使用手機(jī)瀏覽器訪問: https://m.xitongzhijia.net/xtjc/20150806/54848.html 手機(jī)查看 評論

  OOM killer 機(jī)制就是Linux殺死進(jìn)程的以個機(jī)制,如果進(jìn)程損壞系統(tǒng)資源到底某種程度,OOM killer 機(jī)制就會強(qiáng)制殺死進(jìn)程。本文就來介紹一下Linux如何使用OOM killer 機(jī)制。

Linux如何使用OOM killer 機(jī)制?

  簡單來說該機(jī)制會監(jiān)控那些占用內(nèi)存過大,尤其是瞬間很快消耗大量內(nèi)存的進(jìn)程,為了防止內(nèi)存耗盡而內(nèi)核會把該進(jìn)程殺掉。

  這個功能即使在無法釋放內(nèi)存的情況下,也能夠重復(fù)進(jìn)行確保內(nèi)存的處理過程,防止系統(tǒng)停滯,還可以找出過度消耗內(nèi)存的進(jìn)程。

  典型的情況是:某天一臺機(jī)器突然ssh遠(yuǎn)程登錄不了,但能ping通,說明不是網(wǎng)絡(luò)的故障或者機(jī)器down掉,很大可能是sshd進(jìn)程被 OOM killer殺掉了。

  重啟機(jī)器后查看系統(tǒng)日志/var/log/messages會發(fā)現(xiàn) Out of Memory: Kill process 247(sshd)類似的錯誤信息。

  還有另外一種情況也會導(dǎo)致能ping不能ssh,就是網(wǎng)絡(luò)連接過多把系統(tǒng)文件描述符資源耗盡,這里暫時不考慮這種情況。

  而在使用vip的高可用方案中,這種情況也很容易出現(xiàn)腦裂的現(xiàn)象。

  防止重要的系統(tǒng)進(jìn)程觸發(fā)(OOM)機(jī)制而被殺死:可以設(shè)置參數(shù)/proc/PID/oom_adj為-17,可臨時關(guān)閉linux內(nèi)核的OOM機(jī)制。內(nèi)核會通過特定的算法給每個進(jìn)程計算一個分?jǐn)?shù)來決定殺哪個進(jìn)程,每個進(jìn)程的oom分?jǐn)?shù)可以/proc/PID/oom_score中找到。

  我們認(rèn)為重要的進(jìn)程有sshd,或者一些監(jiān)控守護(hù)進(jìn)程,大家可以根據(jù)自己實際情況選擇需要保護(hù)的進(jìn)程。

  保護(hù)某個進(jìn)程不被內(nèi)核殺掉可以這樣操作:

  echo -17 》 /proc/$PID/oom_adj

  可以寫一個簡單的腳本,部署在crontab上防止重要進(jìn)程被oom

  pgrep -f “/usr/sbin/sshd” | while read PID;do echo -17 》 /proc/$PID/oom_adj;done

  其中的“/usr/sbin/sshd”可以替換為你認(rèn)為重要的進(jìn)程,不過在匹配時候注意不要匹配錯了

  1.進(jìn)程的選定方法

  OOM Killer在內(nèi)存耗盡時,會查看所有進(jìn)程,并分別為每個進(jìn)程計算分?jǐn)?shù)。將信號發(fā)送給分?jǐn)?shù)最高的進(jìn)程。

  2.計算分?jǐn)?shù)的方法

標(biāo)簽 進(jìn)程

發(fā)表評論

0

沒有更多評論了

評論就這些咯,讓大家也知道你的獨(dú)特見解

立即評論

以上留言僅代表用戶個人觀點(diǎn),不代表系統(tǒng)之家立場

其他版本軟件

熱門教程

人氣教程排行

Linux系統(tǒng)推薦

掃碼關(guān)注
掃碼關(guān)注

掃碼關(guān)注 官方交流群 軟件收錄