Зависает контроллер через несколько дней

Раз в несколько дней зависает контроллер помогает перезагрузка, перед этим сильно возрастает нагрузка по процессору процесса wb-rules больше 100%

23487 root 20 0 1071308 38056 7700 S 119,9 1,8 1792:16 wb-rules

systemctl status  wb-rules
● wb-rules.service - MQTT Rule engine for Wiren Board
     Loaded: loaded (/lib/systemd/system/wb-rules.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2023-08-29 22:23:57 MSK; 4 days ago
   Main PID: 23487 (wb-rules)
      Tasks: 34 (limit: 4790)
     Memory: 41.9M
        CPU: 1d 23h 22min 38.018s
     CGroup: /system.slice/wb-rules.service
             ├─ 4913 /bin/sh -c udevadm info --query=property /sys/class/power_supply/axp20x-battery
             ├─ 4915 /bin/sh -c udevadm info --query=property /sys/class/power_supply/vin
             ├─ 4916 udevadm info --query=property /sys/class/power_supply/vin
             ├─ 4917 udevadm info --query=property /sys/class/power_supply/axp20x-battery
             └─23487 /usr/bin/wb-rules -syslog -editdir /etc/wb-rules/ /usr/share/wb-rules-system/rules/ /etc/wb-rules/ /usr/share/wb-rules/

сен 01 00:28:55 wirenboard-A6GMQJIF wb-rules[23487]: ERROR: invalid control definition
сен 01 00:28:55 wirenboard-A6GMQJIF wb-rules[23487]: ERROR: [rule error] ECMAScript error: TypeError: type error (rc -105)
                                                                anon  native strict preventsyield
                                                                anon /usr/share/wb-rules-system/scripts/lib.js:113 preventsyield
                                                                anon /usr/share/wb-rules-system/rules/wb-zigbee2mqtt.js:155 preventsyield
                                                                parse  native strict preventsyield
                                                                anon /usr/share/wb-rules-system/rules/wb-zigbee2mqtt.js:167 preventsyield
сен 01 00:28:55 wirenboard-A6GMQJIF wb-rules[23487]: ERROR: invalid control definition
сен 01 00:28:55 wirenboard-A6GMQJIF wb-rules[23487]: ERROR: [rule error] ECMAScript error: TypeError: type error (rc -105)
                                                                anon  native strict preventsyield
                                                                anon /usr/share/wb-rules-system/scripts/lib.js:113 preventsyield
                                                                anon /usr/share/wb-rules-system/rules/wb-zigbee2mqtt.js:155 preventsyield
                                                                parse  native strict preventsyield
                                                                anon /usr/share/wb-rules-system/rules/wb-zigbee2mqtt.js:167 preventsyield
сен 02 23:15:37 wirenboard-A6GMQJIF wb-rules[23487]: WARNING: [wbgo_mqtt] MQTT connection lost: pingresp not received, disconnecting
сен 02 23:15:37 wirenboard-A6GMQJIF wb-rules[23487]: WARNING: [wbgo_mqtt] Cleaning up token queue
сен 02 23:15:37 wirenboard-A6GMQJIF wb-rules[23487]: INFO: [wbgo_mqtt] wb-rules-engine-wirenboard-A6GMQJIF-23487: MQTT connection established
сен 02 23:16:36 wirenboard-A6GMQJIF wb-rules[23487]: WARNING: [wbgo_mqtt] MQTT connection lost: pingresp not received, disconnecting
сен 02 23:16:36 wirenboard-A6GMQJIF wb-rules[23487]: INFO: [wbgo_mqtt] wb-rules-engine-wirenboard-A6GMQJIF-23487: MQTT connection established
сен 02 23:16:37 wirenboard-A6GMQJIF wb-rules[23487]: WARNING: [wbgo_mqtt] Cleaning up token queue

log_20230902T232054_wb_rules.log (18,1 КБ)

Здравствуйте.
Пришлите, пожалуйста, диагностический архив. Укажите, какие сторонние программы установлены. Также опишите, что делали/добавляли в систему до появления данной проблемы. Вполне возможно, что есть ошибка в скриптах.

Высылаю диагностический архив

  1. Сторонние программы.
    Docker, из скриптов стоит wb-engine.js который конвертирует топики для Homeassistant.

  2. Каких то действий не производил, переодически заходил в консоль update & upgrade. Возможно все началось с каким то из больших обновлений.

Вчера опять спустя 12 дней контроллер завис, выжрал всю память и процессор загружен, пока пытался на него попасть по ssh и web что бы выгрузить логи он самостоятельно отдуплился. Возможно перезагрузился какой то сервис который вешал.

Надо определить что это за ошибка в скриптах. Сделайте резервную копию wb-engine.js, уберите пока его из правил и покажите вывод команды:

systemctl status wb-rules

● wb-rules.service - MQTT Rule engine for Wiren Board
Loaded: loaded (/lib/systemd/system/wb-rules.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2023-09-12 12:10:27 MSK; 2min 34s ago
Main PID: 18731 (wb-rules)
Tasks: 20 (limit: 4790)
Memory: 18.0M
CPU: 1min 11.475s
CGroup: /system.slice/wb-rules.service
└─18731 /usr/bin/wb-rules -syslog -editdir /etc/wb-rules/ /usr/share/wb-rules-system/rules/ /etc/wb-rules/ /usr/share/wb-rules/

сен 12 12:11:11 wirenboard-A6GMQJIF wb-rules[18731]: INFO: [rule info] wb-engine init
сен 12 12:11:12 wirenboard-A6GMQJIF wb-rules[18731]: INFO: reloading file: /etc/wb-rules/wb-engine.js
сен 12 12:11:25 wirenboard-A6GMQJIF wb-rules[18731]: INFO: [rule info] devicesInit
сен 12 12:11:25 wirenboard-A6GMQJIF wb-rules[18731]: INFO: [rule info] scriptsInit
сен 12 12:11:25 wirenboard-A6GMQJIF wb-rules[18731]: INFO: [rule info] scriptMotionInit[script_motion_prihojaya] enabled=true
сен 12 12:11:25 wirenboard-A6GMQJIF wb-rules[18731]: INFO: [rule info] scriptThermostatInit[script_thermostat_zal]: mode=heat, state=idle, target=24
сен 12 12:11:25 wirenboard-A6GMQJIF wb-rules[18731]: INFO: [rule info] scriptThermostatInit[script_thermostat_kuhnya]: mode=heat, state=idle, target=24
сен 12 12:11:25 wirenboard-A6GMQJIF wb-rules[18731]: INFO: [rule info] scriptThermostatInit[script_thermostat_spalnya]: mode=heat, state=idle, target=24
сен 12 12:11:25 wirenboard-A6GMQJIF wb-rules[18731]: INFO: [rule info] wb-engine init finished
сен 12 12:11:40 wirenboard-A6GMQJIF wb-rules[18731]: INFO: LiveRemoveFile: /etc/wb-rules/wb-engine.js

Вижу, что ошибок сейчас нет. Опишите, что вы сделали и как сейчас ведет себя wb-rules?

Подождал еще несколько дней опять выело оперативку

systemctl status wb-rules
● wb-rules.service - MQTT Rule engine for Wiren Board
Loaded: loaded (/lib/systemd/system/wb-rules.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2023-09-13 18:34:46 MSK; 6 days ago
Main PID: 2621 (wb-rules)
Tasks: 41 (limit: 4790)
Memory: 1.2G
CPU: 4d 9h 39min 41.363s
CGroup: /system.slice/wb-rules.service
├─ 2621 /usr/bin/wb-rules -syslog -editdir /etc/wb-rules/ /usr/share/wb-rules-system/rules/ /etc/wb-rules/ /usr/share/wb-rules/
├─31438 [sh]
└─31440 [wb-rules]

сен 19 21:27:55 wirenboard-A6GMQJIF wb-rules[2621]: ERROR: [wbgo_mqtt] MQTT error: connection lost before Subscribe completed
сен 19 21:28:18 wirenboard-A6GMQJIF wb-rules[2621]: ERROR: [wbgo_mqtt] MQTT token wait timeout: *mqtt.SubscribeToken (&{{{{0 0} 0 0 0 0} 0x12980400 } [zigbee2mqtt/danalock] map[] 30017})
сен 19 21:28:29 wirenboard-A6GMQJIF wb-rules[2621]: ERROR: [wbgo_mqtt] MQTT token wait timeout: *mqtt.SubscribeToken (&{{{{0 0} 0 0 0 0} 0x129805c0 } [zigbee2mqtt/danalock] map[] 30018})
сен 19 21:28:39 wirenboard-A6GMQJIF wb-rules[2621]: ERROR: [wbgo_mqtt] MQTT token wait timeout: *mqtt.SubscribeToken (&{{{{0 0} 0 0 0 0} 0x12980600 } [zigbee2mqtt/danalock] map[] 30019})
сен 19 21:28:49 wirenboard-A6GMQJIF wb-rules[2621]: ERROR: [wbgo_mqtt] MQTT token wait timeout: *mqtt.SubscribeToken (&{{{{0 0} 0 0 0 0} 0x12980640 } [zigbee2mqtt/danalock] map[] 30020})
сен 19 21:28:59 wirenboard-A6GMQJIF wb-rules[2621]: ERROR: [wbgo_mqtt] MQTT token wait timeout: *mqtt.SubscribeToken (&{{{{0 0} 0 0 0 0} 0x12980840 } [zigbee2mqtt/danalock] map[] 30021})
сен 19 21:29:10 wirenboard-A6GMQJIF wb-rules[2621]: ERROR: [wbgo_mqtt] MQTT token wait timeout: *mqtt.SubscribeToken (&{{{{0 0} 0 0 0 0} 0x12980880 } [zigbee2mqtt/danalock] map[] 30022})
сен 19 21:29:20 wirenboard-A6GMQJIF wb-rules[2621]: ERROR: [wbgo_mqtt] MQTT token wait timeout: *mqtt.SubscribeToken (&{{{{0 0} 0 0 0 0} 0x129808c0 } [zigbee2mqtt/danalock] map[] 30023})
сен 19 21:29:30 wirenboard-A6GMQJIF wb-rules[2621]: ERROR: [wbgo_mqtt] MQTT token wait timeout: *mqtt.SubscribeToken (&{{{{0 0} 0 0 0 0} 0x12980b40 } [zigbee2mqtt/danalock] map[] 30024})
сен 19 21:29:40 wirenboard-A6GMQJIF wb-rules[2621]: ERROR: [wbgo_mqtt] MQTT token wait timeout: *mqtt.SubscribeToken (&{{{{0 0} 0 0 0 0} 0x12980b80 } [zigbee2mqtt/danalock] map[] 30025})
root@wirenboard-A6GMQJIF:~#

Пока сделал так
В /etc/mosquitto/mosquitto.conf поменять persistence true на persistence false

Наблюдаю

При возникновении данной проблемы делайте диагностический архив и присылайте, чтоб было больше актуальной информации.

Стабильно теряет связь с брокером. Пришлите лог wb-rules и mosquitto.

1 Like

Архив.zip (15,7 КБ)
высылаю логи

Уточните, данные логи сняты при “зависании”? По zigbee вижу:

error 2023-09-13 18:33:10: Not connected to MQTT server!

Вопрос: zigbee устройства доступны? Опишите, какие zigbee устройства у вас в системе. Проверьте их доступность.