【发布时间】:2018-10-11 16:35:09
【问题描述】:
我在 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
我不认为这是 AWS 中的资源耗尽(即信用不足)。如果我定期重新启动应用程序,服务器永远不会关闭。
- 我没有禁用 OOM Killer 或更改任何 default docker memory config。
- 我正在运行库存 Amazon Linux AMI 版本 2017.03 内核。
- 此行为发生在 AWS 中的多个虚拟实例中
我在这里很茫然;为什么内存压力会导致机器锁定?
【问题讨论】:
-
您是否在运行容器时指定了限制?我还假设这是一个带有 Docker 而不是 ECS 的 EC2 实例?
标签: ruby linux amazon-web-services docker out-of-memory