【问题标题】:Running node.js script with forever [closed]永远运行node.js脚本[关闭]
【发布时间】:2015-02-17 06:28:51
【问题描述】:
我一直在运行一个节点脚本,我很好奇它的可靠性以及如果脚本仍在运行,我是否应该构建其他类型的检查。我正在使用这个命令:
forever start server.js
该服务器用作我的 websocket 服务器,即使抛出通常会停止脚本的错误也必须运行。我已经进行了一些测试,它似乎有效,但是很高兴听到使用这种组合一段时间的人说这在生产环境中的可靠性。
【问题讨论】:
标签:
javascript
node.js
websocket
socket.io
forever
【解决方案1】:
是的,它是可靠的,但是如果您的脚本包含一些可以停止脚本的错误,这意味着它会在每次节点停止时启动。这可以在其范围内填写日志,您很快就会内存不足。最好在投入生产之前彻底测试,以保持同一服务器上的其他应用程序正常运行。
但您不必担心每次都保持节点正常运行。
还要检查nodemon,当节点发生变化时它会自动重启节点。
【解决方案2】:
我一直在生产环境中运行,我个人很喜欢它。我使用节点服务器使用 ImageMagick 处理图像。有时我会收到一个 ENOMEM 错误(内存不足)和 Node 崩溃。 (我猜这是我的脚本中的内存泄漏,我还没有追查到)当这种情况发生时,Forever 会立即启动,并且在几秒钟内服务器就会备份。我让浏览器向用户返回一条消息,要求他们再试一次——他们这样做了,而且处理得很好。我也看到过其他随机错误发生,主要是在开发过程中,Forever 也发现了这些错误,并且没有失败地重新启动 Node 服务器。我不记得 Node 崩溃并且服务器从未重新启动的时间,所以它做了它应该做的。
此外,如果您执行 console.log() 输出到永久日志,那么在您的 Node 脚本中还有什么好处。我会经常对此进行跟踪以检查服务器上发生的情况,或者甚至只是不时回顾一下日志以了解其性能。如果/何时 Forever 重新启动服务器,它会在那里告诉你。
祝你好运!
【解决方案3】:
我以前一直使用,但我切换到了 PM2。它要好得多,并且还提供实时监控和日志访问。看看:PM2。