Страница 1 из 1

Перезагрузка MD по пингу

Добавлено: Пт мар 30, 2018 5:58 pm
blackangel
Доброго все дня!

Подскажите знающие люди, может уже было где то. Или как подобное реализовать.

Идея: перезагрузка MD по событию.

у меня MD крутится на RPi3 а сама база на NAS Synology. Nas делает 1 раз в неделю бэкап системы и соответственно база отваливается, при этом MD уходит в ступор и пишет бесконечный лог, пока вся карта не забьется...

1. пинговать порт базы и при дисконекте, через какое то время перезапустить MD или всю RPi (почему через какое то время? потому что бэкап идет какое то время и в течении этого времени связи нет.)
2. решить вопрос с заполняющимся до бесконечности файла лога(ов).
3. может вообще есть решение проще.....

Re: Перезагрузка MD по пингу

Добавлено: Пт мар 30, 2018 7:25 pm
skysilver
А что за логи забиваются? И что в них пишется при этом?

Re: Перезагрузка MD по пингу

Добавлено: Пт мар 30, 2018 10:24 pm
blackangel
skysilver писал(а):А что за логи забиваются? И что в них пишется при этом?
Если память не изменяет, то те что в папке debmes вроде... что именно там. Посмотрю позже.


Отправлено с моего iPhone используя Tapatalk

Re: Перезагрузка MD по пингу

Добавлено: Пт мар 30, 2018 10:46 pm
blackangel
SPOILERSPOILER_SHOW
blackangel писал(а):
skysilver писал(а):А что за логи забиваются? И что в них пишется при этом?
Если память не изменяет, то те что в папке debmes вроде... что именно там. Посмотрю позже.


Отправлено с моего iPhone используя Tapatalk
Посмотрел.

сегодня был бэкап. MD естественно отвалился. Перезагрузил его с работы по SSH. Отвалился как я уже писал из за того что потерял связь с базой.

при этом весь диск забился....

вот что имеем:
Screenshot_18.png
Screenshot_18.png (16.26 КБ) 4793 просмотра
папка debmes:
Screenshot_19.png
Screenshot_19.png (17.62 КБ) 4793 просмотра
и вот что в этой папке.... честно говоря вытягивать файл 2018-03-30_error.log который весит полтора гига... нет желания... но если ради дела нужно... могу попробовать его открыть...
Screenshot_20.png
Screenshot_20.png (59.43 КБ) 4793 просмотра
естественно до отвала от базы, все в логах хорошо и файлы весят по несколько кило.

Re: Перезагрузка MD по пингу

Добавлено: Пт мар 30, 2018 10:55 pm
blackangel
[quote="blackangel"][/quote]

посмотрел лог... как и следовало ожидать... нет связи с базой.

это малюсенькая часть лога

Код: Выделить всё

 WHERE EXCLUSIVE = 0
                 ORDER BY PRIORITY DESC, ID
Backtrace:
#0 /var/www/lib/mysqli.class.php(394): registerError('sql', '2006: MySQL ser...')
#1 /var/www/lib/mysqli.class.php(177): mysql->Error('SELECT *\n      ...')
#2 /var/www/lib/mysqli.class.php(198): mysql->Exec('SELECT *\n      ...')
#3 /var/www/lib/mysqli.class.php(511): mysql->Select('SELECT *\n      ...')
#4 /var/www/scripts/cycle_execs.php(68): SQLSelect('SELECT *\n      ...')
#5 {main}
15:28:01 0.24781900 Error registered (type: sql):
2006: MySQL server has gone away
SELECT *
                  FROM safe_execs
                 WHERE EXCLUSIVE = 0
                 ORDER BY PRIORITY DESC, ID
Backtrace:
#0 /var/www/lib/mysqli.class.php(394): registerError('sql', '2006: MySQL ser...')
#1 /var/www/lib/mysqli.class.php(207): mysql->Error('SELECT *\n      ...', 0)
#2 /var/www/lib/mysqli.class.php(511): mysql->Select('SELECT *\n      ...')
#3 /var/www/scripts/cycle_execs.php(68): SQLSelect('SELECT *\n      ...')
#4 {main}  
и почему в MD нет механизма очистки.... логов и прочего мусора....

Re: Перезагрузка MD по пингу

Добавлено: Пт мар 30, 2018 11:00 pm
Logrus
2. keepLatestLimitedBySize('./debmes',50*1024*1024);
повесить запуск на ThisComputer.SpaceProblems к примеру
1. потом по таймеру перезагрузить циклы

п.с. через опу, но ...

Re: Перезагрузка MD по пингу

Добавлено: Пт мар 30, 2018 11:06 pm
skysilver
blackangel писал(а):и почему в MD нет механизма очистки.... логов и прочего мусора....
У меня сроду не было логов больше 50Мб, не говоря уже про гигабайты. )) Поэтому даже не задумывался об этом. Но идея хороша, предложи ее в коннекте в разделе разработки и поддержки ядра МДМ.

Насколько знаю, в текущих версиях есть наработки в этом вопросе в виде сценариев и методов - глянь демку, там есть примеры обслуживания сервера.

А по сути, на время бэкапа sql нужно останавливать службу МДМ, а по окончанию заново запускать. Полностью от ошибок это не избавит, т.к. если где-то будет открыта веб-морда, или контроллеры будут дергать по сети ссылки МДМ или слать по MQTT, то один фиг будет обращение к БД, которая не доступна в этот момент.