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

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

谢谢

编辑:

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

谢谢

您可以尝试在node.js程序中处理uncaughtException事件,并在那里执行“警告”事件。 或者,您可以使用正常运行时间机器人等服务来监视您的应用是否在指定的端口上侦听。

实际上有很多select!

在我看来, monit , 永远和supervisord是那些超出人群的。

由于@ rob-cowie已经回答了有关主pipe的问题,在这里你会得到一些关于'永远'和'monit'的指示。

Monit是一个整体解决scheme,用于pipe理机器上的服务 – 通知您并在崩溃或占用太多资源时重新启动它们。

  • Forever with nodejs的完整例子
  • nodejs与updstart和monit (从以前永远使用的某个人)

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

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

另一种方法是监视你的机器上的服务器进程。 一个好的方法是使用Supervisord启动node.js。 它可以重启一个崩溃的进程并发邮件给你。 围绕intarwebs有很多例子,包括部署example1

我只是把一个监听未处理exception的类放在一起,当它看到一个类时:

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

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

它从您的应用程序内运行,无需包含任何其他文件(除了nodemailer.js,如果您想要邮件通知..)

一探究竟!

如果你仍然在使用heroku上的node.js,那么Nodejitsu也是值得的。 它对节点有很大的支持,并且可以永久运行,如果你的应用程序崩溃循环和其他事情发送电子邮件通知 非常便利。

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

使用像永远的东西!

Interesting Posts