轉載:https://zhidao.baidu.com/question/1609920477764046627.html
OS:cent os 6.5
日志路徑:/var/log/messages
服務器上跑的一個程序,發現報了Killed。查看/var/log/messages里的日志,發現以下報錯:
linux下也有內存OOM的處理,不同於android 殺掉報OOM的進程,linux是殺掉當前最占用內存的進程。
當Linux報OOM時,意味着整個系統的內存已經不足,如果不殺死進程的話,就會導致系統的崩潰。
每個進程都會存有一個oom_score的參數,
比如輸出pid為988的oom_score:
[plain] view plain copy
cat /proc/988/oom_score
OOM Killer 會在系統報OOM的時候,殺死當前score最高的進程,一般情況也就是占用內存最大的進程。
解決方法:一是增加系統內存,二是優化進程,使其占用內存降低。三是可以使用oom_score_adj參數,
這個參數會被計算入oom_score,可以避免進程被殺死(不推薦使用)。
