我正在运行一个节点强循环应用程序,如果它崩溃了,我需要它自动重启。自动重启节点应用程序的最佳方式是什么?另外,当这些崩溃发生时,有没有通知呢?
发布于 2016-04-05 13:18:32
您可以使用进程管理器,如Strongloop进程管理器(http://strong-pm.io/)、PM2 (http://pm2.keymetrics.io/)和Forever (https://github.com/foreverjs/forever)。还要检查这三个参数(http://strong-pm.io/compare/)的比较。您还可以在服务器重启时检查pm2-monitor (https://www.npmjs.com/package/pm2-monitor)中的通知。
发布于 2016-04-05 13:41:18
大多数Linux系统最近都切换到使用systemd,这使得这个过程变得更加简单和高效,这意味着我们不再需要永远。
你所需要的是:
用于通过systemctl enable nodeserver.service.
/etc/systemd/system/nodeserver.service.
systemctl start nodeserver.service.创建服务文件的
您总是可以通过运行以下命令来检查它的可用性:systemctl status nodeserver.service。
如果您对服务文件进行了任何更改,则需要在重新加载服务systemctl restart nodeserver.service之前执行systemctl daemon-reload。
.service文件示例:
[Unit]
Description=Node.js Example Server
#Requires=After=mysql.service # Requires the mysql service to run first
[Service]
ExecStart=/usr/local/bin/node /opt/nodeserver/server.js
Restart=always
RestartSec=10 # Restart service after 10 seconds if node service crashes
StandardOutput=syslog # Output to syslog
StandardError=syslog # Output to syslog
SyslogIdentifier=nodejs-example
#User=<alternate user>
#Group=<alternate group>
Environment=NODE_ENV=production PORT=1337
[Install]
WantedBy=multi-user.target顺便说一句,StrongLoop有一篇关于最佳实践的官方文章,其中提到了systemd。Read more.
你可能还想看看这个模块,它是由strongloop guys为nodejs和strongloop构建的:https://github.com/strongloop/strong-service-systemd
发布于 2017-03-15 18:33:24
PM2和forever是管理节点进程的好方法。PM2提供了一个友好的图形界面,让你可以很容易地获得CPU/内存/日志。
在这里,我提供另一个有趣的想法: Docker。
您可以使用docker hub中的docker镜像构建运行时环境
并运行它:
docker运行-it节点图像节点您的script.js
您可以使用重新启动参数来管理流程的生命周期。
Docker支持以下重启策略:
https://stackoverflow.com/questions/36417528
复制相似问题