【发布时间】:2017-03-19 13:28:49
【问题描述】:
我创建了一个 Systemd 单元文件来在系统启动时运行 Mongodb。我还创建了一个 systemd 服务来在 mongodb 启动后在启动时运行我的节点应用程序。 mongodb 的服务工作正常,但由于某种原因,我的 Node 应用程序服务尝试运行,然后出现错误:“MongoError:首次连接时无法连接到服务器 [localhost:27017]”。如果我使用$systemctl start mongodb 启动mongodb 服务,然后使用$/usr/bin/node /node_app_slot/server.js 启动我的Node 应用程序,它似乎工作正常。所以问题似乎出在我的 Node 服务器的 systemd 单元文件上。
我将它用于 mongodb systemd 服务https://gist.github.com/jwilm/5842956
这是我的 node_server.service:
[Unit]
Wants=network.target mongodb.service
After=network.target mongodb.service
[Service]
ExecStart=/usr/bin/node /node_app_slot/server.js
[Install]
WantedBy=multi-user.target
我在使用 hostapd 以接入点模式设置的英特尔 edison 上执行此操作。操作系统是 Yocto,并且是最新版本。
我看不出哪里出错了。如果有人能引导我朝着正确的方向前进,我将不胜感激!
谢谢!
【问题讨论】:
-
我想知道 MongoDB 服务器是否需要一段时间才能真正开始接受传入连接。你能在某处插入一个 sleep 看看它是否会在 10 秒左右后接受它们吗?
-
你看过你的 mongodb 日志了吗?如果 mongodb 准备好接受连接,你必须看到你的 nodejs 请求。
-
另外,重试连接而不是失败是有意义的(也许通过指数级地退出连接尝试)
标签: node.js mongodb boot systemd intel-edison