在Docker容器中调整subprocess的OOM杀手

请帮助find合适的解决scheme。

在Ubuntu环境中运行的是一个java服务,它周期性地用params(同一个程序的多个实例)调用外部进程。 所有东西都打包到Docker容器中(内存限制设置为非特权,除了tmp和日志以外,只读属性,cap_drop全部)。 有时,提供给subprocess的数据会使其溢出内存限制。 所以,在这种情况下,我们希望杀死由于OOM造成的subprocess,但离开父进程(java)进程运行。

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

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

有没有一种本地的方式来添加容器内的内存cgroup或调整OOM杀手?

提前致谢!

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

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