查看信(xin)息(xi)
輸入以下程序:
dmesg | egrep -i -B100 'killed process'
可以輸出(chu)最(zui)近killed的信息。
設定kill優先度
完全關掉oom(不(bu)建議(yi))
sysctl vm.overcommit_memory=2
echo “vm.overcommit_memory=2” >> /etc/sysctl.conf
出現(xian) Out of memory之后重啟
sysctl vm.panic_on_oom=1
sysctl kernel.panic=X
echo “vm.panic_on_oom=1” >> /etc/sysctl.conf
echo “kernel.panic=X” >> /etc/sysctl.conf
優先考慮kill這個進程(cheng)
sudo echo 10>/proc/[PID]/oom_adj
盡量不去kill這個進(jin)程
sudo echo -15>/proc/[PID]/oom_adj
不會(hui)kill這(zhe)個進程
sudo echo -17>/proc/[PID]/oom_adj
oom_adj的值(zhi)(zhi)在-16 到 +15之(zhi)間(jian),值(zhi)(zhi)越(yue)高(gao)被(bei)kill的優先度越(yue)高(gao)。當該值(zhi)(zhi)為(wei)-17時,系統將不會殺死(si)指定pid的進(jin)(jin)程,而-16~15則會使得進(jin)(jin)程的/proc/[pid]/oom_adj值(zhi)(zhi)呈指數形(xing)式遞(di)增(zeng):
即它們被殺(sha)(sha)掉的可能(neng)性呈指數遞(di)增。針對init(進(jin)程號為1)這個進(jin)程,無(wu)論該(gai)值設為多少都不會被殺(sha)(sha)。
若拒絕訪問
命(ming)令改為:
bash -c "echo '10' | tee /proc/[PID]/oom_adj"
bash -c "echo '-15' | tee /proc/[PID]/oom_adj"
bash -c "echo '-17' | tee /proc/[PID]/oom_adj"