7

当我的服务器因任何原因崩溃时,我如何得到警告?HopToad 或任何其他服务会这样做吗?

谢谢

编辑:

我正在将 Heroku 用于 node.js。这不允许我运行其他任何东西。我需要一些东西来从内到外监控我的代码,而不需要运行任何其他进程。

谢谢

4

5 回答 5

9

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

于 2011-05-12T08:20:54.327 回答
2

实际上有很多选择!

在我看来,monitforeversupervisord是最突出的。

由于@rob-cowie 已经回答了有关主管的问题,因此您可以在这里得到一些关于“永远”和“监控”的指针。

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

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

于 2011-05-12T08:38:46.400 回答
1

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

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

它需要对您的应用程序进行一些调整,因为我还没有使它通用,但它只有几行,它可能是您正在寻找的!

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

一探究竟!

于 2012-05-15T16:39:33.533 回答
1

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

另一种方法是监视您机器上的服务器进程。一种好方法是使用Supervisord启动node.js。它可以重新启动崩溃的进程并向您发送电子邮件。intarwebs 周围有很多示例,包括部署示例1

于 2011-05-12T08:20:26.747 回答
0

如果你还在 heroku 上使用 node.js,那么 Nodejitsu 也值得一看。它对节点有很好的支持并且永远运行,如果你的应用程序崩溃循环和其他事情,它会通过电子邮件通知。非常便利。

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

使用永远的东西!

于 2013-01-22T12:57:08.003 回答