mongo避坑指南
[TOC]
场景1:启动mongo报错 Illegal instruction
故障上报
- 2023.08.15.在新机器(Red Hat 8.2)上启动 mongodb 6.0.6 报错 Illegal instruction
[root@localhost ~]# sudo -u mongodb numactl --interleave=all /opt/mongodb/bin/mongod -f /data/mongo_3717/mongo_3717.conf
Illegal instruction
[root@localhost ~]# /opt/mongodb/bin/mongod --help
Illegal instruction (core dumped)
确认过程
- 查看 demsg 日志发现,命令执行失败是因为 invalid opcode 导致,应该与操作系统的指令集有关。
[root@localhost ~]# dmesg -T | grep error
[Mon Aug 14 21:00:24 2023] traps: mongod[31576] trap invalid opcode ip:55569826892a sp:7ffe89ca94e0 error:0 in mongod[5556932c5000+6297000]
[Mon Aug 14 21:25:00 2023] traps: mongod[31610] trap invalid opcode ip:55662a86f92a sp:7fffc04252c0 error:0 in mongod[5566258cc000+6297000]
- 经过多版本测试,MongoDB 4.4.9 是ok的,从 MongoDB 5.0.5 版本开始报错。查找官方文档,确实看到安装 MongoDB 5.0 要求所在服务器的CPU支持AVX指令集
- 检查下服务器的 CPU,确实不支持 AVX (注意:若支持AVX指令集,flags字段会有打印 avx 字符串)
[root@localhost ~]# cat /proc/cpuinfo | grep avx
结论
- 若需要安装或升级到 MongoDB 5.0 及以上版本,务必确保 CPU 支持 AVX 指令集,检查命令
grep avx /proc/cpuinfo