導航:首頁 > 編程語言 > oomjava

oomjava

發布時間:2023-06-16 21:12:24

❶ oom如何解決和預防

盡量提高自己的免疫力,然後不斷的鍛煉身體,這樣的話對於預防來說是有很好的療效。
但是我們還需要掌握一定的方式方法。

❷ 什麼情況下OOM會終止java進程

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

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

# echo -17 > /proc/$PID/oom_adj

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

# pgrep -f "/usr/sbin/sshd" | while read PID;do echo -17 > /proc/$PID/oom_adj;done

可以在計劃任務里加入這樣一條定時任務,就更安全了:

#/etc/cron.d/oom_disable
*/1**** root pgrep -f "/usr/sbin/sshd" | while read PID;do echo -17 > /proc/$PID/oom_adj;done

為了避免重啟失效,可以寫入/etc/rc.d/rc.local

echo -17 > /proc/$(pidof sshd)/oom_adj

至於為什麼用-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的分數越高就越會被內核優先殺掉。

當然還可以通過修改內核參數禁止OOM機制

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

# sysctl -p

閱讀全文

與oomjava相關的資料

熱點內容
pdf文字覆蓋 瀏覽:187
蘇聯227命令 瀏覽:364
javacompress 瀏覽:234
程序員入股 瀏覽:672
java智能演算法有哪些 瀏覽:835
加密鎖可以多人登錄么 瀏覽:537
氣球無限解壓 瀏覽:209
伺服器安裝怎麼操作 瀏覽:717
zip小米手機怎麼解壓 瀏覽:188
雲資料刪除後伺服器還有記錄嗎 瀏覽:953
kafkaserver源碼解析 瀏覽:623
掛機腳本命令 瀏覽:47
vhdl編程軟體 瀏覽:106
sparkjava編程 瀏覽:997
私活給源碼嗎 瀏覽:509
如何在虛擬機里安裝伺服器 瀏覽:841
vs2022如何編譯c語言 瀏覽:75
自學數控車床編程 瀏覽:195
伺服器地址一般在哪找 瀏覽:328
北京bgp伺服器租用雲主機 瀏覽:130