为什么 mongod.service 被系统杀死了?

4

我正在使用MongoDB 4.4版本在Ubuntu 20.4上,在同一台服务器上使用2个Mongo实例。 我遇到了这个问题:

Sep 03 10:45:25 mlnode systemd[1]: Stopping MongoDB Database Server...
Sep 03 10:45:25 mlnode systemd[1]: mongod.service: Succeeded.
Sep 03 10:45:25 mlnode systemd[1]: Stopped MongoDB Database Server.
Sep 03 10:45:25 mlnode systemd[1]: Started MongoDB Database Server.
Sep 03 10:55:46 mlnode systemd[1]: Stopping MongoDB Database Server...
Sep 03 10:55:46 mlnode systemd[1]: mongod.service: Succeeded.
Sep 03 10:55:46 mlnode systemd[1]: Stopped MongoDB Database Server.
Sep 03 10:55:46 mlnode systemd[1]: Started MongoDB Database Server.
Sep 03 11:05:05 mlnode systemd[1]: Stopping MongoDB Database Server...
Sep 03 11:05:05 mlnode systemd[1]: mongod.service: Succeeded.
Sep 03 11:05:05 mlnode systemd[1]: Stopped MongoDB Database Server.
Sep 03 11:05:05 mlnode systemd[1]: Started MongoDB Database Server.
Sep 03 11:13:20 mlnode systemd[1]: /lib/systemd/system/mongod.service:11: PIDFile= references a path below legacy directory /var/run/, updating /var/run/mongodb/mongod.pid → /run/mongodb/mongod.pid; please update the unit file accordingly.
Sep 03 11:25:47 mlnode systemd[1]: /lib/systemd/system/mongod.service:11: PIDFile= references a path below legacy directory /var/run/, updating /var/run/mongodb/mongod.pid → /run/mongodb/mongod.pid; please update the unit file accordingly.
Sep 03 11:56:47 mlnode systemd[1]: mongod.service: Main process exited, code=killed, status=6/ABRT
Sep 03 11:56:47 mlnode systemd[1]: mongod.service: Failed with result 'signal'

我不知道为什么系统停止了mongod.service服务,然后我查看了我的Mongo日志:

{"t":{"$date":"2020-09-03T11:56:46.379+05:30"},"s":"F",  "c":"-",        "id":23083,   "ctx":"conn10155","msg":"Invariant failure","attr":{"expr":"ret","error":"UnknownError: -31803: WT_NOTFOUND: item not found","file":"src/mongo/db/storage/wiredtiger/wiredtiger_record_store.cpp","line":1598}}
{"t":{"$date":"2020-09-03T11:56:46.379+05:30"},"s":"F",  "c":"-",        "id":23084,   "ctx":"conn10155","msg":"\n\n***aborting after invariant() failure\n\n"}
{"t":{"$date":"2020-09-03T11:56:46.379+05:30"},"s":"F",  "c":"CONTROL",  "id":4757800, "ctx":"conn10155","msg":"Writing fatal message","attr":{"message":"Got signal: 6 (Aborted).\n"}}

你检查过内存了吗? - user13368664
1
是的!我的服务器有30 GB的RAM,当Mongo崩溃时,14 GB的RAM可用。 - Anandesh Sharma
1
你的数据目录已损坏。 - D. SM
1
你是指 /var/lib/mongodb 这个目录吗? - Anandesh Sharma
2
我也有时会遇到这个问题。你解决了吗? - Climax
3个回答

2

首先,如果你重启了MongoDB,请停止它:

sudo systemctl stop mongod

接下来,我检测到了数据库的损坏问题:

sudo mongod --repair --dbpath /var/lib/mongodb

接下来,运行以下命令:

chown -R mongodb:mongodb /var/lib/mongodb
chown mongodb:mongodb /tmp/mongodb-27017.sock

最后

sudo systemctl start mongod

来源: https://sondnpt00343.medium.com/how-to-fix-mongod-service-32dbbe51a4ee

本文介绍如何修复MongoDB服务的常见问题,包括启动错误、端口占用和写入失败等。根据不同的错误信息,提供了相应的解决方案,如修改配置文件、清空锁定文件和检查网络连接等。

2
我发现我的Linux ulimits 没有设置为mongod实例 推荐 的值。其中一个限制(锁定内存)是65536,在 /lib/systemd/system/mongod.service 中的LimitMEMLOCKinfinity。所以我把它改成了65536,重启服务,然后它又正常工作了。
这对我有用!

1
我遇到了同样的问题。 我按照你的答案做了,但是它没有起作用。 - MsiLucifer
谢谢,我也遇到了类似的问题。这个解决了它。 - Winnie

0

首先,我检测到了数据库的损坏。

 sudo mongod --repair --dbpath /var/lib/mongodb

然后,我重新启动了服务,但是遇到了另一个问题(退出代码)。

接下来,在终端上运行了以下命令:

chown -R mongodb:mongodb /var/lib/mongodb

chown mongodb:mongodb /tmp/mongodb-27017.sock

最后,我重新启动了mongodb服务。
sudo systemctl restart mongod

然后这对我非常有效。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接