Серьезная проблема с базой mosquitto

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

База москиты постепенно вырастает до пары гигов и, после ребута (особенно нештатного) демон десятки минут возится с нею, отбивая соединения, вследствие чего работа контроллера парализована на неопределенное время.

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

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

Историческая база к persistenc отношения не имеет вообще.

Можно на какой-либо из известных мировых языков перевести? :slight_smile: втф ыз историческая база?

У меня описанная проблема выражается в бесконечном жевании базы после рестарта, при этом москита откидывает соединения, все ее ждут и плюются ошибками. По удалении db файла все грузится как из коробки.

Историческая - служит для хранения записанных данных. Обрабатывается wb-mqtt-db, sqlite3 и располагается в /mnt/data/var/lib/wirenboard/db/data.db
Вот это:
https://wirenboard.com/wiki/Веб-интерфейс_Wiren_Board#History_.28.D0.98.D1.81.D1.82.D0.BE.D1.80.D0.B8.D1.8F_.D0.BF.D0.BE.D0.BA.D0.B0.D0.B7.D0.B0.D0.BD.D0.B8.D0.B9.29

База mosquitto - “этодругое!”.
Лежит в /var/lib/mosquitto/ и служит для хранения значений брокера.

Гм, тогда я, вероятно, не туда вперся, вследствие несколько нечленовразумительных формулировок.
Надеюсь, «историческая» база контроллер не вешает?

С москитной надо прямо вот разбираться, проблема нешуточная и не дает работать.

Нет, но при изрядном количестве значений после перезапуска может, как выяснилось не вестись в нее запись минут 15-20.

Отключить ее можно? Вебальником пользуюсь только при отладке.
Или по крону чистить, если нельзя.

Да, по умолчанию от нее ничего не зависит, кроме истории в веб-интерфейсе.

systemctl disable wb-mqtt-db
systemctl stop wb-mqtt-db

Отлично, проблемой меньше.

А вот про москитную базу я новое для себя нагуглил.

Похоже, мы набиваем ее неправильно. Надо подумать.

1 лайк

То, что вы описываете - известный баг в mosquitto. Его относительно недавно исправили.

Обновить mosquitto сейчас всем принудительно одним кликом мышки мы не можем:

  • у нас установлена пропатченная версия, без патчей тормозят вебсокеты и не работает установка пароля на mqtt
  • у библиотеки libmosquitto ломается ABI при обновлении, поэтому куча софта на контроллере просто сломается

Чтобы это аккуратно обновить, нужно много работы. Задача для нас приоритетная, мы ей планируем заняться очень скоро.

Этот баг в mosquitto был с рождения. Проблема возникает редко, мне известно случаев 20 появления на многие тысячи инсталляций. Почему она возникает у вас часто, а у кого-то никогда - не знаю. Разбираться не будем, т.к. скоро будем сильно обновлять mosquitto.

Ну не у многих пока столько контроллеров и датчиков на каждом. Статистика.

Жду как соловей! Критично.

Зы. Может таки форк? Если столько патчей наросло уже.