Почему Bluepill не мониторит мою задачу?

Случается страшное неприятное: падает процесс, поддерживающий работоспособность вашего приложения и перестаёт ходить почта, обновляться данные и много чего ещё. Узнаёте вы об этом из вопросов ваших пользователей, большая часть которых сводится к фразе “почему, собственно?” Это если опустить все остальные, нецензурные слова.

Но, думаете вы себе, я же всё настроил, сказал bluepill, что вот мои процессы, запускай их так-то и если процесс умер, запускай его снова? Возможно, что так оно и есть, но процесс падает и не перезапускается. Так тоже бывает.

Что делать в этой ситуации? Первое, очевидное решение, которое мне в голову пришло гораздо позже, чем должно было, посмотреть лог bluepill. Там бывает много интересного, например сообщение о том, что приложение слишком долго стартует и, возможно, оно не демонизировано.

Итак, что можно попробовать, в порядке убывания очевидности:

  • Посмотреть статус процессов запущенных от лица bluepill, командой bluepill status – если обнаружены процессы со статусом unmonitored – это то самое, что мы и будем пытаться исправить дальше
  • Добавить в dsl-блок соответствующих процессов вызов daemonize! если он ещё не там. Это бывает, сам видел
  • Если и после этого в логе пишется (дальше вольный перевод с английского) “Задача слишком долго стартует. Не буду её мониторить”, попробуйте добавить start_grace_time 30.seconds. Количество секунд варьируется по запросам запускаемого приложения. Чтобы примерно прикинуть, сколько потребуется, запустите приложение ручками и умножьте время запуска на полтора
  • Ещё раз посмотрите, что там в логах, проверьте статус, может уже всё хорошо
  • Вы, кстати, перезагружали bluepill после каждого изменения конфигурации? Если нет, самое время попробовать. Между прочим: команда bluepill stop и последующая bluepill start не приводят к перечитыванию конфигурации. Рекомендую bluepill quit и bluepill load /path/to/config_file.

Примерно этот список рекомендаций позволил бы мне сократить время копания в гугле и попыток “заставить всё работать” примерно с часа до минут десяти, или даже пяти :) Удачи.

Comments