Client wb-adc disconnected due to out of memory

Добрый день!
Столкнулся с такой ошибкой.

07-07-2026 08:44:52.317 [wb-mqtt-serial] WARNING: [mqtt] connection lost
07-07-2026 08:44:52.314 [wb-mqtt-adc] WARNING: [mqtt] connection lost
07-07-2026 08:44:51.742 [wb-mqtt-db.service] WARNING: [mqtt] connection lost
07-07-2026 08:44:51.641 [wb-device-manager] [WARNING] Mqtt: disconnect from unix:///var/run/mosquitto/mosquitto.sock → 1
07-07-2026 08:44:51.311 [wb-mqtt-adc] WARNING: [mqtt] connection lost
07-07-2026 08:44:51.310 [wb-mqtt-serial] WARNING: [mqtt] connection lost
07-07-2026 08:44:50.741 [wb-mqtt-db.service] WARNING: [mqtt] connection lost
07-07-2026 08:44:50.545 [wb-mqtt-metrics] Unexpected disconnection.
07-07-2026 08:44:50.310 [wb-mqtt-adc] WARNING: [mqtt] connection lost
07-07-2026 08:44:50.309 [mosquitto] 1783392290: Client wb-adc disconnected due to out of memory.
07-07-2026 08:44:50.307 [wb-mqtt-serial] WARNING: [mqtt] connection lost
07-07-2026 08:44:50.306 [mosquitto] 1783392290: Client wb-modbus disconnected due to out of memory.
07-07-2026 08:44:50.304 [mosquitto] 1783392290: Client wb-cloud-agent@wirenboard.cloud-kYJxQIP9 disconnected due to out of memory.
07-07-2026 08:44:50.301 [mosquitto] 1783392290: New client connected from /var/run/mosquitto/mosquitto.sock:0 as wb-cloud-agent@wirenboard.cloud-kYJxQIP9 (p2, c1, k60).
07-07-2026 08:44:50.299 [mosquitto] 1783392290: New connection from /var/run/mosquitto/mosquitto.sock:0 on port 0.
07-07-2026 08:44:50.129 [wb-mqtt-adc] INFO: [mqtt] subscription succeeded (message id 61092)
07-07-2026 08:44:50.128 [wb-mqtt-adc] INFO: [mqtt] connection estabilished with code “0”
07-07-2026 08:44:50.127 [mosquitto] 1783392290: New client connected from /var/run/mosquitto/mosquitto.sock:0 as wb-adc (p2, c0, k60).
07-07-2026 08:44:50.127 [mosquitto] 1783392290: New connection from /var/run/mosquitto/mosquitto.sock:0 on port 0.

Для того чтобы не было такой ошибки хочу увеличить swap через /mnt/data.
Можно ли так делать и как это может повлиять на контроллер?

Добрый день, Дмитрий

Увеличивать swap в данном случае не нужно, он на эту ошибку не повлияет.

Сообщение out of memory здесь и далее означает срабатывание внутреннего лимита памяти самого MQTT-брокера mosquitto, а не нехватку оперативной памяти на контроллере. Своп этот лимит не расширяет.

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

mosquitto_sub -t '$SYS/broker/heap/current' -C 1
systemctl status mosquitto | grep -E "Memory|Active"
free -h
dpkg -l | grep mosquitto

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

Также пришлите, пожалуйста, архив с диагностической информацией контроллера. Создание архива описано в документации.

Сами сервисы контроллера при таком сбое обычно переподключаются к брокеру автоматически.

mosquitto_sub -t ‘$SYS/broker/heap/current’ -C 1

47999976

/mnt/data/homeassistent# systemctl status mosquitto | grep -E “Memory|Active”

 Active: active (running) since Tue 2026-07-07 08:36:16 UTC; 24h ago

Memory: 93.9M

/mnt/data/homeassistent# free -h

           total        used        free      shared  buff/cache   available

Mem: 3.8Gi 1.3Gi 263Mi 13Mi 2.3Gi 2.4Gi

Swap: 255Mi 136Mi 119Mi

:/mnt/data/homeassistent# dpkg -l | grep mosquitto

ii libmosquitto1:arm64 2.0.20-1-wb102 arm64 MQTT version 5.0/3.1.1/3.1 client library

ii libmosquittopp1:arm64 2.0.20-1-wb102 arm64 MQTT version 5.0/3.1.1/3.1 client C++ library

ii mosquitto 2.0.20-1-wb102 arm64 MQTT version 5.0/3.1.1/3.1 compatible message broker

ii mosquitto-clients 2.0.20-1-wb102 arm64 Mosquitto command line MQTT clients

приложен диагностический архив, доступен только сотрудникам поддержки
(523,6 КБ)

Тогда еще вопрос как я могу сейчас это исправить пока разработчики занимаются исправлением? например по крону просто ребутить сервис? потому что у нас из за этого данные не приходили в HA и с Алисы не могли управлять.

вот такая ошибка висела несколько часов WARNING: [mqtt] connection lost

Можно поднять лимиты: Mosquitto - Out of memory, отчего падает и не поднимается z2m - #30 от пользователя fedd
Ну и да, комбинировать с презапуском по крону - тоже.
Для полноты диагностики - примените пожалуйста

log.info("ramLog: запуск");

function makeNewVirtualControl(vdName, nameControl, typeControl) {
  // Создаём только если его ещё нет — иначе defineVirtualDevice даст исключение
  // "Device with given ID already exists".
  if (getDevice(vdName) === undefined) {
    log.info("Создаём виртуальное устройство {}", vdName);
    defineVirtualDevice(vdName, {
      title: vdName,
      cells: {}
    });
  } else {
    log.debug("Устройство {} уже существует, пропускаем создание", vdName);
  }

  var vdev = getDevice(vdName);
  if (vdev && !vdev.isControlExists(nameControl)) {
    log.debug("Контрола {} нет, создаем.", nameControl);
    vdev.addControl(nameControl, typeControl);
  }
}

var RAM_VDEV_NAME = "ramLog";
var RAM_CONTROL_NAME = "occupedMosquittoRAM";

makeNewVirtualControl(RAM_VDEV_NAME, RAM_CONTROL_NAME, {
  type: "value",
  value: 0,
  units: "kB",
  readonly: true,
  forceDefault: false
});

function updateWbMosquittoRamUsage() {
  // Суммируем RSS (kB) для всех процессов.
  runShellCommand("ps -C mosquitto -o rss= | awk '{sum+=$1} END {print (sum ? sum : 0)}'", {
    captureOutput: true,
    exitCallback: function (exitCode, capturedOutput) {
      if (exitCode !== 0) {
        log.warning("ramLog: команда завершилась с кодом {}", exitCode);
        return;
      }

      var value = parseInt(String(capturedOutput).trim(), 10);
      if (isNaN(value)) {
        log.warning("ramLog: не удалось разобрать значение RAM из '{}'", capturedOutput);
        return;
      }

      dev[RAM_VDEV_NAME + "/" + RAM_CONTROL_NAME] = value;
      log.debug("ramLog: RSS = {} kB", value);
    }
  });
}

// Первичное обновление при старте скрипта.
updateWbMosquittoRamUsage();

// Обновление каждую минуту.
setInterval(function () {
  updateWbMosquittoRamUsage();
}, 60 * 1000);

Дмитрий, подскажите также какую версию Home Assistant используете?

Скрипт запустил но пока только это в логах

8-07-2026 23:25:36.124 [wb-rules] INFO: reloading file: /etc/wb-rules/log_debug_mqtt.js
08-07-2026 23:25:35.149 [wb-mqtt-db.service] INFO: [sqlite] Creating channel ramLog/occupedMosquittoRAM
08-07-2026 23:25:35.143 [wb-rules] INFO: [rule info] Создаём виртуальное устройство ramLog
08-07-2026 23:25:35.142 [wb-rules] ERROR: [rule error] Error in getting device: Device with given ID doesn’t exist
08-07-2026 23:25:35.139 [wb-rules] INFO: [rule info] ramLog: запуск

после перезапуска mosquitto стало так

а было 100243 кб

и еще этот параметр увеличил memory_limit 200000000 а был 100000000

image: homeassistant/home-assistant:2026.6.4

Оно ж в историю собирается? То есть интересен график, по сути.
Ну и - да, увеличение лимитов проблему не устранит но сгладит. До обновления самого брокера.