systemd无法启动MongoDB。

3

我从官网下载了MongoDB,并编写了一个systemd脚本在Ubuntu 15.10上运行它。直到今天,一切都很顺利。但是今天,如果我尝试启动MongoDB,它会工作约30秒钟,然后关闭。在日志文件中,我看到以下内容:

"[signalProcessingThread] got signal 15 (Terminated), will terminate after current cmd ends"

这是我的systemd脚本:

[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

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

Job for mongodb.service failed because a timeout was exceeded.

可能出了什么问题?

1
这绝对不是软件开发人员的问题。但我不确定它应该发布在 https://dba.stackexchange.com(因为涉及管理数据库),https://unix.stackexchange.com(因为涉及编写shell脚本)还是https://serverfault.com(因为涉及在服务器重启时设置操作)。 - Philipp
请查看@Philipp的评论。您的数据和日志目录是否存在,并且mongod服务是否具有足够的权限来读写这些位置。 - Alex
3个回答

5

我在一个CentOS主机上遇到了类似的问题。根本原因是Mongo启动时需要做很多事情,花费了4分钟47秒才能启动。

一种简单的解决方法是添加以下内容:

 TimeoutStartSec=400

将文件路径更改为 /usr/lib/systemd/system/mongod.service,然后执行 systemctl daemon-reload,再执行 start 命令,在超时之前能够完成启动。

正确的解决方法是优化mongo中的数据,使其不需要花费近5分钟才能启动。


2
脏乱但救命的 :) 谢谢。 - Muammer HALLAC

4
问题出在文件命名不一致:"mongodb.service"。
PIDFile=/server/mongodb-server/mongod.pid

在 "/server/mongodb-server/mongodb.conf" 中。
pidFilePath: "/server/mongodb-server/mongodb.pid"

1
请报告这个问题! - Markus W Mahlberg
版本2.6.11,在mongodb.conf中pitfilepath不支持驼峰命名法。 解析INI配置文件时出错:未知选项pidFilePath。 - user2363318

0
当我以root身份运行mongod时,遇到了类似的问题,而此时mongod已经在systemd下运行。
当我这样做时,/var/lib/mongo目录下的.lock和.turtle文件不再属于mongod,因此mongodb无法在systemd下启动,只能手动使用"mongod -f /etc/mongod.conf"来启动。
解决方法是:
rm /var/lib/mongo/WiredTiger.lock /var/lib/mongo/mongod.lock
chown -R mongod:mongod /var/lib/mongo/*

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