【发布时间】:2013-01-24 10:56:42
【问题描述】:
我一直在使用Node.js 和Socket.io 开发一个实时应用程序,我想将它从本地测试阶段带到我们的一些用户进行测试。问题是,如果我关闭到我的服务器的 ssh 会话,它也会停止我开始使用的服务器 node app.js
我考虑过使用nohup,,但我偶尔会遇到分段错误或其他导致服务器停机的随机错误。我需要 1) 知道我的服务器何时(希望是为什么)崩溃,这样我就可以努力改进它以减少崩溃并确保它重新启动。此外,我不能 24/7 保持清醒自己重新启动服务器,所以拥有某种 daemon 会很可爱。
我发现 forever 可通过 npm 获得,但它与比 0.8.x 更新的 Node 版本不兼容,而且我正在运行 0.9.1,而且它似乎没有得到很好的维护。
我也偶然发现了 distribution 和 up,但似乎缺乏使用它们构建体面应用的文档和示例。
然后使用cluster 和os 模块得到这个答案。 https://stackoverflow.com/a/10997753/1883464
但 Node 将集群列为实验性 http://nodejs.org/api/cluster.html
由于缺乏关于在真实生产环境中保持 Node 服务器正常运行(以及更新其代码!)的答案、示例和讨论,我开始觉得我是第一个想要使用他们的服务器的人应用到部署 ;) 不知何故,我确信这个问题有一些我没有找到的常见答案。
【问题讨论】:
-
看看我对stackoverflow.com/questions/14287429/… 的回答,特别是关于
cluster可靠性的cmets。 -
另外,请阅读:gun.io/blog/tutorial-deploy-node-js-server-with-example 它使用 monit 监控并在 node.js 应用程序崩溃时重新启动。
-
谢谢! @AaronDufour 你的回答让我对使用集群方法有了更多的了解。
-
@Kaeros 如果集群方法效果不佳,我会尝试使用 Monit。认为我喜欢集群提供的负载平衡潜力。
-
您使用什么操作系统?您应该使用操作系统提供的初始化系统。我们使用 Ubuntu 和 Upstart。效果很好。
标签: javascript node.js socket.io