16 877
правок
Строка 7: | Строка 7: | ||
Проблема вызвана не оборудованием или программным обеспечением, разработанным компанией Wiren Board, а является следствием бага в MQTT-брокере mosquitto, [[MQTT | используемом]] в контроллере: [https://github.com/eclipse/mosquitto/issues/389 Unexpected growth in the .db file]. | Проблема вызвана не оборудованием или программным обеспечением, разработанным компанией Wiren Board, а является следствием бага в MQTT-брокере mosquitto, [[MQTT | используемом]] в контроллере: [https://github.com/eclipse/mosquitto/issues/389 Unexpected growth in the .db file]. | ||
Эта проблема связана с | Эта проблема связана с локальной базой брокера, который в оригинале называется persistence file. | ||
Если брокер mosquitto не может отправить сообщение кому-то из подключенных клиентов, то он сохраняет сообщение в оперативной памяти. Например, это может случиться, когда настроена пересылка сообщений на другой брокер, подключенный через bridge, но внезапно пропала связь. Когда связь восстановится, сообщения из оперативной памяти будут отправлены. | |||
Однако, если за время отсутствия связи сервис mosquitto был перезапущен,например, если выключался контроллер — эти данные будут утеряны. Чтобы не допустить утерю данных, брокер mosquitto может сохранять такие сообщения не только в оперативную память, но и на накопитель в свою базу данных, откуда потом загрузит информацию при следующем запуске. Подробнее в статье [https://pagefault.blog/2020/02/05/how-to-set-up-persistent-storage-for-mosquitto-mqtt-broker/ How to set up persistent storage for Mosquitto MQTT broker]. | |||
Проверить размер | Базу данных для отложенных сообщения можно включать или выключать в настройках mosquitto. На контроллерах Wiren Board он по умолчанию включен. | ||
Из-за ошибки в коде mosquitto pбаза данных брокера может вырастать до размера 50 Мбайт и более, хотя при нормальной работе он обычно меньше 25 Мбайт. При следующем запуске mosquitto не может обработать такой большой файл и в итоге не запускается. Из-за этого также перестают работать работать веб-интерфейс и отправка MQTT-сообщений. | |||
Ещё база данных брокера большого размера может занять всё свободное место на разделе, из-за чего может перестать работать другой софт контроллера, в том числе VPN и SSH. Также в некоторых версиях ПО контроллера за статусом сервиса mosquitto следил [[watchdog]], и из-за того, что сервис не запускался, watchdog перезапускал контроллер. | |||
Проверить размер базы данных брокера можно командой <code>du -h /var/lib/mosquitto/mosquitto.db</code>. |