Я использую upstart для запуска демона для запуска http и https сервера node.js (используя экспресс и connect-redis) (в том же файле node .js) за
http://kevin.vanzonneveld.net/techblog/article/run_nodejs_as_a_service_on_ubuntu_karmic/
При запуске все в порядке, и все функции приложения работают, как и ожидалось, но постоянно, после различной продолжительности (иногда через несколько часов, иногда через день), процесс демона завершается, и единственный журнал, который у меня есть, находится в
демон.лог:
myserver init: основной процесс myupstartscript (3410) убит сигналом ABRT
в моем файле node 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), похоже, не связана с этим событием, они продолжают обслуживаться в обычном режиме.
- Я настроил сценарий выскочки на возрождение при сбое, и он это делает.
Любая помощь в том, как я могу отследить это?
Моя установка: Linux iLV1 2.6.35.4-rscloud #8 SMP Пн, 20 сентября, 15:54:33 UTC 2010 x86_64 GNU/Linux node v0.5.11-pre
Спасибо.