Проблема потихоньку назрела у всех, похоже. Это уже пятая ветка на данную тему, которую, например, я вынужден искоренять в лоб, запрещая persistence вообще.
База москиты постепенно вырастает до пары гигов и, после ребута (особенно нештатного) демон десятки минут возится с нею, отбивая соединения, вследствие чего работа контроллера парализована на неопределенное время.
Мне это чувствительнейше аукнулось пару раз, когда после ребута контроллер не отправил мне статус датчика до следующего изменения значения.
По мне, надо делать локальную базу кольцевой и небольшого размера, скажем, на пару суток, и иметь возможность задавать максимальный размер. Не знаю, насколько это реализуемо в моските без форка, но - уже реально надо.
Можно на какой-либо из известных мировых языков перевести? втф ыз историческая база?
У меня описанная проблема выражается в бесконечном жевании базы после рестарта, при этом москита откидывает соединения, все ее ждут и плюются ошибками. По удалении db файла все грузится как из коробки.
То, что вы описываете - известный баг в mosquitto. Его относительно недавно исправили.
Обновить mosquitto сейчас всем принудительно одним кликом мышки мы не можем:
у нас установлена пропатченная версия, без патчей тормозят вебсокеты и не работает установка пароля на mqtt
у библиотеки libmosquitto ломается ABI при обновлении, поэтому куча софта на контроллере просто сломается
Чтобы это аккуратно обновить, нужно много работы. Задача для нас приоритетная, мы ей планируем заняться очень скоро.
Этот баг в mosquitto был с рождения. Проблема возникает редко, мне известно случаев 20 появления на многие тысячи инсталляций. Почему она возникает у вас часто, а у кого-то никогда - не знаю. Разбираться не будем, т.к. скоро будем сильно обновлять mosquitto.