Node.js:服务器崩溃时如何警告

时间:2011-05-12 08:13:13

标签: javascript node.js hoptoad

当我的服务器因任何原因崩溃时,如何收到警告? HopToad或任何其他服务是否可以做到这一点?

由于

编辑:

我正在使用Heroku for node.js.哪个不允许我运行其他任何东西。我需要从内到外监视我的代码,而不需要运行任何其他进程。

由于

5 个答案:

答案 0 :(得分:9)

您可以尝试在node.js程序中处理uncaughtException事件并在那里“警告我”。或者,您可以使用uptime robot之类的服务来监控您的应用是否正在侦听指定的端口。

答案 1 :(得分:2)

实际上有很多选择!

在我看来,

monitforeversupervisord是那些突然出现在人群中的人。

因为@ rob-cowie已经回答过主管,所以在这里你会得到一些关于'forever'和'monit'的指针。

Monit是管理机器上服务的整体解决方案 - 在崩溃或占用太多资源时通知您并重新启动它们。

我还没有找到一个很好的理由来使用supervisord而不是monit,但是在supervisord邮件列表中我看到了使用monit来监控supervisord的建议!

答案 2 :(得分:1)

一种方法是定期检查您是否可以成功访问您正在投放的网页,请参阅http://wasitup.com/

另一种方法是监控计算机上的服务器进程。一个好方法是使用Supervisord启动node.js。它可以重新启动崩溃的进程并通过电子邮件发送给您。 intarwebs周围有很多例子,包括deployment example1

答案 3 :(得分:1)

我刚刚组建了一个监听未处理异常的类,当它看到它的时候:

  • 将堆栈跟踪打印到控制台
  • 将其记录在自己的日志文件中
  • 通过电子邮件向您发送堆栈跟踪
  • 重新启动服务器(或将其杀死,由您决定)

这需要对你的应用程序进行一些调整,因为我还没有把它变成通用的,但它只是几行,它可能就是你正在寻找的东西!

它从你的应用程序内部运行,不需要包含任何其他文件(如果你想要邮件通知,则不包括nodemailer.js。)

Check it out!

答案 4 :(得分:0)

如果你仍然在heroku上使用node.js,那么也值得一看Nodejitsu。它对节点有很大的支持并且可以永久运行,如果您的应用程序崩溃循环和其他事情,则会收到电子邮非常方便。

另外,就处理uncaughtException而言,我会避免这种情况,从经验来看它是不稳定的,并且在最新的node.js api文档中也注意到它不可靠和不稳定。见http://nodejs.org/api/process.html#process_event_uncaughtexception

使用类似forever的内容!