日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

inputstreamreader未关闭会导致oom_Linux内核OOM机制分析和防止进程被OOM杀死的方法...

發布時間:2023/12/3 linux 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 inputstreamreader未关闭会导致oom_Linux内核OOM机制分析和防止进程被OOM杀死的方法... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

問題描述

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

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

如何防止重要的系統進程觸發(OOM)機制而被殺死呢?只需要一招,就可以輕松避免~

設置參數「/proc/PID/oom_adj為-17」,可臨時關閉 Linux 內核的 OOM 機制。內核會通過特定的算法給每個進程計算一個分數來決定殺哪個進程,每個進程的 OOM 分數可以在「/proc/PID/oom_score」中找到。

處理辦法

2.1 方法一:設置參數/proc/PID/oom_adj為-17

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

1、編寫腳本文件oomadj.sh,內容如下:

#!/bin/bashnetstat -ntlup |grep mongod |awk '{print$NF}' |awk -F '/' '{print$(NF-1)}' |while read PID;doecho -17 >/proc/$PID/oom_adj;done

2、設置定時計劃

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

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

以 linux-3.3.6 版本的 kernel 源碼為例,路徑為「linux-3.6.6/include/linux/oom.h」,閱讀內核源碼可「oom_adj」的可調值為 15 到 -16,其中 15 最大-16 最小,-17 為禁止使用OOM。「oom_score」為 2 的 N 次方計算出來的,其中 N 就是進程的「oom_adj」值,所以「oom_score」的分數越高就越會被內核優先殺掉。

2.2 方法二:修改內核參數禁止OOM機制

# sysctl -w vm.panic_on_oom=1vm.panic_on_oom = 1 //1表示關閉,默認為0表示開啟OOM# sysctl -p

注意事項

注意:

1、Kernel-2.6.26之前版本的 oomkiller 算法不夠精確,RHEL 6.x 版本的 2.6.32 可以解決這個問題。

2、子進程會繼承父進程的 oom_adj。

3、OOM 不適合于解決內存泄漏(Memory leak)的問題。

4、有時 free 查看還有充足的內存,但還是會觸發 OOM,是因為該進程可能占用了特殊的內存地址空間。

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

這時我們不僅要使用好 OOM killer,更需要關注服務器的資源使用情況,需要完善的實時監控體系,能夠對于系統存在問題能夠及時的發現并處理,保證業務穩定運行。

企業還沒有健全的監控體系?沒關系,一個 SaaS 工具搞定你!

推薦大家一個運維監控工具——王教授。不僅可以接入業務的各式監控一圖匯聚展示,還可以對監控的資源使用出現的問題,以及未來風險問題以告警的形式手機通知到個人,最大幾率減小了運維事故的發生。

綁定對應云賬號的AcessKey即可隨時查看到該賬戶下所有資產狀況,及時提醒云資源的變化情況,例如:服務器 CPU 使用率偏高、服務器安全組設置不安全、云數據庫存在慢SQL等...

服務器 CPU 使用率偏高

云數據庫存在慢查詢

有需要的運維同學歡迎點擊文末王教授二維碼查看詳情吧!


網站崩潰找不到原因?平臺搭建無從下手?熱門技術不想落伍?想要變強找不到資料?

加入[IT拯救聯盟],讓大牛和同伴拯救你,帶你裝x帶你飛。定期干貨分享、大牛專業解答、實用IT工具優選.....

私信小編“聯盟”,即可加入我們~

總結

以上是生活随笔為你收集整理的inputstreamreader未关闭会导致oom_Linux内核OOM机制分析和防止进程被OOM杀死的方法...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。