服务器定期无响应,OOM Killer无效?

Eig*_*ght 9 ruby linux out-of-memory amazon-web-services docker

我在AWS上的docker容器中托管了一个Ruby应用程序.不幸的是,这个Ruby应用程序已知会泄漏内存,因此最终会占用所有可用内存.

我或许天真地期待OOM杀手被调用并杀死Ruby进程但没有任何反应.最终机器无响应(Web服务器不响应,ssh被禁用).我们强制从AWS控制台重启机器并在消息日志中获取以下内容,因此在重新启动时它确实存在:

Apr 30 23:07:14 ip-10-0-10-24 init: serial (ttyS0) main process (2947) killed by TERM signal
Run Code Online (Sandbox Code Playgroud)

我不相信这是AWS中的资源耗尽(即用尽信用).如果我定期重启应用程序,服务器永远不会停机.

  • 我没有禁用OOM Killer或更改任何默认的docker内存配置.
  • 我正在运行亚马逊Linux AMI版本2017.03内核.
  • 此行为发生在AWS中的多个虚拟实例中

我在这里非常茫然; 为什么内存压力会导致机器锁定?

小智 1

我认为您假设 OOM 将始终针对您的 Ruby 应用程序,但我认为情况并非如此。你的日志行显示它杀死了你的 tty 连接。我敢打赌它会在您的 Ruby 进程之前杀死其他进程,这就是为什么您的机器看起来没有响应。您可以阅读 OOM 的工作原理,这可能会有所帮助。我会专门查看您的 oom_scores 并看看您在那里发现了什么。

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

祝你好运