Windows 怎么排查 Windows 容器遭遇 OOM 杀手终止运行故障

风敏吖_4001

风敏吖_4001

2026-09-12

591人浏览

原创

退出码137表示容器被SIGKILL(信号9)强制终止,最常见原因为Linux内核OOM Killer触发:若docker inspect显示"OOMKilled": true,则是容器超内存limit被cgroup杀;若为false,则多因宿主机全局OOM或节点MemoryPressure驱逐。

windows 容器本身不直接运行 linux 内核的 oom killer(该机制属于 linux 内核),但当你在 windows 上使用 docker desktop 运行 linux 容器(默认模式),或通过 wsl2 后端 托管容器时,底层实际是 linux 内核 —— 此时容器仍会受 linux oom killer 影响。而若运行的是 windows 容器(如 nanoserver、servercore 镜像),则不存在传统 oom killer,但会因内存耗尽触发进程被 windows 系统强制终止(exitcode 137 或 oomkilled: true 字段可能误显,需结合上下文判断)。

确认是否真为 OOM 导致退出

别急着调参数,先验证是不是内存问题:

  • 运行 docker inspect ,检查输出中:
     • "State.OOMKilled": true → 明确由 Linux 内核 OOM Killer 终止(仅适用于 Linux 容器);
     • "State.ExitCode": 137 → 强烈提示被 SIGKILL 终止,90% 是 OOM;
     • "State.ExitCode": 143 → 收到 SIGTERM,通常是手动 stop 或健康检查失败,非 OOM。
  • 查看宿主机资源:打开 Windows 任务管理器 → “性能”页 → 查看“内存”使用率是否长期 ≥95%,同时观察 WSL2 虚拟机(如果启用)是否内存吃紧(可在 WSL 中执行 free -h)。
  • 检查 Docker Desktop 设置:Settings → Resources → WSL Integration → 确认已启用对应发行版;并检查 Memory 限制(如设为 2GB 但容器申请 2.5GB,就会触发 OOM)。

针对 Linux 容器(WSL2/VM 后端)的 OOM 排查

这是最常见场景,本质是 WSL2 的 Linux 内核在杀进程:

  • 查容器内真实内存压力:进入容器执行 cat /sys/fs/cgroup/memory/memory.usage_in_bytes 和 /sys/fs/cgroup/memory/memory.limit_in_bytes,若前者接近后者,说明触达限制。
  • 看宿主机 dmesg 日志:在 PowerShell 中运行:
    wsl -d docker-desktop sh -c "dmesg -T | grep -i 'killed process'"
    若输出类似 [Mon Jul 29 14:22:03 2026] Out of memory: Kill process 1234 (java) score 872...,即确认 OOM Killer 干的。
  • 降低容器内存申请量:启动时加 --memory=1g --memory-swap=1g 显式限制,避免无节制增长;对 Java 等应用,务必设置 JVM 堆上限(如 -Xmx512m),否则默认可能占满容器内存限额。

针对原生 Windows 容器的内存异常退出

Windows 容器不会触发 Linux OOM Killer,但会因内存不足被 Windows 系统终止(表现为进程突然消失、事件日志报错):

Windows 开机自启并隐藏到系统托盘
Windows 开机自启并隐藏到系统托盘

让 Windows 桌面程序在开机时静默自启并隐藏到系统托盘。特别适用于 Flutter、Electron 等无视 VBS/ProcessStartInfo 窗口样式、难以隐藏的顽固应用。提供「VBS 启动器 + Python ctypes/Win32 API」的隐藏窗口方案,可稳定把窗口收进托盘且不闪控制台。

下载
  • 打开 Windows 事件查看器 → Windows 日志 → 系统 → 筛选事件 ID 4101(容器服务日志)或搜索关键词 “out of memory”、“failed to allocate”。
  • 检查容器镜像是否兼容:某些旧版 Windows Server Core 镜像在 Win11 或新版 Docker Desktop 下存在内存管理缺陷,尝试切换至 mcr.microsoft.com/windows/nanoserver:ltsc2022 等较新标签。
  • 禁用不必要的 Windows 服务:在容器启动脚本中添加 sc config wuauserv start= disabled 等命令,减少后台内存占用(尤其对 servercore 镜像有效)。

通用缓解与预防措施

无论哪种容器,以下操作能显著降低 OOM 风险:

  • 给 Docker Desktop 分配足够内存:Settings → Resources → Memory → 建议设为物理内存的 50%~60%(如 16GB 主机设 8GB),避免 WSL2 抢占宿主机关键内存。
  • 关闭 Windows 休眠和快速启动:这两项会锁定部分内存页,导致 WSL2 可用内存减少,PowerShell 管理员运行:powercfg /h off。
  • 定期清理构建缓存与悬空镜像:docker system prune -a(谨慎执行),避免磁盘空间不足间接引发内存交换失败。
  • 对关键容器启用健康检查 + 重启策略:--health-cmd="exit 0" --health-interval=30s --restart=on-failure:3,避免单次 OOM 后彻底失联。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

windows系统 windows

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
服务器是什么
服务器是什么

服务器是一种计算机硬件设备或软件程序,它具有强大的计算和存储能力,用请求、存储数据和提供服务。它在互联网中着关重要的作用,为用户提供各种服务和资源。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.15

457

5

连接apple id服务器时出错
连接apple id服务器时出错

连接apple id服务器时出错的原因包括网络连接问题、服务器问题、Apple ID账户问题、设备问题、防火墙或安全软件问题、时间和日期设置问题、Apple服务器维护等。本专题为大家提供apple id相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.08

1000

5

搭建互联网服务器
搭建互联网服务器

搭建互联网服务器需要:1、选择合适的硬件和操作系统,第一步是选择合适的硬件和操作系统;2、安装和配置操作系统,是搭建互联网服务器的关键步骤;3、安装和配置服务器软件,是搭建互联网服务器的下一步,常见的服务器软件包括Apache、Nginx、Tomcat等;4、配置防火墙和安全性,是搭建互联网服务器的重要步骤;5、域名解析和配置,是搭建互联网服务器的最后一步。

2023.09.19

3632

5

如何查看服务器状态
如何查看服务器状态

查看服务器状态的方法有使用命令行工具、图形界面工具、监控工具、日志文件和远程管理工具等。本专题为大家提供服务器状态相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.09

1176

5

服务器域名转接慢怎么解决
服务器域名转接慢怎么解决

服务器域名转接慢的解决办法有DNS优化、服务器优化、CDN加速、前端优化和网络优化等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.17

1069

5

服务器评测软件
服务器评测软件

服务器评测软件有PassMark Software、CPU-Z、GPU-Z、CrystalDiskMark、IOmeter、JMeter、LoadRunner、Apache Bench等等。详细介绍:1、PassMark Software是一款综合性的服务器性能测试软件,可以评估服务器在各种负载条件下的性能;2、CPU-Z是一款可以提供服务器CPU详细信息的软件等等。

2023.10.17

554

3

如何开启TFTP服务器
如何开启TFTP服务器

开启TFTP服务器的步骤包括选择TFTP服务器软件、下载和安装软件、配置TFTP服务器以及启动和测试服务器等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.18

3376

4

服务器负载不兼容怎么解决
服务器负载不兼容怎么解决

解决方法:1、增加服务器资源;2、负载均衡;3、优化应用程序;4、增加缓存机制;5、分布式架构;6、限流和熔断;7、自动化扩容。想知道更详细服务器负载不兼容的解决方法,可以访问本专题下面的文章。

2023.10.20

6392

4

宽带如何接入服务器
宽带如何接入服务器

宽带接入服务器的方法有ADSL宽带接入服务器、光纤接入服务器、无线接入服务器和以太网接入服务器等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.20

967

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
HBuilderX Windows 安装手册
HBuilderX Windows 安装手册

共0课时 | 0人学习

phpEnv手册
phpEnv手册

共0课时 | 0人学习

好课诞生记
好课诞生记

共20课时 | 7.3万人学习