2012-01-03 88 views
3

我使用新贵推出一个守护进程运行的node.js(使用快递和连接 - 抓Redis的),HTTP和每Node.js的由ABRT信号杀害主要过程,而不是由process.on(“SIGABRT”,...)

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

一切HTTPS服务器(在同一节点.js文件)是在启动罚款和所有的应用功能,出现预期的工作,但始终,经过时间长短不一(有时后几个小时,有时一天后),守护进程就会被杀死,我有它的唯一的日志中发现

daemon.log中:

MYSERVER初始化:myupstartscript主要工艺(3410)在我的节点js文件ABRT信号

打死,我已经放在:

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

其中没有赶上事件。

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

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

我process.on( 'SIGABRT',..)捕获的。

其他的事情我已经注意到:

  • 如果我运行没有HTTPS服务器的服务,坠机从未发生过。
  • 基于我的其他日志,崩溃不是来自用户触发的事件
  • 我依赖的其他应用程序特定服务(redis-server,mongod)似乎都与事件有关,它们照常继续维修。
  • 我已经设置了暴发时重生的新贵脚本,它是这样做的。

我如何可以追溯到它任何帮助吗?

我的设置: Linux的iLV1 2.6.35.4-rscloud#8 SMP周一09月20日15时54分33秒UTC 2010 x86_64的GNU/Linux的 节点v0.5.11预

感谢。

回答

1

如果你想赶上节点上的退出,使用

process.on('exit', function() { 
    console.log('About to exit.'); 
}); 
+0

谢谢,但我实际上是试图防止因可能的话中止信号退出或登录有关该事件的一些数据,找出病因。就目前而言,我是用暴发户自动重生的,但如果可以的话,我宁愿在节点内处理它。 – Ray 2012-01-04 17:00:32

+1

哦,那么你想使用'process.on('SIGINT',....)' – 2012-01-23 00:03:40

+0

嘿 - 我也面对这个,你是否能够解决这个问题?假设这是内存泄漏或加载到内存中的内存超过了Linux sysctl中配置的内存。 – 2016-01-09 11:31:01