当内存耗尽时如何防止系统死机?

当内存耗尽时如何防止系统死机?

我一直在运行一个进程(gdb),它可以轻松耗尽我所有的内存和交换空间。每次发生这种情况时,整个系统都会变得非常无响应,Xorg 几乎不会更新,我无法切换到另一个 tty,我无法在控制台中键入命令等。

我尝试通过以下方式留出内存:

sudo sysctl -w vm.min_free_kbytes=407580
sudo sysctl -w vm.swappiness=5

部分虚拟内存被保留,但交换空间已用完,然后系统仍然没有响应。

有没有人有任何万无一失的方法来防止系统完全冻结?这样我就可以杀死占用内存的进程?

更新:

我找到了一种限制从特定 shell 启动的每个进程的内存使用量的方法:

ulimit -v 2037900

这将每个进程的虚拟内存限制为 2037900 KiB(这是我的总内存)。这比任何一个进程都应该使用的要多。到目前为止,这似乎可以防止系统变慢和冻结。

我仍然想知道是否有人知道任何好的系统资源管理实践。

答案1

研究 Linux 内存不足杀手。它不是自动在您的服务器上启动吗?它在我身上。

http://www.oracle.com/technetwork/articles/servers-storage-dev/oom-killer-1911807.html

相关内容