如何让 Ubuntu 在内存不足时终止有问题的进程?

如何让 Ubuntu 在内存不足时终止有问题的进程?

因此,像大多数人一样,我曾经启用过交换。我首先来描述一下启用交换时发生的情况。

我正在开发一个应用程序,它有时会占用我所有的内存。然后系统几乎完全冻结,我认为这是由于频繁交换造成的。除非我冷重启系统,否则我几乎无法摆脱这种情况。

我尝试过swapoff -a,但是现在,由于某种原因,当我使用了 3GB 中的 2GB 时,系统就会冻结。

我只是希望 Ubuntu 能够在系统冻结之前终止有问题的进程,这样它就不会冻结。

如何确定哪个是有问题的进程,这有点难说,但我认为简单地“杀死内存使用率最高的进程,不包括系统进程”对我的情况来说是好的行为。

有什么方法可以让 Ubuntu 做我想做的事吗?

笔记: 这条评论说我想要的是交换关闭时的默认行为,但这不是我观察到的。

答案1

默认情况下,Linux 有一个“oomkiller”(“内存不足终止程序”),它会尝试猜测哪个进程最应该被终止,并在必要时终止它。不幸的是,正如您已经说过的,做出正确的猜测相当困难,因此结果可能有些随机,包括冻结您的系统。

oomkiller 可以通过多种方式进行影响。检查这一页了解其如何运作以及如何影响它的更多细节。

相关内容