当前位置: 首页 > news >正文

Docker Compose 启动报错 exit code 137 内存不足怎么解决

在 Elasticsearch 8.1.1 集群实践中,将虚拟机内存从 4G 扩容至 8G 后,成功解决了escluster_es01_1 exited with code 137的启动报错问题。

原因分析

退出代码 137 表明容器收到了 SIGKILL 信号(128+9),进程被强制杀掉。在 Docker Compose version 1.25.0 环境下,这通常由两种情况引发:一是容器内存不足触发 Linux OOM Killer 机制,此时docker inspect显示State.OOMKilled为 true;二是容器收到docker stop信号但应用程序未正常处理 SIGTERM,即使OOMKilled为 false 也会返回 137。

解决方案

1. 确认 OOM 状态

执行docker inspect <ContainerId>查看元数据,若State.OOMKilled属性为 true,则确认为内存不足。若为 false,需检查系统dmesg日志确认是否因 low memory 耗尽导致。

2. 调整容器内存限制

docker-compose.yml中为服务添加mem_limit参数,例如 Apollo 服务建议限制为400m,Java 一般服务最低限制 300m。对于 Kibana 服务,需在.env 文件中将MEM_LIMIT从 512MB 调回 1GB(即1073741824字节),避免JavaScript heap out of memory错误。

3. 扩容宿主机资源

若未设置内存限制,8G 内存的宿主机最多只能运行约 5 个容器。实际测试中,Elasticsearch 集群在 4G 内存虚拟机无法启动,加到 8G 后正常。也可尝试清理未使用镜像释放空间,命令为docker system prune -a

注意事项

1. 环境变量类型错误:在.env 文件中设置密码时,若随意设置数字会报错FATAL Error: [config validation of [elasticsearch].password]: expected value of type [string] but got [number],必须设置为字符串。

2. 信号处理差异:若OOMKilled为 false 但仍报 137,可能是应用未捕获 SIGTERM 信号,需优化代码而非单纯增加内存。

3. 内存区域限制:即使 High Memory 充足,若 Low Memory 耗尽,OOM Killer 依然会杀死进程以保持内核稳定。

参考来源

来源:docker-compose ES8.1.1 集群实践问题总结 - 2022 年 4 月 1 日

来源:解决:Docker Container exited with code 137 - 2022 年 3 月 8 日

来源:没有 OOM 异常时 Docker-compose 退出代码为 137 - 2022 年 11 月 14 日

原文链接:https://www.zjcp.cc/ask/9814.html

http://www.jsqmd.com/news/758197/

相关文章:

  • 使用 OpenClaw 时通过 Taotoken 接入多模型 Agent 工作流
  • RocketMQ实战:用MySQL唯一索引和Redis锁搞定消息重复消费(附完整代码)
  • 对比自行维护与通过Taotoken调用大模型API在稳定性上的体验差异
  • 亨得利维修保养服务电话400-901-0695|官方直营门店地址与保养周期全攻略 - 时光修表匠
  • 英雄联盟Akari助手:5个核心功能解决你的游戏痛点
  • Gemini3.1Pro:你的高效办公新搭档
  • 终极解决方案:VisualCppRedist AIO项目完全部署与维护指南
  • 亨得利手表维修保养服务地址电话终极指南:2026年腕表保养周期与成本数据全曝光(附六大直营门店址) - 时光修表匠
  • Android开发工程师:聚焦蓝牙与WiFi技术的实践指南
  • 亨得利维修保养服务电话400-901-0695|官方直营门店地址与维修资质全解析 - 时光修表匠
  • League Akari终极指南:基于LCU API的英雄联盟自动化工具集开发与实战
  • 3个关键步骤,让你的加密音乐重获自由:Unlock-Music浏览器解密完全指南
  • 2026年5月江诗丹顿官方售后网点亲测报告:避坑指南与真实体验 - 亨得利官方服务中心
  • 别再死记硬背了!用立创EDA仿真,5分钟搞懂三极管静态工作点怎么选
  • GDAL—瓦片格式栅格数据创建和修改
  • 保姆级教程:用STM32CubeMX HAL库驱动SG90舵机(附完整代码和接线图)
  • 语聊社交变现核武!盲盒V6MAX源码系统小程序解析,海外盲盒源码与国际版盲盒源码赋能盲盒定制开发,颠覆盲盒app源码程序 - 壹软科技
  • 亨得利维修保养服务电话400-901-0695|官方直营门店地址与2024最新维修数据全公开 - 时光修表匠
  • Hermes Skill 系统架构选型:TypeScript 与 Markdown 双配置方案深度解析
  • 2026年5月积家官方售后网点深度评测与避坑指南(含迁址与新开门店)亲测实录 - 亨得利官方服务中心
  • 张琦、李一舟 变身 AI 老师 底层逻辑 + 完整变现打法
  • NXP MR-CANHUBK344评估板:多CAN-FD接口与安全设计解析
  • 青岛鼎力信达起重设备租赁:青岛吊车出租企业哪家好 - LYL仔仔
  • Taotoken模型广场在项目初期技术选型中的辅助作用观察
  • 南昌拓拆建筑拆除工程:南昌性价比高的微挖机拆除哪家好 - LYL仔仔
  • 3DS自制软件终极指南:Universal-Updater一键安装与更新解决方案
  • 沉浸式商业重构!盲盒V6MAX源码系统小程序,海外与国际版盲盒源码赋能盲盒定制开发,颠覆盲盒app源码程序及盲盒源码 - 壹软科技
  • 嵌入式开发中的蓝牙与WiFi技术实践:核心技能要求、开发指南与面试准备
  • 2026年5月万国官方售后网点 深度评测 与 避坑指南 ——基于 亲身经历 与多方验证的客观解析 - 亨得利官方服务中心
  • 如何高效管理《泰坦之旅》装备:TQVaultAE背包扩展工具完整指南