2013-11-01 5 views
1

Мы запускаем приложение Node.js/Express, которое работает в течение нескольких часов, и затем начнет бросать 504 ошибки без уважительной причины. Поскольку мы в настоящее время не можем отслеживать эти ошибки, нам нужно перезапустить приложение каждый час или около того, чтобы убедиться, что он все еще работает в выходные дни.Периодическое приложение перезапускается в контейнере Docker

Наш сервер Ubuntu работает Dokku, который затем имеет конфигурацию контейнера для нашего приложения. Каждый раз, когда приложение набирает 504, мы должны запустить docker restart appid как root.

Итак, каков наилучший способ автоматического перезапуска процесса узла каждый час?

+0

Вы пробовали использовать «навсегда» (npm install forever), вы можете запустить его через свой CLI с «навсегда начать .js». Он должен перезапустить приложение node.js, если он неожиданно завершится. –

ответ

2

броска 504 ошибки без причины

Это бросает их, потому что вы приложение врезаться

в настоящее время не в состоянии отслеживать эти ошибки вниз

Вы должны отслеживать их вниз. Они очень вероятно, необработанное исключение, которое вы можете поймать и авторизуйтесь через:

process.on('uncaughtException', function(error) { 
    //look Ma, I died 
}); 

Так что самый лучший способ автоматического перезапуска процесса узла каждый час?

Поскольку я чувствую себя плохо, по крайней мере, не пытаясь обратиться к вам актуальный вопрос, даже если вы, безусловно, фиксируя симптом, а не проблемы в серьезно плохом смысле ...

Использование хрон. Поместите сценарий в /etc/cron.hourly/restart_express, чтобы сделать это. Убедитесь, что файл сценария имеет разрешения на выполнение и соответствует ограничениям именования run-parts (без точек и т. Д.).

+0

Не то, чтобы я не хотел исправлять это, я делаю! Я устал от перезапуска приложения каждые несколько часов, но я тратил много времени на трафик через нашу - на самом деле довольно маленькую - кодовую базу, ищущую исправление. В ошибках ничего не выплевывается, оно просто умирает. – James

+0

Возможно, Linux Out Of Memory Killer убивает его? Если у вас есть довольно крошечное приложение, которое выходит, и вы не знаете, почему, это серьезно плохо. Помогите разобраться или переписать его или что-то в этом роде, но это ужасная ситуация. Наймите кого-нибудь, чтобы проверить его или помочь вам отлаживать или что-то еще. –

+0

У меня такое чувство, что это связано с подключениями MySQL. Хотя мы объединяем их вместе, я чувствую, что это где-то убивает связи. Спасибо за материал cron, это будет сделано пока. – James

Смежные вопросы