问题描述
|
由于节点基本上是单个进程,因此当发生严重错误时,整个应用程序将死亡。
我现在有几个基于express构建的应用程序,并且我正在使用一些手动方法来防止延长停机时间(process.on(\'uncaughtException \')和自定义心跳监视器)。
社区有什么建议吗?
最佳做法?构架?
谢谢!
一种
解决方法
使用like0
或使用
supervisor
。
只需npm link
,然后sudo supervisor server.js
。
这些类型的库还支持热重装。您可以从命令行中使用某些工具,它们将节点服务作为子进程运行。还有其他一些期望您编写代码来重新加载自身的代码。
理想情况下,您要转向完全失效的安全负载均衡器。如果您的负载均衡器中的单个节点进程崩溃,则希望它安静地重新启动,并挽救所有连接和数据。
就个人而言,我建议您在开发中使用supervisor
(由isaacs编写!),并为您的实际生产服务器建议使用完整的负载均衡器(nginx或node)。
当然,您已经在并行运行多个节点服务器进程,因为您关心跨多个内核进行扩展;)
,永远使用。
\“一个简单的CLI工具,可确保给定脚本连续(即永远)运行”
只需使用npm安装
npm install forever
和类型
forever start app.js
,如果您使用的是Ubuntu,则可以使用upstart(默认情况下已安装)。
$ cat /etc/init/my_app.conf
说明\“ my_app \”
作者“我”
在(本地文件系统和网络设备启动IFACE = eth0)上启动
关掉
重生
exec sh -c \“ env NODE_ENV =生产节点/path/myapp/app.js >> /var/log/node.log 2>&1 \”
\“ respawn \”表示该应用程序死后将重新启动。
启动应用
启动my_app
对于其他命令
人初始化
,尝试看看永远的模块。
,我也强烈推荐forever
。我昨天用它,轻而易举:
安装npm install forever
启动您的应用程序forever start myapp.js
检查其工作working10
尝试杀死您的应用程序:
ps
获取您的myapp.js pid并运行kill <pid
运行forever list
,您会看到它再次运行
,您可以尝试使用Fugue,它是node.js的库,类似于Spark或Unicorn:
https://github.com/pgte/fugue
Fugue可以管理任何node.js服务器类型,而不仅仅是Web服务器,并且它是作为Node.js脚本而不是CLI命令设置和配置的,因此普通的node.js构建和部署工具链都可以使用它。