還在擔(dān)心服務(wù)器進(jìn)程被OOM?只需一招,即可避免

2021-01-30    分類: 網(wǎng)站建設(shè)

問題描述

Linux 內(nèi)核有個機(jī)制叫 OOM killer(Out-Of-Memory killer),該機(jī)制會監(jiān)控那些占用內(nèi)存過大,尤其是瞬間很快消耗大量內(nèi)存的進(jìn)程,為了防止內(nèi)存耗盡而內(nèi)核會把該進(jìn)程殺掉。

典型的情況是:某天一臺機(jī)器突然 ssh 遠(yuǎn)程登錄不了,但能 ping 通,說明不是網(wǎng)絡(luò)的故障,原因是 sshd 進(jìn)程被 OOM killer 殺掉了(多次遇到這樣的假死狀況)。重啟機(jī)器后查看系統(tǒng)日志「/var/log/messages」會發(fā)現(xiàn)「Out of Memory: Kill process 1865(sshd)」類似的錯誤信息。

還在擔(dān)心服務(wù)器進(jìn)程被OOM?只需一招,即可避免

如何防止重要的系統(tǒng)進(jìn)程觸發(fā)(OOM)機(jī)制而被殺死呢?只需要一招,就可以輕松避免。

還在擔(dān)心服務(wù)器進(jìn)程被OOM?只需一招,即可避免

設(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」中找到。

處理辦法

1. 方法一:設(shè)置參數(shù)/proc/PID/oom_adj為-17

如何防止mongod被殺,可以這樣操作:

(1) 編寫腳本文件oomadj.sh,內(nèi)容如下:

  1. #!/bin/bash?
  2. netstat?-ntlup?|grep?mongod?|awk?'{print$NF}'?|awk?-F?'/'?'{print$(NF-1)}'?|while?read?PID;?
  3. do?
  4. echo?-17?>/proc/$PID/oom_adj;?
  5. done?

(2) 設(shè)置定時計劃

  1. [root@mnkj-mongodb-01?~]crontab?-e?
  2. */1?*?*?*?*?/root/oomadj.sh?

還在擔(dān)心服務(wù)器進(jìn)程被OOM?只需一招,即可避免

至于為什么用-17而不用其他數(shù)值(默認(rèn)值為0),這個是由linux內(nèi)核定義的,查看內(nèi)核源碼可知:

以 linux-3.3.6 版本的 kernel 源碼為例,路徑為「linux-3.6.6/include/linux/oom.h」,閱讀內(nèi)核源碼可「oom_adj」的可調(diào)值為 15 到 -16,其中 15 大-16 最小,-17 為禁止使用OOM。「oom_score」為 2 的 N 次方計算出來的,其中 N 就是進(jìn)程的「oom_adj」值,所以「oom_score」的分?jǐn)?shù)越高就越會被內(nèi)核優(yōu)先殺掉。

2. 方法二:修改內(nèi)核參數(shù)禁止OOM機(jī)制

  1. #?sysctl?-w?vm.panic_on_oom=1?
  2. vm.panic_on_oom?=?1?//1表示關(guān)閉,默認(rèn)為0表示開啟OOM?
  3. #?sysctl?-p?

注意事項

注意:

  • Kernel-2.6.26之前版本的 oomkiller 算法不夠精確,RHEL 6.x 版本的 2.6.32 可以解決這個問題。
  • 子進(jìn)程會繼承父進(jìn)程的 oom_adj。
  • OOM 不適合于解決內(nèi)存泄漏(Memory leak)的問題。
  • 有時 free 查看還有充足的內(nèi)存,但還是會觸發(fā) OOM,是因為該進(jìn)程可能占用了特殊的內(nèi)存地址空間。

OOM killer 是保證系統(tǒng)內(nèi)存不被個別進(jìn)程消耗殆盡非常實用的機(jī)制,但是在實際工作除了進(jìn)程運行過多會造成內(nèi)存占用過高,還有很多其他的因素比如:訪問增多、遭受攻擊等...

這時我們不僅要使用好 OOM killer,更需要關(guān)注服務(wù)器的資源使用情況,需要完善的實時監(jiān)控體系,能夠?qū)τ谙到y(tǒng)存在問題能夠及時的發(fā)現(xiàn)并處理,保證業(yè)務(wù)穩(wěn)定運行。

本文題目:還在擔(dān)心服務(wù)器進(jìn)程被OOM?只需一招,即可避免
路徑分享:http://m.kartarina.com/news/98136.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計公司網(wǎng)站收錄、用戶體驗App設(shè)計

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)
主站蜘蛛池模板: 日木av无码专区亚洲av毛片| 无码日韩精品一区二区免费暖暖| 亚洲国产成人无码AV在线影院| 亚洲精品无码成人片久久不卡| 无码人妻久久一区二区三区蜜桃| 国产午夜精华无码网站| 中文字幕人成无码人妻| 精品无人区无码乱码大片国产| 无码精品一区二区三区在线| 无码国产69精品久久久久孕妇| 久久久久亚洲AV片无码下载蜜桃 | 亚洲精品无码高潮喷水A片软| 久久久精品无码专区不卡| 无码人妻精品一区二区三区99性 | 精品无码一区在线观看| 成人无码精品1区2区3区免费看| 亚洲国产精品无码久久98| 久久久无码精品亚洲日韩蜜桃| 在线无码午夜福利高潮视频| 亚洲av无码成人精品国产| 亚洲AV成人无码久久精品老人| 久久亚洲AV永久无码精品| 亚洲av无码偷拍在线观看| 亚洲AV无码无限在线观看不卡| 色综合AV综合无码综合网站| 亚洲VA中文字幕无码一二三区| julia无码人妻中文字幕在线 | 中文字幕乱码人妻无码久久| 国产精品亚洲专区无码WEB| 亚洲中文字幕无码亚洲成A人片| 亚洲av无码不卡| 精品国产V无码大片在线看| 无码视频在线观看| 少妇人妻无码精品视频| 国产AV无码专区亚洲Av| 亚洲成a人片在线观看无码| 国产羞羞的视频在线观看 国产一级无码视频在线 | 亚洲av中文无码乱人伦在线观看| 97久久精品亚洲中文字幕无码| AV无码人妻中文字幕| 亚洲va成无码人在线观看|