Перезапуск Mosquitto на WB6

Добрый день!
Аналогичная проблема появилась на контроллере 6.8.1 на релизе wb-2606.
Примерно раз в неделю перезапускается mosquitto, я бы этого и не замечал, но при этом отваливается z2m.
На контроллере стоит zigbee2mqtt и node-red. wb-zigbee2mqtt удалён (apt remove wb-zigbee2mqtt)
Ситуация с памятью совсем не критическая, занято обычно в районе 30%
Предложение создать /etc/mosquitto/conf.d/30limits.conf справедливо и сейчас?
Этот файл будет иметь приоритет над /usr/share/wb-configs/mosquitto/30limits.conf ?

изображение

приложен диагностический архив, доступен только сотрудникам поддержки
(370,3 КБ)

Та же история. Лимиты помогли, с 100 поднял на 200. Ещё заметил что Z2M падает из-за зависимости к mqtt брокеру (задушил эту зависимость) и не поднимается, так как у демона не прописан reload. mqtt у меня начал рыгать после добавления HA как клиента.

такая же история, такой же вопрос: поднять лимиты?

а как вы задушили зависимость?

Добрый день, всем. Потеряли ваши сообщения из-за публикации в решенной теме, но хорошо что всё-таки нались :slight_smile:

Да, каталог /etc/mosquitto/conf.d/ читается после заводского, поэтому ваши значения переопределят заводские. Имя может быть любым с расширением .conf, рекомендуем своё, например 50-wb-support.conf, чтобы не путать с заводским.

Причина перезапусков известна, это ошибка учёта памяти в mosquitto 2.0.20. Внутренний счётчик памяти брокера постоянно растёт, хотя реальное потребление процесса стабильно (у вас около 7 МБ), и при достижении счётчиком порога memory_limit 100 МБ брокер аварийно завершается. Вы верно заметили, что память системы ни при чём. По вашему архиву всё сходится, сбои 12, 22 и 29 июня, темп заполнения у вас медленный, поэтому и период около недели. Исправление пакета готовится, а пока до его выхода два шага:

  1. zigbee2mqtt переживает перезапуски брокера. В юните есть привязка BindsTo=mosquitto.service, из-за неё systemd останавливает z2m вместе с брокером и обратно не запускает. Снять её через каталог override нельзя, зависимости в drop-in только добавляются, поэтому переопределяем юнит целиком
cp /lib/systemd/system/zigbee2mqtt.service /etc/systemd/system/zigbee2mqtt.service
sed -i '/^BindsTo=/d' /etc/systemd/system/zigbee2mqtt.service
systemctl daemon-reload
systemctl restart zigbee2mqtt

Проверка:

systemctl show zigbee2mqtt -p BindsTo`

Должно вернуться пустое BindsTo=.

  1. Временная мера, чтобы брокер не падал. Создайте /etc/mosquitto/conf.d/50-wb-support.conf со строками:
max_queued_bytes 10485760
memory_limit 500000000

и выполните systemctl restart mosquitto. Показания счётчика в топиках $SYS/broker/heap продолжат расти, это безвредно и уйдёт с обновлением пакета. Когда обновление выйдет, напишем в теме, тогда копию юнита и файл лимитов нужно будет удалить.

Ваши наблюдения верны, уточним детали. Restart=always в юните прописан, но systemd не перезапускает сервисы, остановленные по зависимости, поэтому z2m и не поднимается. И если зависимость снималась через файл в каталоге zigbee2mqtt.service.d, она продолжает действовать, проверьте командой выше. Поднятие лимита со 100 до 200 МБ удваивает интервал между сбоями, но не убирает их, лучше значения из шага 2.

Разработчики пофиксили баг с Mosquitto. Если еще остались вопросы - пишите, постараемся помочь