我需要 MongoDB 方面的帮助。我正在运行 Ubuntu Server 22.04.3 LTS (Jammy)。当我运行时systemctl status mongod
,我得到了这个:
× mongod.service - MongoDB Database Server
Loaded: loaded (/lib/systemd/system/mongod.service; enabled; vendor preset: enabled)
Active: failed (Result: core-dump) since Sat 2023-10-28 09:41:21 NZDT; 1s ago
Docs: https://docs.mongodb.org/manual
Process: 186542 ExecStart=/usr/bin/mongod --config /etc/mongod.conf (code=dumped, signal=ILL)
Main PID: 186542 (code=dumped, signal=ILL)
CPU: 13ms
Oct 28 09:41:20 theserver systemd[1]: Started MongoDB Database Server.
Oct 28 09:41:21 theserver systemd[1]: mongod.service: Main process exited, code=dumped, status=4/ILL
Oct 28 09:41:21 theserver systemd[1]: mongod.service: Failed with result 'core-dump'.
我所做的就是运行 Filecloud 社区版。
我努力了一切。更改配置文件,重新安装,重新安装 ubuntu,安装其他软件包,请求多个 AI 帮助,查看所有文档,但做完这些之后什么都没有改变。这是我的配置文件:
# mongod.conf
# Where and how to store data.
storage:
dbPath: /var/lib/mongodb
journal:
enabled: true
# where to write logging data.
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log
# network interfaces
net:
port: 27017
bindIp: 127.0.0.1
答案1
systemctl 输出中的“signal=ILL”部分表示 MongoDB 由于非法指令而启动失败。
这是由于MongoDB 5 及更高版本要求AVX运行。
您可以通过以下方式检查您的 CPU 是否支持 AVX:
cat /proc/cpuinfo | grep avx
如果您得到任何类型的输出,您的 CPU 应该支持 AVX,如果不支持,则可能是太旧了,或者您在 VM 中运行 Linux,并且您的虚拟机管理程序没有传递您的物理 CPU 标志。
有关支持 AVX 的 CPU 列表,请参阅:https://en.wikipedia.org/wiki/Advanced_Vector_Extensions(基本上 CPU 在 2011 年左右开始支持 AVX)
如果你的物理 CPU 确实太旧,你的选择是:
- 降级到 MongoDB 4,仍可在没有 AVX 的情况下运行,但将于明年停止使用
- 编译您自己的没有 AVX 的 MongoDB 版本或寻找社区制作的没有 AVX 的版本(例如,有一些非官方的容器)
- 如果你正在使用虚拟化,请确保你的虚拟机管理程序没有出于兼容性或其他原因隐藏你的物理 CPU 标志
- 如果你的硬件确实太旧,无法支持 AVX,请升级到较新的 CPU
答案2
当我使用虚拟盒在 ubuntu 22.04 上安装 mongodb 当前版本 7.00 时,也发生了同样的事情。问题标题为“mongodb 非法指令(核心转储)”。我尝试了很多方法。但问题根本没有解决。最后我找到了解决方案。
解决方案:
- 只需卸载虚拟盒,然后下载并安装 vmware。
- 现在在你的 vmware 机器中安装 ubuntu 22.04
- 然后安装mongodb 7.0v
或者,您可以通过以下链接按照完整的流程来解决 mongodb 上的核心转储问题...
https://www.youtube.com/watch?v=8XdK6wN_XVQ&ab_channel=ArtTVGallery
谢谢。