2017-06-06 32 views
2

请帮助找到合适的解决方案。调整Docker容器中的子进程的OOM杀手

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

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

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

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

在此先感谢!

回答