Перезагрузка wb-rules 1-2 раза в день из-за wbgo-private

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

29-06-2025

Добрый день!

Правильно ли я понимаю, что перезагрузка контроллера происходит после появления правил? Если да, прошу прислать содержимое правил — постараюсь воспроизвести ситуацию и разобраться в причине.

Перезагрузка воспроизводилась и со всеми выключенными правилами. Но сами правила я не удалял, а просто выключил их в контроллере.

После этого я пересоздал правила через интерфейс контроллера.

Могу направить код правил в личные сообщения (в них есть персональные данные не для публичного распространения)

Добрый день!

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

Только что опять поймал рестарт wb-rules и mqtt со всеми выключенными правилами, в логе ничего примечательного, но смутило немного вот это вот:

01-07-2025 22:00:11.047 [mosquitto] 1751396411: Saving in-memory database to /var/lib/mosquitto//mosquitto.db.

а что за “//” в пути к файлу?

Добрый день!

Двойной слэш // перед mosquitto.db — не является ошибкой, это допустимо в путях Linux и никак не влияет на работу системы.

Если проблема сохраняется, похоже, остаётся выполнить factory reset и поэтапно восстановить настройки из резервной копии.

03-07-2025 01:02:34.296 [wb-rules] github.com/wirenboard/wb-rules/wbrules.(*RuleEngine).DefineMqttTracker.(*RuleEngine).newTrackHandler.func2({{0x1260b20, 0x1f}, {0xde5d40, 0x5}, 0x0, 0x1})
03-07-2025 01:02:34.296 [wb-rules] goroutine 53 [running]:
03-07-2025 01:02:34.293 [wb-rules] fatal error: concurrent map iteration and map write
03-07-2025 01:02:14.105 [wb-cloud-agent-telegraf] 2025-07-02T22:02:14Z E! [agent] Error writing to outputs.influxdb_v2::influx-wbc: failed to send metrics to any configured server(s)
03-07-2025 01:02:14.086 [wb-cloud-agent-telegraf] 2025-07-02T22:02:14Z E! [outputs.influxdb_v2::influx-wbc] When writing to [https://influx.wirenboard.cloud]: 521 : 521
03-07-2025 01:01:05.013 [mosquitto] 1751493665: Saving in-memory database to /var/lib/mosquitto//mosquitto.db.
03-07-2025 01:00:11.871 [wb-cloud-agent-telegraf] 2025-07-02T22:00:11Z E! [agent] Error writing to outputs.influxdb_v2::influx-wbc: failed to send metrics to any configured server(s)
03-07-2025 01:00:11.868 [wb-cloud-agent-telegraf] 2025-07-02T22:00:11Z E! [outputs.influxdb_v2::influx-wbc] When writing to [https://influx.wirenboard.cloud]: 521 : 521

Перед рестартом движка замечены еще следующие ошибки, являются ли они критичными?

Контроллер не сбрасывал еще, уж очень этого не хочется делать…

Добрый день!

Это не критичные ошибки для работы самого контроллера — они связаны, скорее, с взаимодействием с облаком и не влияют на основную функциональность устройства.

Также продолжаются где-то раз в день рестарты - но сегодня немного нового в логах появилось (упоминание про out of memory):

05-07-2025 00:43:15.523 [wb-rules] INFO: all rule files are loaded
05-07-2025 00:43:15.285 [wb-rules] INFO: [rule info] Weather script updated (Yandex)!
05-07-2025 00:43:15.028 [wb-rules] INFO: [rule info] Message sent successfully: �� Telegram уведомления запущены ��
05-07-2025 00:43:13.316 [wb-mqtt-db.service] WARNING: [conventions] converting empty value to boolean "false"
05-07-2025 00:43:10.087 [wb-rules] WARNING: [rule warning] DAC: no config file
05-07-2025 00:43:08.046 [wb-rules] INFO: [engine] Starting sync loop
05-07-2025 00:43:08.045 [wb-rules] INFO: the engine is ready
05-07-2025 00:43:08.044 [wb-rules] INFO: [engine] Starting main loop
05-07-2025 00:43:07.939 [wb-rules] INFO: [wbgo_mqtt] wb-rules-engine-wirenboard-AYDAM3LH-17557: MQTT connection established
05-07-2025 00:43:07.938 [mosquitto] 1751665387: New client connected from /var/run/mosquitto/mosquitto.sock:0 as wb-rules-engine-wirenboard-AYDAM3LH-17557 (p2, c1, k30).
05-07-2025 00:43:07.937 [mosquitto] 1751665387: New connection from /var/run/mosquitto/mosquitto.sock:0 on port 0.
05-07-2025 00:43:07.927 [wb-rules] INFO: [rule info] using file /var/lib/wirenboard/wbrules-persistent.db for persistent DB
05-07-2025 00:43:07.898 [wb-rules] INFO: driver is ready
05-07-2025 00:43:07.472 [spruthub] Starting Spruthub …
05-07-2025 00:43:07.094 [mosquitto] 1751665387: Client auto-CFD3B7B7-596B-6254-5CE8-BFF9E476E05C disconnected.
05-07-2025 00:43:07.093 [mosquitto] 1751665387: New client connected from /var/run/mosquitto/mosquitto.sock:0 as auto-CFD3B7B7-596B-6254-5CE8-BFF9E476E05C (p2, c1, k60).
05-07-2025 00:43:07.090 [mosquitto] 1751665387: New connection from /var/run/mosquitto/mosquitto.sock:0 on port 0.
05-07-2025 00:43:05.155 [wb-rules] INFO: wait for driver to become ready
05-07-2025 00:43:05.142 [wb-rules] INFO: driver loop is started
05-07-2025 00:43:05.088 [wb-rules] INFO: [wbgo_mqtt] rules-wirenboard-AYDAM3LH-17557: MQTT connection established
05-07-2025 00:43:05.083 [mosquitto] 1751665385: New client connected from /var/run/mosquitto/mosquitto.sock:0 as rules-wirenboard-AYDAM3LH-17557 (p2, c1, k30).
05-07-2025 00:43:05.079 [mosquitto] 1751665385: New connection from /var/run/mosquitto/mosquitto.sock:0 on port 0.
05-07-2025 00:43:05.054 [wb-rules] INFO: driver is created
05-07-2025 00:43:05.015 [wb-rules] INFO: broker URL is default and mosquitto socket detected, trying to connect via it
05-07-2025 00:43:04.415 [spruthub] Backuping data …
05-07-2025 00:43:04.277 [init.scope] Started MQTT Rule engine for Wiren Board.
05-07-2025 00:43:04.253 [init.scope] wb-rules.service: Consumed 8h 30min 17.068s CPU time.
05-07-2025 00:43:04.252 [init.scope] Stopped MQTT Rule engine for Wiren Board.
05-07-2025 00:43:04.250 [init.scope] wb-rules.service: Scheduled restart job, restart counter is at 16.
05-07-2025 00:43:04.220 [init.scope] Started SprutHub.
05-07-2025 00:43:04.153 [init.scope] spruthub.service: Consumed 2h 13min 1.587s CPU time.
05-07-2025 00:43:04.152 [init.scope] Stopped SprutHub.
05-07-2025 00:43:04.147 [init.scope] spruthub.service: Scheduled restart job, restart counter is at 1.
05-07-2025 00:43:04.125 [mosquitto] 1751665383: New client connected from ::ffff:127.0.0.1:33870 as wb-mqtt-homeui-9r2eeAE131 (p2, c1, k60, u’strigoy’).
05-07-2025 00:43:04.123 [mosquitto] 1751665383: Client wb-rules-engine-wirenboard-AYDAM3LH-23809 disconnected: Broken pipe.
05-07-2025 00:43:04.121 [mosquitto] 1751665382: Client rules-wirenboard-AYDAM3LH-23809 disconnected due to out of memory.
05-07-2025 00:43:04.113 [wb-rules] github.com/wirenboard/wb-rules/wbrules/esengine.go:2177 +0x32c
05-07-2025 00:43:04.113 [wb-rules] created by github.com/wirenboard/wb-rules/wbrules.(*ESEngine).esWbSpawn in goroutine 68
05-07-2025 00:43:04.113 [wb-rules] github.com/wirenboard/wb-rules/wbrules/esengine.go:2184 +0x2dc

05-07-2025 00:43:02.906 [wb-rules] github.com/wirenboard/wbgo-private.(*PahoMQTTClient).publish(0xda2040, {{0x12cfb90, 0x23}, {0x127ee50, 0x10}, 0x1, 0x1})
05-07-2025 00:43:02.906 [wb-rules] goroutine 50 [running]:
05-07-2025 00:43:02.906 [wb-rules] fatal error: concurrent map writes
05-07-2025 00:43:02.863 [init.scope] spruthub.service: A process of this unit has been killed by the OOM killer.
05-07-2025 00:43:02.770 [mosquitto] 1751665326: Client wb-mqtt-homeui-1EOTl6yDpH closed its connection.
05-07-2025 00:43:02.730 [wb-cloud-agent-frpc] e[1;34m<6>[I] [service.go:212] try to reconnect to server…e[0m
05-07-2025 00:43:02.730 [wb-cloud-agent-frpc] e[1;34m<6>[I] [visitor_manager.go:79] gracefully shutdown visitor managere[0m
05-07-2025 00:43:02.730 [wb-cloud-agent-frpc] e[1;34m<6>[I] [control.go:253] control writer is closinge[0m
05-07-2025 00:43:02.730 [wb-cloud-agent-frpc] e[1;34m<6>[I] [proxy_manager.go:156] proxy added: [AYDAM3LH.ssh AYDAM3LH.http]e[0m
05-07-2025 00:43:02.730 [wb-cloud-agent-frpc] e[1;34m<6>[I] [service.go:299] login to server success, get run id e[0m
05-07-2025 00:43:02.730 [wb-cloud-agent-frpc] e[1;34m<6>[I] [service.go:212] [fdb7bbf90356de76] try to reconnect to server…e[0m
05-07-2025 00:43:02.730 [wb-cloud-agent-frpc] e[1;34m<6>[I] [visitor_manager.go:79] [fdb7bbf90356de76] gracefully shutdown visitor managere[0m
05-07-2025 00:43:02.730 [wb-cloud-agent-frpc] e[1;33m<4>[W] [control.go:258] [fdb7bbf90356de76] write message to control connection error: stream closede[0m
05-07-2025 00:43:02.728 oom_reaper: reaped process 17698 (java), now anon-rss:0kB, file-rss:0kB, shmem-rss:0kB
05-07-2025 00:43:02.721 Out of memory: Killed process 17698 (java) total-vm:559612kB, anon-rss:371016kB, file-rss:0kB, shmem-rss:0kB, UID:0 pgtables:428kB oom_score_adj:0
05-07-2025 00:43:02.720 oom-kill:constraint=CONSTRAINT_NONE,nodemask=(null),cpuset=init.scope,mems_allowed=0,global_oom,task_memcg=/system.slice/spruthub.service,task=java,pid=17698,uid=0

05-07-2025 00:43:01.974 active_anon:51399 inactive_anon:179227 isolated_anon:0
active_file:314 inactive_file:1867 isolated_file:0
unevictable:354 dirty:0 writeback:0
slab_reclaimable:5088 slab_unreclaimable:7409
mapped:1131 shmem:754 pagetables:1960 bounce:0
free:1379 free_pcp:887 free_cma:21
05-07-2025 00:43:01.973 Mem-Info:
05-07-2025 00:43:01.973 r7:10c5387d r6:ffffffff r5:20030030 r4:b6e62932
05-07-2025 00:43:01.956 5fe0: b6f68714 be981d60 b6e62933 b6e62932 20030030 ffffffff
05-07-2025 00:43:01.928 5fc0: 00000007 00000006 00000000 006695f8 00000000 00100000 be981de8 be981d73
05-07-2025 00:43:01.928 5fa0: 005fb6b8 00000044 00000008 00000001
05-07-2025 00:43:01.927 Exception stack(0xc1535fb0 to 0xc1535ff8)
05-07-2025 00:43:01.927 [] (do_PrefetchAbort) from [] (ret_from_exception+0x0/0x10)
05-07-2025 00:43:01.904 r4:00000007
05-07-2025 00:43:01.877 r10:be981de8 r9:00100000 r8:10c5387d r7:c100b138 r6:c1535fb0 r5:b6e62932
05-07-2025 00:43:01.876 [] (do_page_fault) from [] (do_PrefetchAbort+0x48/0x98)
05-07-2025 00:43:01.875 r4:c1535fb0
05-07-2025 00:43:01.874 r10:00000254 r9:00000000 r8:c1440048 r7:c1440000 r6:80000007 r5:b6e62932
05-07-2025 00:43:01.874 [] (handle_mm_fault) from [] (do_page_fault+0x120/0x2e0)
05-07-2025 00:43:01.873 r7:00000040 r6:c02a038c r5:b6e62000 r4:00000254
05-07-2025 00:43:01.872 [] (__do_fault) from [] (handle_mm_fault+0xb08/0xfcc)
05-07-2025 00:43:01.840 r5:c14423c0 r4:c1535ed0
05-07-2025 00:43:01.838 [] (ext4_filemap_fault) from [] (__do_fault+0x48/0x134)
05-07-2025 00:43:01.838 r4:c28249e8
05-07-2025 00:43:01.790 r10:c1535ed0 r9:00000d73 r8:c1535fb0 r7:00000040 r6:c02a038c r5:c1535ed0
05-07-2025 00:43:01.789 [] (filemap_fault) from [] (ext4_filemap_fault+0x38/0x4c)
05-07-2025 00:43:01.766 r4:c2824a00
05-07-2025 00:43:01.737 r10:a0030113 r9:c25c8d80 r8:000000cd r7:c2824b08 r6:c1535ed0 r5:c25c8d80
05-07-2025 00:43:01.737 [] (pagecache_get_page) from [] (filemap_fault+0x760/0x944)
05-07-2025 00:43:01.688 r4:ea180007
05-07-2025 00:43:01.688 r10:61c88647 r9:c1005864 r8:000000cd r7:c2824b08 r6:00100cca r5:00000044
05-07-2025 00:43:01.687 [] (__alloc_pages_nodemask) from [] (pagecache_get_page+0x18c/0x3a0)
05-07-2025 00:43:01.658 r6:c10055f8 r5:c100503c r4:00000000
05-07-2025 00:43:01.657 [] (out_of_memory) from [] (__alloc_pages_nodemask+0xfd8/0x11b4)
05-07-2025 00:43:01.657 r7:c115a190 r6:c1009140 r5:c1535d78 r4:cb048740
05-07-2025 00:43:01.656 [] (oom_kill_process) from [] (out_of_memory+0x1b4/0x3ac)
05-07-2025 00:43:01.584 r7:000004b8 r6:c0d57c38 r5:c1535d78 r4:cb048740
05-07-2025 00:43:01.583 [] (dump_header) from [] (oom_kill_process+0x1c8/0x1d4)
05-07-2025 00:43:01.547 r9:00000000 r8:00100cca r7:000004b8 r6:c0d57c38 r5:cb048740 r4:c1535d78
05-07-2025 00:43:01.481 [] (dump_stack) from [] (dump_header+0x68/0x1f8)
05-07-2025 00:43:01.456 [] (show_stack) from [] (dump_stack+0xb4/0xd4)
05-07-2025 00:43:01.454 r7:ffffffff r6:60000113 r5:00000000 r4:c10e4a58
05-07-2025 00:43:01.405 [] (dump_backtrace) from [] (show_stack+0x20/0x24)
05-07-2025 00:43:01.378 Backtrace:
05-07-2025 00:43:01.377 Hardware name: Allwinner sun8i Family
05-07-2025 00:43:01.376 CPU: 2 PID: 1 Comm: systemd Not tainted 5.10.35-wb175 #1
05-07-2025 00:42:59.939 systemd invoked oom-killer: gfp_mask=0x100cca(GFP_HIGHUSER_MOVABLE), order=0, oom_score_adj=0
05-07-2025 00:39:07.564 [init.scope] Finished Clean php session files.

Добрый день!

В данном случае наблюдается нехватка памяти, что приводит к автоматической перезагрузке контроллера. Это вполне ожидаемо при высокой нагрузке со стороны Java-процесса.

Рекомендую временно отключить SprutHub, так как это один из наиболее ресурсоёмких сервисов, и понаблюдать, сохраняются ли проблемы:

systemctl stop spruthub

Добрый день,
Удалось ли решить вопрос?

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

Полностью ресетить контроллер из-за этой нестабильности не видится резонным (рестарт длится очень короткий промежуток времени), а свободного времени не так много на то, чтобы восстанавливать все настройки потом.

Но, конечно, очень хотелось бы понять в чем дело и устранить.
Думал проанализировать через логи как-то и найти паттерн, что тригерит эти рестарты - но пока пусто)

Добрый день!

На тестовом стенде воспроизвести проблему не удалось.
Так же посовещались с коллегами — на данный момент сброс контроллера до заводских настроек остаётся самым надёжным вариантом для локализации проблемы между аппаратной и программной составляющей.

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