我在 Ubuntu 服务器上运行 MongoDB。它使用 upstart 脚本在机器启动时启动 mongod。我注意到,如果进程崩溃,它不会重新启动。
我如何确保如果它崩溃了,mongod 进程会重新启动?
答案1
我自己找到了答案:实现该目标的最简单方法是在 MongoDB 安装的 upstart 脚本末尾添加以下两行(/etc/init/mongodb.conf
):
respawn
respawn limit 10 90
如果进程终止,它将尝试重新启动它;如果它在 90 秒内崩溃超过 10 次,它将停止。
答案2
我认为较新版本的 MongoDB/Ubuntu 不使用 upstart。以下是我在 Ubuntu 18.04、MongoDB 4.0.2 上实现此目的的方法:
/lib/systemd/system/mongod.service
在文本编辑器中打开:
sudo nano /lib/systemd/system/mongod.service
添加Restart=on-failure
并RestartSec=10
在服务器以非零退出代码退出时在 10 秒后重新启动服务器:
[Service]
User=mongodb
Group=mongodb
EnvironmentFile=-/etc/default/mongod
Restart=on-failure
RestartSec=10
...
Restart=always
如果您想重新启动,无论退出代码是什么,请使用。
然后您可以systemctl daemon-reload
重新启动服务,或者只是重新启动服务器。
答案3
基于已接受的答案(因为我没有足够的代表来评论它)
Respawn
不是 mongo 配置参数,它是 upstart 服务配置文件。
respawn
respawn limit 10 90
Digital Ocean 有一个关于使用 upstart 和 systemd(较新)的很好的教程。 https://www.digitalocean.com/community/tutorials/how-to-configure-a-linux-service-to-start-automatically-after-a-crash-or-reboot-part-1-practical-examples
答案4
mongod.service
通过此systemctl命令打开:
sudo systemctl edit --full mongod.service
编辑[service]
只需添加以下两个命令即可阻止:
Restart=on-failure
RestartSec=10
并重新启动服务
sudo systemctl restart mongod.service
或者,再次检查状态
sudo systemctl status mongod.service
您可以在任何服务中使用此技术在失败时重新启动
@syedasadrazadevops