OOM Killer 没有触发?

OOM Killer 没有触发?

我的工作环境刚刚从 Debian 6 升级到 Amazon Linux 2015.03,这是一个相当大的飞跃。

在新平台上,一个服务器实例由于内存不足而被锁定了几次。这是由于一个恶意 Apache 进程消耗了大量内存并导致实例 OOM。

问题的原因是几个月前添加到 Web 应用程序的一个新功能,目前正在完善和修复,但这个问题实际上是关于 OOM killer 的。

这个问题在移至新堆栈后才真正出现,因此我们认为这是新堆栈的问题。在用可重现的情况测试旧堆栈时,也出现了同样的情况,但是 OOM 终止程序每次都能可靠地启动并终止失控进程。

在新系统上,内存已满,系统锁定。在某些情况下,它会立即恢复,系统正常,但在大多数情况下,系统会冻结并需要重新启动。在极少数情况下,系统将在大约 15-30 分钟内恢复,并且系统日志中会出现 OOM killer 消息。

我试图理解为什么 OOM killer 在旧堆栈上能正常工作(以至于这个问题从未被注意到)但在新堆栈上却无法工作?

干杯

编辑:是否可以为 OOM 杀手等内核函数分配一定数量的内存。我认为 OOM 杀手本身可能没有资源来运行

相关内容