systemd 无法启动 MongoDB

use*_*744 3 mongodb systemd

我从官方网站下载了 MongoDB。我还编写了 systemd 脚本以在 ubuntu 15.10 上运行它。直到今天它工作得很好。但今天,如果我尝试启动 MongoDB,它可以运行大约。30 秒然后关闭。在日志文件中我看到以下内容:

"[signalProcessingThread] got signal 15 (Terminated), will terminate after current cmd ends"
Run Code Online (Sandbox Code Playgroud)

这是我的系统脚本:

[Unit]
Description= MongoDB Server
After=network.target

[Service]
Type=forking
RemainAfterExit=yes
User=mongodb
Group=mongodb
PIDFile=/server/mongodb-server/mongod.pid
ExecStart=/server/mongodb-server/bin/mongod -f /server/mongodb-server/mongodb.conf


[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)

我尝试删除“mongod.lock”但结果相同。今天,如果我尝试启动 Mongodb“sudo service mogodb start”,它只会挂起 ca。30 秒,然后回复:

Job for mongodb.service failed because a timeout was exceeded.
Run Code Online (Sandbox Code Playgroud)

可能是什么问题呢?

use*_*744 5

问题是文件命名不一致:在“mongodb.service”中

PIDFile=/server/mongodb-server/mongod.pid
Run Code Online (Sandbox Code Playgroud)

并在“/server/mongodb-server/mongodb.conf”中

pidFilePath: "/server/mongodb-server/mongodb.pid"
Run Code Online (Sandbox Code Playgroud)


Cri*_*gie 5

我在 CentOS 主机上也遇到过类似的问题。根本原因是 mongo 在启动时有很多事情要做,并且启动时间为 4 分 47 秒。

肮脏的黑客解决方法是添加

 TimeoutStartSec=400
Run Code Online (Sandbox Code Playgroud)

到 /usr/lib/systemd/system/mongod.service 然后systemctl daemon-reloadastart能够在超时之前完成。

正确的修复方法是优化 mongo 中的数据,这样启动时间就不会超过 5 分钟。

  • 很脏,但可以救命:)谢谢。 (2认同)