Привет.
Уже третий раз напрягает эта бага, причем, если в первые два я мог ее купировать, не останавливая процесс, то в третий мне придется ехать на объект, лезть в контроллер дебажным портом, останавливать ручками загрузку и только потом править конфиги. Потому что контроллер ребутается каждые 30 секунд по вочдогу и я просто не успеваю залезть снаружи.
Итак, по порядку. service nginx stop. Через несколько секунд вочдог ребутит контроллер. Я в обалдении. Лезу в логи - вижу сабж. Файл pid не найден, значит, надо ребутнуться. (?!!!) ОК, не тормозим nginx или заранее создадим pid на случай ядерной войны. Терпимо.
Вчера накосячил с конфигом москитты, виноват, да. Но теперь эта сво… ээ, прелесть не дает мне вернуть его на место, ибо контроллер уходит в ребут прямо сразу после загрузки демона. Если я успеваю сказать service stop, ребут по той же причине происходит ЕЩЕ быстрее.
Господа авторы! Я всю сознательную жизнь, когда разрабатывал софт для контроллеров, ставил вочдог на ЗАВИСАНИЕ процессов, а не случаи ненахождения файлов, пропадение вайфайки и проч. Линух не винда, это весьма живучая система, поверьте. У меня один забытый сервак работал 4 года после отвала всей дисковой системы - и умер только с ресета, когда грузиться было уже неоткуда. НЕ НАДО перезагружать его по каждому чиху!
Спасибо. Поеду в воскресенье реанимировать узел, непечатно.
Я знаю, как решить проблему превентивно. Теперь. До того я не подозревал о ее существовании. Вот в чем штука.
Сильно рекомендую выключить по дефолту к свиньям собачим ВСЕ капканы, ведущие к циклическому ребуту. Готов поверить, что в вашу команду затесался виндузятник, верующий в целебную силу перезагрузки: объясните ему, что, в отличие от окошек, линух НИЧЕГО лечебного (кроме fsck) по рестарту не запускает.
И контроллер - не перезагрузится.
Потом тестирую измененное (перезапускаю брокер, nginx и прочее) и включаю watchdog снова.
И да, времени до перезапуска вполне хватает остановить ватчдог - даже если параметры неверные.
Пользователям надо чтобы контроллер работал. Если контроллер и не перезапустится - но начнет работать “не так” - это хуже.
Тогда это надо писать огромным болдом ПРЯМО на коробке. В противном случае к вам не вернутся, а купят другое железо, без засад типа этой.
Пользователь нажимает выключатели, к мозгам его ни на выстрел нельзя. Технарю же не надо МЕШАТЬ работать. Эта конкретная подлянка отняла лично у меня день жизни. А жизнь очень коротка. Я уж как-нибудь сам бы решил, нужны ли мне вочдоги по пропадению пидфайла (не процесса!! Это ж еще додуматься, блин, нужно было…) или я таки настрою их по уму.
Еще раз: в отличие от могучей реанимационной системы винды при ребуте, линух НЕ ПОЧИНИТ САМ то, что сломано при настройке. Чудес тут не бывает и НЕ ДОЛЖНО бывать. Увольняйте виндузятника засланного.
Сильно не поддерживаю Вашу позицию и предлагаю обдумать ее еще. С уважением.
Жаль, конечно. Но вообще - файл конфига лежит в /etc, вполне себе настраивается.
А что не так с пид-файлом? watchdog смотрит - существует ли процесс обозначенный в файле. Шатное вполне поведение.
Ну и watchdog можно совсем отключить, при желании: Wiren Board 6 — Wiren Board
Конечно не починит. Он прост и понятен - делает ровно то что от него просят.
Обдумаем, конечно. Но и отказываться от watchdoga не будем. Да, крупными буквами напишем - кому функциональность не нужна - отключат совсем. Кому нужна - не будут отключать.
Еще раз - нет проблем! ЕСЛИ об этом знать заранее. Сегодня на очередном контроллере из коробки я сразу всё вычистил.
Всё ли, узнаем позднее…
Процесс осыпался, файл остался, собака спит. Вопрос - напса тут собака?
Вы попросили циклический ребут с невозможностью залезть снаружи и починить очепятку. Я не поддерживаю эту идею, мне такое в страшном сне бы не приглючило. Впрочем, я повторяюсь.