【问题标题】:Adjust OOM killer for subprocess in Docker container为 Docker 容器中的子进程调整 OOM 杀手
【发布时间】:2017-11-07 15:40:54
【问题描述】:

请帮助找到合适的解决方案。

在 Ubuntu 环境中运行有一个 java 服务,它定期调用带有参数的外部进程(同一程序的多个实例)。一切都打包到 Docker 容器中(设置了内存限制,非特权,只读,除了 tmp 和日志,cap_drop 全部)。有时,提供给子进程的数据会使它超出内存限制。因此,在这种情况下,我们希望由于 OOM 而杀死子进程,但让父 (java) 进程继续运行。

如果谈到非 docker 系统,有一套方法可以实现这一点,例如:创建自定义 cgroup,设置内存限制并将子进程附加到它。另一种方法是调整 /proc/PID/oom_adj 设置以使子进程具有更大的 oom_score。

但在 docker 容器中,我找不到一种简单的方法,无需以特权模式运行容器并将外部包装器添加到主进程。

有没有本地方法可以在容器内添加内存 cgroup 或调整 OOM 杀手?

提前致谢!

【问题讨论】:

    标签: linux docker out-of-memory cgroups


    【解决方案1】:

    唯一的方法是使用--oom-score-adj 选项到docker run 甚至--oom-kill-disable

    https://docs.docker.com/engine/reference/run/#runtime-constraints-on-resources

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-03
      • 2012-12-07
      • 2019-12-25
      • 1970-01-01
      • 2023-04-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多