首页/云/Docker 容器速查/docker run --oom-score-adj 调整 OOM 优先级
资源与安全50 条

docker run --oom-score-adj 调整 OOM 优先级

调整容器进程被 OOM killer 选中的倾向(-1000 到 1000):让核心容器比批量任务更不容易被杀,但它不阻止内存超用本身。

Docker 容器速查云更新于 2026-10-13

调整内存终止优先级

--oom-score-adj 调整容器进程被内存不足终止机制选中的倾向,取值范围从负数到正数:让核心容器比批量任务更不容易被杀。它只是加权,并不阻止内存超用本身。

基本信息

语法--oom-score-adj=<整数>
作用调整被选中终止的倾向
验证读取进程对应的 oom_score_adj 文件
局限不阻止内存超用
适用平台Linux 上的 Docker Engine

典型使用场景

  • 区分核心服务与批量任务,让核心服务在竞争中更安全
  • 容量紧张时降低批处理任务被保留的概率
  • 排查某容器频繁被终止是否与优先级设置有关
  • 验证参数是否真正写入了进程
  • 压测阶段观察不同优先级下的存活情况

设置与核对

设置与核对
docker run -d --name core --oom-score-adj=-500 app/core:2.1      # 更不容易被选中
docker run -d --name batch --oom-score-adj=500 app/batch:1.0    # 更容易被选中
cat /proc/$(docker inspect -f '{{.State.Pid}}' core)/oom_score_adj   # 核对生效值

取值方向与适用对象

取值方向含义适用对象
负值降低被终止的概率核心在线服务
零默认无特殊要求的容器
正值提高被终止的概率可重试的批处理任务
极端取值效果更强需要谨慎评估影响
负值降低被选中的概率、正值提高;分数只在发生内存竞争时参与判决。
它只是加权不是保护,真要防止被杀还是靠内存限额与容量规划。
脚本里用等号形式写负值,避免负号被参数解析器误认为选项。
多个容器同时设置优先级时,实际结果取决于相对关系,单独看一个数值意义有限。
容器被终止后要先确认是宿主机内存不足还是容器自身超限,两种情形的处置方向不同。
调整的是容器进程的取值,宿主上其他服务的取值不受影响,容量评估时不要把两者的结论互相套用。
容器数量多时逐个设置优先级不现实,通常只对少数核心服务做差异化设置,其余保持默认。

易错点

  • 它只是加权不是保护,防止被杀仍要靠内存限额与容量规划
  • 脚本里写负值不用等号形式,会被参数解析器误认为选项导致启动失败
  • 只调一个容器的优先级而忽略其他容器,实际效果取决于相对关系
  • 容器被杀后不区分是宿主内存不足还是容器超限,处置方向会选错

数据来源与参考

  • Docker 官方 CLI 参考:docker run --oom-score-adj(docs.docker.com)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌