在生产机器上部署和运行节点服务器的最佳方法?

我正在使用Webrtc,nodejs,Expressjs作为创buildaudio,video和聊天应用程序的框架。 我已经使用了Forever,以便脚本可以持续运行。

正如我的应用程序处理audio,video和聊天。 用户存在扮演着重要的angular色。 我们需要始终启动和运行系统,避免系统崩溃并重新启动。 如果发生这种情况,我们将放弃有关在线用户的所有信息。 需要build议什么是避免这种情况的最佳方法。

此外,在将新function移至生产服务器的同时,应该考虑哪些步骤,以便应用程序不会停止,从此我们不会丢失用户信息。

如果服务器出现故障或者我们不得不把它closures的话。 有什么不同的技术可以使用,以便我们不会丢失系统中在线用户的状态信息,并将其恢复(如有必要)。

1)使用节点集群为每个核心分派多个进程。 所以如果一个进程死了,另一个进程会自动启动。 查看: http : //nodejs.org/api/cluster.html

2)使用域来捕获asynchronous操作,而不是使用try-catch或未被捕获的http://nodejs.org/api/domain.html 。 我不是说那个试着抓住或者没有被抓住就是坏的想法!

3)永远使用/主pipe来监视你的服务

4)添加守护进程来运行你的节点应用程序: http : //upstart.ubuntu.com

希望这可以帮助!

我也在这个post回答: 我如何防止node.js崩溃? 尝试赶上不起作用