Ubuntu 20上ElasticSearch Docker-Compose退出码137问题求助
Elasticsearch容器退出码137的解决线索
退出码137几乎都是内存不足被系统强制终止导致的,Mac能正常运行是因为Docker内存分配或宿主机内存更充裕,Ubuntu这边可以从以下方向排查:
1. 检查宿主机内存状态
执行命令查看当前内存使用:
free -h
三个Elasticsearch节点每个至少需要1.5GB左右的可用内存(JVM堆+堆外内存开销),如果宿主机总内存低于4GB,跑三节点集群压力极大,建议先减少节点数量或升级宿主机内存。
2. 调整内存限制参数
- 修改
.env文件中的MEM_LIMIT,从1GB(1073741824)提升到至少2GB(2147483648):MEM_LIMIT=2147483648 - 同步调整
ES_JAVA_OPTS,JVM堆内存不要超过宿主机内存的50%,比如:ES_JAVA_OPTS=-Xms1g -Xmx1g
3. 简化集群配置(快速验证)
如果暂时没有足够内存,先改成单节点集群测试:
- 删除
docker-compose.yml中的es02、es03服务; - 修改
es01的环境变量:cluster.initial_master_nodes=es01 discovery.seed_hosts=es01
这样单节点启动内存压力会小很多,能快速验证是否是内存问题。
4. 检查Docker内存分配(针对Docker Desktop)
如果用的是Ubuntu版Docker Desktop,打开设置→Resources→Advanced,确保Docker的内存分配至少4GB以上,默认分配可能不足。
5. 查看容器日志确认原因
执行命令查看ES节点的详细日志,确认是否是OOM:
docker-compose logs es01
如果日志里出现Cannot allocate memory或Out of memory相关信息,就坐实了内存不足的问题。
内容的提问来源于stack exchange,提问作者khoailang
相关产品推荐
相关产品推荐

