MongoDB启动失败报mongod.service: Failed with result 'signal'如何解决?
问题根因
你遇到的启动报错code=killed, signal=ILL, status=4/ILL对应SIGILL信号,含义是进程尝试执行了当前CPU不支持的非法指令。
你所使用的Intel Xeon E5540属于Nehalem架构处理器,不支持AVX指令集,而MongoDB 4.2及更高版本的官方预编译二进制包默认使用AVX指令集编译,因此启动时直接触发非法指令错误,进程在初始化日志模块前就被终止,所以不会在/var/log路径下生成相关日志。
排查验证步骤
- 确认CPU是否支持AVX指令集,执行如下命令:
grep avx /proc/cpuinfo
如果命令无任何输出,即可确认当前CPU不支持AVX指令集,符合根因判断。 - 手动执行mongod二进制验证报错,执行如下命令:
/usr/bin/mongod --config /etc/mongod.conf
命令执行后会直接返回Illegal instruction报错,可100%确认是指令集不兼容问题。
解决方法
- 方案一:降级安装MongoDB 4.0版本,该版本的官方预编译包未强制依赖AVX指令集,可在不支持AVX的老CPU上正常运行。
- 方案二:如果必须使用4.2及以上版本,可自行下载对应版本的MongoDB源码,在当前服务器上关闭AVX相关编译选项后手动编译安装,该方案操作复杂度较高,不建议无编译经验的用户使用。
- 方案三:更换搭载Sandy Bridge及之后架构Intel处理器的服务器,这类CPU均支持AVX指令集,可正常运行所有新版本MongoDB。
内容的提问来源于stack exchange,提问作者Nikita Demckenko
相关产品推荐
相关产品推荐

