我写了一个Node.js应用程序,想要在我们的生产机器上运行它。这似乎是一个相当普遍的需求,但我找不到一个合适的解决方案。难道没有为部署生产Node.js应用程序建立的解决方案吗?
这个应用程序很简单(<100 LOC),但需要非常高效、可靠,并且可以连续运行数年而不需要重新启动。它将在一个大型站点上运行,每秒钟有数十个连接(该应用程序不用作Web服务器,只有JSON API)。
以下是我考虑过的方法,但我仍然不确定:
使用框架(例如Express)
由于应用程序需要高性能且非常简单,因此我要避免以框架形式添加膨胀。
使用nohup
启动服务器
主要问题在于异常处理,我们(显然)不希望整个服务器因异常而崩溃。据我所知,将整个应用程序包装在try {} catch {}
循环中无法解决问题,因为Javascript解释器在异常发生后处于不可预测的状态。这正确吗?
使用类似Forever的东西
我在我们的FreeBSD机器上安装了Forever,但它非常不稳定。它最终产生了无法从Forever中终止的无尽进程。我不太自信用Forever运行生产应用程序。似乎Upstart(类似的工具,但更通用)也无法在FreeBSD上运行。
托管解决方案(例如Heroku、Rackspace、Amazon EC2等)
这可能是最简单的解决方案,但我们已经有了其他Web服务器的严重硬件。出于财务考虑,这是不明智的。
肯定有一些已建立解决方案可以解决这个问题吧?我有什么遗漏了吗?