【发布时间】:2018-12-16 07:05:26
【问题描述】:
我无法让 pm2 等待 mongodb 在系统重新启动时启动进程之前准备好。 (我使用的是 Ubuntu 16.04 服务器)
在我的 pm2 的 systemd 服务文件中,我有这个,我认为它会等到 mongodb 启动后:
[Unit]
Description=PM2 process manager
Documentation=https://pm2.keymetrics.io/
Wants=mongod.service
After=network.target mongod.service
[Service]
Type=forking
但它似乎运行 pm2,因此 pm2 在 mongodb 实际准备好监听 27017 之前启动的 node.js 进程。我的错误日志显示我的 node.js 脚本在 27017 上找不到 db . 但是如果我手动重新启动进程(在 mongodb 有足够的时间准备之后)它会很好。
如何延迟 pm2 启动,或延迟 pm2 启动特定应用程序,直到 在 mongodb 准备好并侦听连接之后?
注意:我尝试添加
ExecStartPost=/bin/sh -c 'while ! /usr/bin/mongo --eval "db.version()" > /dev/null 2>&1; do sleep 0.1; done'
我的mongod.service 按照这个答案:Systemd: Autostart service after mongodb,但这只是阻止了 pm2 的启动。
【问题讨论】:
标签: node.js mongodb ubuntu-16.04 systemd pm2