我遇到了一些间歇性的问题,这些问题似乎与清除某些子进程的杀卵剂有关,但我不明白为什么。
有没有一种方便的方法可以通过sysctl来抑制所有的杀卵活性?
我找到了一些说明说这些应该有效,但它们对我来说并不存在。
sysctl -w memory.oom_control=1
sysctl -w vm.oom-kill=0我也见过这两个人被建议,但奥姆杀手继续下去。
sysctl vm.overcommit_memory=2
sysctl vm.overcommit_kbytes=0发布于 2023-01-23 16:48:33
虽然这个问题很老,但今天我在读书时,却提出了这个问题……
sysctl -w memory.oom_control=1
你几乎从来不想这么做。开箱即用,大多数Linux发行版默认设置为“0”,这意味着内核猜测过多提交内存的数量。“1”意味着它总是会超额承诺。如果您在(接近)稳态机器上获取OOM错误,则应该使用值2。这不会禁用过度提交!它只是对内核承诺给程序的内存设置了一个限制。这个限制由overcommit_ratio或overcommit_kbytes决定。不幸的是,本文件没有指出如何解决其中每一个中的冲突值。但如果你看看这..。
设置一个禁用另一个(读取时显示为0)。
超额承诺比率的正确值取决于机器的使用方式。默认(RAM +交换* 1.5 = 50)对于桌面计算机来说可能是有意义的,但对于服务器来说则是相当高的IME。在交换中拥有服务器通常是一件坏事。
因此,简短的版本是:
sysctl vm.overcommit_memory=2
sysctl vm.overcommit_ratio=20如果您仍然看到OOM杀手,...and会尝试降低比率值。
https://unix.stackexchange.com/questions/432171
复制相似问题