WB7 перестал работать. Проц 100%, сервисы в рестарте

Добрый день.
Сегодня ночью перестал работать WB. Не могу понять что не так, прошу помощи. Ведет себя странно. В ближайшие дни никаких манипуляций с ним не проводил. Место на флешке есть
Процессор в 100%.
Вебка открывается, Статус “отключено”. Мост mqtt с HomeAssistant поднят, но данных от него нет.

# df -h

Файловая система Размер Использовано Дост Использовано% Cмонтировано в
/dev/root 976M 677M 233M 75% /
devtmpfs 491M 0 491M 0% /dev
tmpfs 499M 0 499M 0% /dev/shm
tmpfs 200M 3,2M 197M 2% /run
tmpfs 5,0M 0 5,0M 0% /run/lock
/dev/mmcblk0p6 4,9G 1,3G 3,4G 27% /mnt/data
tmpfs 100M 0 100M 0% /run/user/0

# wb-release

Wirenboard release wb-2304 (as stable), target wb7/bullseye

# journalctl -xe

мая 26 08:18:11 wirenboard-ASUOW4IC wb-watch-update[5096]: Error: No such file or directory
мая 26 08:18:11 wirenboard-ASUOW4IC wb-mqtt-adc[5095]: INFO: [mqtt] Default host and port detected, checking if UNIX socket exists on /var/run/mosquitto/mosquitto.sock
мая 26 08:18:11 wirenboard-ASUOW4IC wb-mqtt-adc[5095]: INFO: [mqtt] UNIX socket not found, falling back to TCP connection
мая 26 08:18:11 wirenboard-ASUOW4IC wb-mqtt-adc[5095]: ERROR: [wb-adc] FATAL: Mqtt connect error localhost:1883 : @ wblib/mqtt.cpp:255
мая 26 08:18:11 wirenboard-ASUOW4IC wb-mqtt-adc[5095]: terminate called without an active exception
мая 26 08:18:11 wirenboard-ASUOW4IC systemd[1]: wb-mqtt-adc.service: Main process exited, code=killed, status=6/ABRT
░░ Subject: Unit process exited
░░ Defined-By: systemd
░░ Support: Debian -- User Support
░░
░░ An ExecStart= process belonging to unit wb-mqtt-adc.service has exited.
░░
░░ The process’ exit code is ‘killed’ and its exit status is 6.
мая 26 08:18:11 wirenboard-ASUOW4IC systemd[1]: wb-mqtt-adc.service: Failed with result ‘signal’.
░░ Subject: Unit failed
░░ Defined-By: systemd
░░ Support: Debian -- User Support
░░
░░ The unit wb-mqtt-adc.service has entered the ‘failed’ state with result ‘signal’.
мая 26 08:18:11 wirenboard-ASUOW4IC systemd[1]: wb-mqtt-adc.service: Consumed 2.614s CPU time.
░░ Subject: Потребленные юнитом ресурсы
░░ Defined-By: systemd
░░ Support: Debian -- User Support
░░
░░ Юнит wb-mqtt-adc.service завершен. Приводится статистика по потребленным им ресурсам.
мая 26 08:18:12 wirenboard-ASUOW4IC wb-mqtt-serial[4826]: INFO: [serial config] “WB-MR6C 11” channel “Input 0 Single Press Counter” override property “enabled”
мая 26 08:18:12 wirenboard-ASUOW4IC wb-mqtt-serial[4826]: INFO: [serial config] “WB-MR6C 11” channel “Input 0 Long Press Counter” override property “enabled”
мая 26 08:18:12 wirenboard-ASUOW4IC wb-mqtt-serial[4826]: INFO: [serial config] “WB-MR6C 11” channel “Input 6 Single Press Counter” override property “enabled”
мая 26 08:18:12 wirenboard-ASUOW4IC wb-mqtt-serial[4826]: INFO: [serial config] “WB-MR6C 11” channel “Input 6 Long Press Counter” override property “enabled”
мая 26 08:18:12 wirenboard-ASUOW4IC wb-mqtt-serial[4826]: INFO: [serial config] “WB-MR6C 11” channel “Input 6 Double Press Counter” override property “enabled”
мая 26 08:18:12 wirenboard-ASUOW4IC wb-mqtt-serial[4826]: INFO: [serial config] “WB-MR6C 11” channel “Input 0 Double Press Counter” override property “enabled”
мая 26 08:18:12 wirenboard-ASUOW4IC wb-mqtt-serial[4826]: INFO: [serial config] “WB-MR6C 11” channel “Input 0 Shortlong Press Counter” override property “enabled”
мая 26 08:18:12 wirenboard-ASUOW4IC wb-mqtt-serial[4826]: INFO: [serial config] “WBE2-I-EBUS 12” channel “External Storage Water Temperature” override property “enabled”
мая 26 08:18:12 wirenboard-ASUOW4IC wb-mqtt-serial[4826]: INFO: [mqtt] Default host and port detected, checking if UNIX socket exists on /var/run/mosquitto/mosquitto.sock
мая 26 08:18:12 wirenboard-ASUOW4IC wb-mqtt-serial[4826]: INFO: [mqtt] UNIX socket not found, falling back to TCP connection
мая 26 08:18:12 wirenboard-ASUOW4IC wb-mqtt-serial[4826]: ERROR: [serial] FATAL: Mqtt connect error localhost:1883 : @ wblib/mqtt.cpp:255
мая 26 08:18:12 wirenboard-ASUOW4IC systemd[1]: wb-mqtt-serial.service: Main process exited, code=exited, status=1/FAILURE
░░ Subject: Unit process exited
░░ Defined-By: systemd
░░ Support: Debian -- User Support
░░
░░ An ExecStart= process belonging to unit wb-mqtt-serial.service has exited.
░░
░░ The process’ exit code is ‘exited’ and its exit status is 1.
мая 26 08:18:12 wirenboard-ASUOW4IC systemd[1]: wb-mqtt-serial.service: Failed with result ‘exit-code’.
░░ Subject: Unit failed
░░ Defined-By: systemd
░░ Support: Debian -- User Support
░░
░░ The unit wb-mqtt-serial.service has entered the ‘failed’ state with result ‘exit-code’.
мая 26 08:18:12 wirenboard-ASUOW4IC systemd[1]: wb-mqtt-serial.service: Consumed 2.017s CPU time.
░░ Subject: Потребленные юнитом ресурсы
░░ Defined-By: systemd
░░ Support: Debian -- User Support
░░
░░ Юнит wb-mqtt-serial.service завершен. Приводится статистика по потребленным им ресурсам.

# systemctl status wb-mqtt-nm-helper.service

● wb-mqtt-nm-helper.service - Virtual MQTT devices management service for Network Manager connections
Loaded: loaded (/lib/systemd/system/wb-mqtt-nm-helper.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Fri 2023-05-26 07:53:43 UTC; 29min ago
Process: 5059 ExecStart=/usr/bin/wb-mqtt-nm-helper (code=exited, status=1/FAILURE)
Main PID: 5059 (code=exited, status=1/FAILURE)
CPU: 1.610s

мая 26 07:53:42 wirenboard-ASUOW4IC wb-mqtt-nm-helper[5059]: File “/usr/lib/python3/dist-packages/paho_socket/client.py”, line 45, in sock_connect
мая 26 07:53:42 wirenboard-ASUOW4IC wb-mqtt-nm-helper[5059]: return self.reconnect()
мая 26 07:53:42 wirenboard-ASUOW4IC wb-mqtt-nm-helper[5059]: File “/usr/lib/python3/dist-packages/paho/mqtt/client.py”, line 1075, in reconnect
мая 26 07:53:42 wirenboard-ASUOW4IC wb-mqtt-nm-helper[5059]: sock = self._create_socket_connection()
мая 26 07:53:42 wirenboard-ASUOW4IC wb-mqtt-nm-helper[5059]: File “/usr/lib/python3/dist-packages/paho_socket/client.py”, line 105, in _create_socket_connection
мая 26 07:53:42 wirenboard-ASUOW4IC wb-mqtt-nm-helper[5059]: raise ConnectionError(“Socket connection failed.”) from ex
мая 26 07:53:42 wirenboard-ASUOW4IC wb-mqtt-nm-helper[5059]: ConnectionError: Socket connection failed.
мая 26 07:53:43 wirenboard-ASUOW4IC systemd[1]: wb-mqtt-nm-helper.service: Main process exited, code=exited, status=1/FAILURE
мая 26 07:53:43 wirenboard-ASUOW4IC systemd[1]: wb-mqtt-nm-helper.service: Failed with result ‘exit-code’.
мая 26 07:53:43 wirenboard-ASUOW4IC systemd[1]: wb-mqtt-nm-helper.service: Consumed 1.610s CPU time.

cat /var/log/messages - последняя запись месяц назад (почему?)

Некоторые сервисы, которые наблюдал, стартуют, работают пару секунд, уходят в рестарт. (wb-mqtt-serial.service, например)
Есть ошибка: wb-mqtt-serial[4826]: ERROR: [serial] FATAL: Mqtt connect error localhost:1883 : @ wblib/mqtt.cpp:255
localhost резолвится нормально.


Добрый день.
Судя по поведению - брокер ест ресурсы. Отключите

persistence false

в
/etc/mosquitto/mosquitto.conf
и перезапустите контроллер.

Добрый день! Скачайте опжалуйста в веб-интерфейсе диагностический архив и приложите здесь. Там больше логов, может быть по ним нам удастся понять, в чём дело.

persistence false

Да, так и есть. Спасибо.

Для себя открыл journalctl, до этого негодовал почему нет логов в /var/log/.
Теперь обнаружено, что systemd-journal ест 40% cpu. Там слишком большое множество записей от wb-map3e:

journalctl | grep wb-map3e

мая 26 21:22:49 wirenboard-ASUOW4IC wb-mqtt-serial[32437]: DEBUG: [serial port driver] channel ‘Q L3’ of device ‘wb-map3e_132’ ← -171.76, error: “”
мая 26 21:22:49 wirenboard-ASUOW4IC wb-mqtt-serial[32437]: DEBUG: [serial port driver] channel ‘Total S’ of device ‘wb-map3e_132’ ← 429.18, error: “”
мая 26 21:22:49 wirenboard-ASUOW4IC wb-mqtt-serial[32437]: DEBUG: [serial port driver] channel ‘S L2’ of device ‘wb-map3e_132’ ← 17.31, error: “”
мая 26 21:22:49 wirenboard-ASUOW4IC wb-mqtt-serial[32437]: DEBUG: [serial port driver] channel ‘S L3’ of device ‘wb-map3e_132’ ← 405.15, error: “”
мая 26 21:22:49 wirenboard-ASUOW4IC wb-mqtt-serial[32437]: DEBUG: [serial port driver] channel ‘Urms L1’ of device ‘wb-map3e_132’ ← 234.457, error: “”
мая 26 21:22:49 wirenboard-ASUOW4IC wb-mqtt-serial[32437]: DEBUG: [serial port driver] channel ‘Urms L2’ of device ‘wb-map3e_132’ ← 224.022, error: “”
мая 26 21:22:49 wirenboard-ASUOW4IC wb-mqtt-serial[32437]: DEBUG: [serial port driver] channel ‘Urms L3’ of device ‘wb-map3e_132’ ← 229.848, error: “”
мая 26 21:22:49 wirenboard-ASUOW4IC wb-mqtt-serial[32437]: DEBUG: [serial port driver] channel ‘Irms L3’ of device ‘wb-map3e_132’ ← 1.7728, error: “”
мая 26 21:22:49 wirenboard-ASUOW4IC wb-mqtt-serial[32437]: DEBUG: [serial port driver] channel ‘Upeak L2’ of device ‘wb-map3e_132’ ← 319.06, error: “”
мая 26 21:22:49 wirenboard-ASUOW4IC wb-mqtt-serial[32437]: DEBUG: [serial port driver] channel ‘Upeak L3’ of device ‘wb-map3e_132’ ← -324.9, error: “”

Что не так с настройкой wb-map3e, что она генерит столько сообщений error?
В journalctl попадают все полученные данные по всем интерфейсам от всех девайсов?

Повторю: пожалуйста, приложите диагностический архив.

скорее всего вы включили отладку в драйвере последовательных портов (wb-mqtt-serial.conf).

нет, туда попадают логи, а не данные.

Спасибо, но проблема топика решена изменением в mosquitto.conf строчки ‘persistence false’.

Отключил в конфиге. Да, systemd-journal больше не ест столько ресурсов.
Хотя не припоминаю, чтобы я его включал в конфиге.
Спасибо.

Для того чтобы посмотреть в чем причина - покажите вывод

ls -l /var/lib/mosquitto/

Ну и выложите сам файл /var/lib/mosquitto/mosquitto.db

Ребят, говорю же, что проблема решена. Все, вопрос закрыт.

ls -lh /var/lib/mosquitto/

ls -lh /var/lib/mosquitto/
итого 81M
-rw------- 1 mosquitto mosquitto 81M мая 26 09:13 mosquitto.db

=====

Для понимания как словил проблему. Видимо, был скачок напряжения. Несмотря на то, что все на бесперебойниках, сервер, на котором висел HomeAssistant (связанный с WB бриджом mqtt) повис по железу. Wirenboard вошел в это состояние, когда Mosquitto как бы стартует, но не работает, жрет 100%, а другие сервисы, зависимые от него, глючат, перезагружаются и т.д.
Проблема устранилась отключением ‘persistence’ (режим, в котором Mosquitto сохраняет неотправленные данные для клиентов, чтобы передать их потом).

1 Like

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

Если использовать мост (мосты), то при настройке QOS больше 0 - крайне желательно явно граничивать количество хранимых сообщений. Но в общем понятно, благодарю за подробное объяснение.
Ну и сам битый файл удалите, а то прилетит обновление - и он подхватится.

Эта тема была автоматически закрыта через 7 дней после последнего ответа. В ней больше нельзя отвечать.