3

upstart を使用してデーモンを起動し、node.js (express と connect-redis を使用) http および https サーバー (同じ node .js ファイル内) を実行しています。

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

起動時はすべて問題なく、すべてのアプリ機能が期待どおりに動作しているように見えますが、一貫して、さまざまな期間 (数時間後、場合によっては 1 日後) の後、デーモン プロセスが強制終了され、私が持っている唯一のログが

デーモン.ログ:

myserver init: myupstartscript メイン プロセス (3410) が ABRT シグナルによって強制終了されました

ノードjsファイルに、次を配置しました:

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

どれもイベントをキャッチしません。

イベントをシミュレートする方法がわかりません。使ってみたところ

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

my 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 に答える