3

我正在使用 upstart 启动一个守护进程来运行 node.js(使用 express 和 connect-redis)http 和 https 服务器(在同一个节点 .js 文件中)

http://kevin.vanzonneveld.net/techblog/article/run_nodejs_as_a_service_on_ubuntu_karmic/

启动时一切正常,所有应用程序功能似乎都按预期工作,但始终如一地,在不同的持续时间后(有时在几个小时后,有时在一天后),守护进程被杀死,我拥有的唯一日志在

守护进程日志:

myserver init: myupstartscript 主进程 (3410) 被 ABRT 信号杀死

在我的节点 js 文件中,我放置了:

process.on('uncaughtException',...);
process.on('SIGABRT', .... );
process.on('ABRT',...);

没有一个捕捉到事件。

我不知道如何模拟事件。当我尝试使用

kill -SIGABRT [the pid]
kill -ABRT [the pid]

我的 process.on('SIGABRT',..) 抓住了那些。

我注意到的其他事情:

  • 如果我在没有 https 服务器的情况下运行服务,则永远不会发生崩溃。
  • 根据我的其他日志,崩溃不是由用户触发的事件引起的
  • 我依赖的其他应用程序特定服务(redis-server、mongod)似乎都与事件无关,它们继续照常服务。
  • 我已将 upstart 脚本设置为在崩溃时重新生成,并且确实如此。

关于我如何追踪它的任何帮助?

我的设置:Linux iLV1 2.6.35.4-rscloud #8 SMP Mon Sep 20 15:54:33 UTC 2010 x86_64 GNU/Linux node v0.5.11-pre

谢谢。

4

1 回答 1

1

如果您想在退出时捕获节点,请使用

process.on('exit', function () {
  console.log('About to exit.');
});
于 2012-01-04T02:47:59.537 回答