You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker OOM时如何配置守护进程终止整个容器而非杀死随机进程

解决方法

你可以通过Docker原生配置项实现OOM时直接终止整个容器的需求,无需修改应用代码。

1. 推荐配置(Docker 20.10+ 支持)

直接在docker-compose.yml对应服务下添加oom_kill_all: true配置即可,完整示例如下:

version: '3.x' # 适配你当前使用的compose版本即可
services:
  你的Python服务名:
    # 保留原有配置
    mem_limit: 200m
    memswap_limit: 200m
    # 新增如下配置
    oom_kill_all: true
    # 可搭配重启策略实现故障自动恢复
    restart: on-failure

配置说明

开启该参数后,容器触发内存上限时,内核会直接杀死容器内所有进程,容器直接进入退出状态,不会出现仅杀单个进程的半异常状态。

2. 旧版本Docker兼容方案

如果你使用的Docker版本低于20.10,不支持oom_kill_all参数,可以通过调整PID1进程的OOM优先级实现同等效果:

services:
  你的Python服务名:
    mem_limit: 200m
    memswap_limit: 200m
    oom_score_adj: 1000

原理说明

oom_score_adj取值范围为-1000~1000,值越高OOM时被优先杀死的概率越高,设为1000后,容器的PID1进程会被OOM Killer优先杀死,PID1进程退出后整个容器会自动终止,内部所有子进程也会被清理。

内容的提问来源于stack exchange,提问作者techtech

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 00:15:04