Linux

避免 linux 記憶體不足的應用程序拆解

  • February 10, 2021

我發現有時我的 Linux 機器記憶體不足,它開始拆除隨機程序來處理它。

我很好奇管理員如何避免這種情況?是增加記憶體量的唯一真正解決方案(單獨增加交換會有所幫助嗎?),還是有更好的方法來使用軟體設置盒子以避免這種情況?(即,配額或類似的?)。

預設情況下,Linux 有一個有點傷腦筋的記憶體管理概念:它允許您分配比系統更多的記憶體,然後在遇到問題時隨機終止程序。(被殺死的實際語義比這更複雜——Google“Linux OOM Killer”有很多關於它是好還是壞的細節和爭論)。


要恢復您的記憶體管理的一些理智:

  1. 禁用 OOM Killer(放入vm.oom-kill = 0/etc/sysctl.conf)
  2. 禁用記憶體過度使用(放入vm.overcommit_memory = 2/etc/sysctl.conf)
    注意這是一個三進制值:0 =“估計我們是否有足夠的RAM”,1 =“總是說是”,2 =“如果我們沒有就說不有記憶”)

這些設置將使 Linux 以傳統方式執行(如果程序請求的記憶體多於可用的記憶體 malloc() 將失敗,並且請求記憶體的程序預計會處理該失敗)。

重新啟動您的機器以使其重新載入/etc/sysctl.conf,或使用proc文件系統立即啟用,無需重新啟動:

echo 2 > /proc/sys/vm/overcommit_memory 

引用自:https://serverfault.com/questions/141988