因为Node基本上是单进程的,当出现严重问题时,整个应用程序就会崩溃。
我现在有几个使用Express构建的应用程序,并且我正在使用一些手动方法来防止长时间停机(process.on('uncaughtException')和自定义心跳监视器)。
社区有什么建议吗?最佳实践?框架?
谢谢! A
因为Node基本上是单进程的,当出现严重问题时,整个应用程序就会崩溃。
我现在有几个使用Express构建的应用程序,并且我正在使用一些手动方法来防止长时间停机(process.on('uncaughtException')和自定义心跳监视器)。
社区有什么建议吗?最佳实践?框架?
谢谢! A
使用类似于forever
的工具,或者使用supervisor
。
只需要执行npm link
,然后运行sudo supervisor server.js
。
这些类型的库还支持热重载。有一些是从命令行使用的,它们为您运行节点服务作为子进程。还有其他的,它们期望你编写自己的代码来重新加载。
理想情况下,您希望向全功能负载均衡器迈进,它是故障安全的。如果负载均衡器中的单个节点进程崩溃,您希望它被静默重新启动,并且所有连接和数据都得到保护。
个人建议在开发过程中使用supervisor
(它是由Isaacs编写的!),而在实际生产服务器上使用全功能负载均衡器(nginx或node)。
当然,您已经同时运行了多个节点服务器进程,因为您关心跨多个核心进行扩展,对吧 ;)
使用 forever。
"这是一个简单的CLI工具,可以确保给定的脚本持续运行(即永远运行)"
只需使用npm进行安装即可。
npm install forever
和类型
forever start app.js
我强烈推荐使用forever
。昨天我用了它,非常容易:
安装 npm install forever
启动你的应用程序 forever start myapp.js
检查是否工作正常 forever list
试着杀死你的应用程序:
ps
获取你的myapp.js进程ID并运行kill <pid
运行forever list
,你会看到它又在运行了