Ubuntu Server 22.04下Redis Queue运行异常求助
解决Redis Queue工作进程意外终止(signal 4)的问题
错误原因分析
Work-horse terminated unexpectedly; waitpid returned 132 (signal 4) 对应SIGILL(非法指令),说明进程尝试执行了当前CPU不支持的指令,大概率是以下原因:
- EvalML或其依赖的机器学习库(如XGBoost、LightGBM等)在编译时启用了特定CPU指令集优化(如AVX2、AVX-512),而AWS服务器的CPU不支持这些指令集。
- Docker镜像构建时使用的基础镜像CPU架构与AWS实例不匹配(比如本地构建用了带指令集优化的镜像,部署到AWS时未重新构建)。
排查与修复步骤
检查AWS实例CPU指令集:
在AWS服务器上执行以下命令查看CPU支持的指令集:cat /proc/cpuinfo | grep flags重点确认是否包含
avx2、avx512f等指令集。如果没有,说明EvalML依赖的库编译时用了当前CPU不支持的指令。重新构建Docker镜像:
不要直接复用本地构建的镜像,在AWS服务器上重新拉取代码并构建Docker镜像,确保依赖库基于当前服务器的CPU架构编译。执行:docker-compose down docker-compose build --no-cache docker-compose up -d调整EvalML的依赖库配置:
如果重新构建后问题依旧,尝试安装不依赖高级指令集的库版本。比如针对XGBoost,可安装兼容版:pip install xgboost==2.0.3 --no-binary xgboost也可以在
requirements.txt中直接指定:xgboost==2.0.3 --no-binary xgboost切换AWS实例类型:
如果业务必须依赖高级指令集支持,可更换为支持AVX2/AVX-512的AWS实例类型(如c5、m5系列的部分机型)。
内容的提问来源于stack exchange,提问作者dvelaren
相关产品推荐
相关产品推荐

