Подвисает при сообщениях от zigbee устройств

День добрый! Несколько тем уже аналогичных проскакивали на форуме, но решений по ним я не увидел. Суть такая. Имеются датчики и кнопки zigbee. После включения ПЛК все работает адекватно, приемлемо по скорости реакции, но спустя несколько дней, неделю, все начинает тормозить. Например, сейчас свет включается по датчику движения через 10 сек после того, как это движение произошло. Справляюсь перезагрузкой ПЛК только, примерно раз в неделю, когда задержки становятся совсем неадекватные. Вообще, у меня уже третик контроллер, первый был WB6, была такая же проблема, сменил на WB7 (больше не из-за проблемы, но и ее пытался этим победить) и все было хорошо полгода, но потом там возникла проблема с физическим отваливанием USB устройств, вы мне поменяли новый. А здесь такая же ситуация с возникающими тормозами возникла.
Что я выяснил. Когда уже все плохо работает, то при прилете небольшой пачки данных с zigbee устройств, wb-rules загружает процессор на 170% (не понял, почему больше 100). И пока эта цифра не упадет до нормального значения, правила не выполняются. И что получается, проходишь по коридору, свет не включается от датчика, нажимаешь на физический выключатель, который подключен к дискретному входу контроллера, и свет тоже не может включиться, потому что правила висят…
Для теста запустил правило, которое каждые 2 секунды выводит сообщение с порядковым номером, можно заметить, как при загрузке процессора, несколько сообщений теряются.

Добрый день.

Нужен способ воспроизвести такую нагрузку.
Какие (еще) правила выолняются в движке?
У меня на работающем контроллере, с zigbee такая картина:

ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem
  PID  PPID CMD                         %MEM %CPU
 3914     1 /usr/bin/wb-mqtt-confed -sy 21.0  0.7
 6304  6303 node index.js               14.4  1.5
 3969     1 /usr/bin/wb-rules -syslog -  3.9 17.3

Нет ли рекурсивного создания объектов в скриптах?

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

Вот тут описал, сделайте пожалуйста тоже файл с публикуемым в топик.

Реально полезным для этого была бы запись сообщений z2m в топики.
Например mosquitto_sub -v -t zigbee2mqtt/# >>/root/zigbee.log - и сам файл.

Я не очень понимаю, как это сделать. Если не сложно, дайте чуть более подробную инструкцию…

Остановите zigbee2mqtt, на остановленном, важно, запустите приведенную команду, а после нее - снова запустите сам сервис. Ну и пусть работает, чем дольше тем лучше, сутки-двое например.

Хорошо. Перезагрузил контроллер и сделал, как сказали. До момента, когда тормозить начнет нестерпимо.

Файл растет? В смысле - там все большеи больше строк должно быть.

так понимаю, что нет. Он создан, но там 24 строки на 200 кб

mosquitto_sub -v -t zigbee2mqtt/# >>/root/zigbee.log

а на этой команде долго должно висеть? файл создается, а обратно на приглашение не возвращает. Это я заново пробую после перезагрузки плк и удаления ранее созданного файла.

Вроде разобрался. “Подвисшую” команду оставил в одном окне терминала, а в другом окне вновь запустил z2m. Файл начал расти

Команда просто работает, все время пока она выполняется - сохраняет в файл. Это нормально, да.

Начались лаги 15 сек. Файл сформировался. Прикрепляю.
zigbee.log (4,2 МБ)

Отлично, как раз у меня стенд есть под тесты.

Есть результат?

Увидел, что подобное разбираете в соседней теме Задержка обработки событий zigbee2mqtt
Идентично, что и у меня. Рад, что проблема воспроизвелась и теперь ее можно разобрать. Дружно ждем положительного исхода

Да, с вашими данными - тоже проверил, думаю что причина одна.

Так в чем причина, когда можно ждать решения ?

Причина - течет, вот про решение, точнее про сроки - пока не скажу.

Советую попробовать