Jenkins构建docker镜像返回非零代码137 是否需要调整AWS服务器RAM?
你遇到的/bin/sh -c pip3 install -r requirements.txt' returned a non-zero code: 137错误确实是内存不足触发的,进程被系统OOM(内存不足)终止机制强制杀掉,但不需要第一时间调整AWS服务器RAM配置,可以先尝试以下低成本优化方案:
无需升配的优化手段
- 优化pip安装命令:在Dockerfile的pip安装指令中添加
--no-cache-dir参数,取消pip安装过程中的缓存写入,能大幅降低内存占用,修改后的指令为RUN pip3 install --no-cache-dir -r requirements.txt - 拆分大体积依赖安装:如果requirements.txt中包含pytorch、tensorflow、scikit-learn等大体积依赖,将其拆分为多条RUN指令单独安装,避免批量安装时内存占用瞬间冲高触发OOM
- 限制Docker构建资源上限:在Jenkins执行docker build的命令中添加内存限制参数,示例命令为
docker build --memory 2g --memory-swap 3g .,避免构建进程无节制抢占系统内存 - 排查节点资源占用:登录AWS EC2实例执行
free -h、top命令查看当前内存使用情况,确认是否有多个并发构建任务、僵尸进程、冗余Docker资源占用内存,可通过错峰构建、执行docker system prune -f清理冗余Docker资源释放内存
需要调整RAM配置的场景
如果上述所有优化手段都执行后仍持续报错137,且近期确实新增了多个大体积依赖项,原有服务器内存已经无法满足构建最低要求,再调整AWS EC2实例配置升级RAM即可,优先选择同架构的更高配实例类型,避免出现硬件兼容性问题。
内容的提问来源于stack exchange,提问作者MaxxABillion
相关产品推荐
相关产品推荐

