<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

      Linux怎么使用OOM killer 機制?

      [摘要]OOM killer 機制就是Linux殺死進程的以個機制,如果進程損壞系統資源到底某種程度,OOM killer 機制就會強制殺死進程。本文就來介紹一下Linux如何使用OOM killer 機制...

        OOM killer 機制就是Linux殺死進程的以個機制,如果進程損壞系統資源到底某種程度,OOM killer 機制就會強制殺死進程。本文就來介紹一下Linux如何使用OOM killer 機制。

      Linux如何使用OOM killer 機制?

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

        這個功能即使在無法釋放內存的情況下,也能夠重復進行確保內存的處理過程,防止系統停滯,還可以找出過度消耗內存的進程。

        典型的情況是:某天一臺機器突然ssh遠程登錄不了,但能ping通,說明不是網絡的故障或者機器down掉,很大可能是sshd進程被 OOM killer殺掉了。

        重啟機器后查看系統日志/var/log/messages會發現 Out of Memory: Kill process 247(sshd)類似的錯誤信息。

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

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

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

        我們認為重要的進程有sshd,或者一些監控守護進程,大家可以根據自己實際情況選擇需要保護的進程。

        保護某個進程不被內核殺掉可以這樣操作:

        echo -17 》 /proc/$PID/oom_adj

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

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

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

        1.進程的選定方法

        OOM Killer在內存耗盡時,會查看所有進程,并分別為每個進程計算分數。將信號發送給分數最高的進程。

        2.計算分數的方法

      Linux是一套免費使用和自由傳播的類Unix操作系統




      日韩精品一区二区三区高清