Mosquitto belegt nach <1Tag den Arbeitsspeicher.

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
Apohis
Beiträge: 4
Registriert: 26. Jan 2024 19:16
Answers: 0

Mosquitto belegt nach <1Tag den Arbeitsspeicher.

Beitrag von Apohis »

Hallo Forum,

nach zwei Jahren OH2 bin ich vor kurzem auf OH4 umgestiegen. (neu Installation).
Soweit so gut. Mosquitto habe ich über die OH-Config installiert. Es werden Daten von 6 ESP‘s (Temperaturen, Gaszähler usw) an den Broker gesendet. Irgendwann (<24h) ist der Broker nicht mehr erreichbar. In der mosquitto.log steht Error: Out of memory. Der Arbeitsspeicher des RPI4 4G ist voll.
Warum ist das so? Was mache ich falsch?
Vielen Dank für Mühe




Speicher

Code: Alles auswählen

openhabian@openhabian:/etc/mosquitto $ top
top - 17:37:46 up 2 days, 16:15,  1 user,  load average: 0.59, 0.47, 0.36
Tasks: 130 total,   1 running, 129 sleeping,   0 stopped,   0 zombie
%Cpu(s):  3.9 us,  4.1 sy,  0.0 ni, 91.9 id,  0.0 wa,  0.0 hi,  0.1 si,  0.0 st
MiB Mem :   3844.2 total,     37.6 free,   3689.8 used,    116.8 buff/cache
MiB Swap:   3072.0 total,   2133.5 free,    938.5 used.     84.9 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
 2288 mosquit+  20   0 4002968   3.0g   2256 S  21.5  81.0 176:34.33 mosquitto
  794 openhab   20   0 1178160 371960   5604 S   8.6   9.4 163:12.01 java
   55 root      20   0       0      0      0 S   1.0   0.0   0:47.55 kswapd0
 4902 openhab+  20   0   11596   2888   2404 R   0.7   0.1   0:02.27 top
  353 openhab+  20   0  184248  18616  10228 S   0.3   0.5  35:44.47 deCONZ
    1 root      20   0   33908   6020   4652 S   0.0   0.2   0:06.61 systemd
    2 root      20   0       0      0      0 S   0.0   0.0   0:00.44 kthreadd
    3 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 rcu_gp
    4 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 rcu_par_gp
    5 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 slub_flushwq
    6 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 netns
   10 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 mm_percpu_wq
   11 root      20   0       0      0      0 I   0.0   0.0   0:00.00 rcu_tasks_kthread
   12 root      20   0       0      0      0 I   0.0   0.0   0:00.00 rcu_tasks_rude_kthread
   13 root      20   0       0      0      0 I   0.0   0.0   0:00.00 rcu_tasks_trace_kthread
   14 root      20   0       0      0      0 S   0.0   0.0   1:18.66 ksoftirqd/0
   15 root      20   0       0      0      0 I   0.0   0.0   1:19.73 rcu_preempt
mosquitto.conf

Code: Alles auswählen

# Place your local configuration in /etc/mosquitto/conf.d/
#
# A full description of the configuration file is at
# /usr/share/doc/mosquitto/examples/mosquitto.conf.example

pid_file /run/mosquitto/mosquitto.pid

persistence true
persistence_location /var/lib/mosquitto/

log_dest file /var/log/mosquitto/mosquitto.log

include_dir /etc/mosquitto/conf.d

listener 1883
password_file /etc/mosquitto/passwd
allow_anonymous false

mosquitto.log

Code: Alles auswählen

1706541594: Client ESP_GAS disconnected due to out of memory.
1706541594: New connection from 192.168.178.85:64390 on port 1883.
1706541594: New client connected from 192.168.178.85:64390 as ESP_GAS (p2, c1, k15, u'openhabian').
1706541594: Client ESP_GAS disconnected due to out of memory.
1706541607: Client ESP8266_Garagentuer disconnected due to out of memory.
1706541608: New connection from 192.168.178.86:55460 on port 1883.
1706541608: New client connected from 192.168.178.86:55460 as ESP8266_Garagentuer (p2, c1, k15, u'openhabian').
1706541608: Error: Out of memory.
1706541608: Client ESP8266_Garagentuer disconnected due to out of memory.
1706542591: Saving in-memory database to /var/lib/mosquitto//mosquitto.db.
1706544392: Saving in-memory database to /var/lib/mosquitto//mosquitto.db.

Benutzeravatar
udo1toni
Beiträge: 15244
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: Mosquitto belegt nach <1Tag den Arbeitsspeicher.

Beitrag von udo1toni »

Herzlich willkommen im openHAB Forum!
Das ist ein sehr merkwürdiges Verhalten, welches ich in der Form noch nie beobachtet oder davon gehört habe.
Gibt es unterhalb von /etc/mosquitto/conf.d/ noch weitere Konfigurationsdateien?
Kannst Du mal in /var/lib/mosquitto/ schauen, ob dort evtl. defekte Dateien liegen? Notfalls mal mosquitto stoppen und alle Dateien aus diesem Verzeichnis löschen, es sollte sich dabei nur um die Retained Messages handeln.

Vielleicht ist auch beim Installieren irgendwas schief gegangen, Du könntest das Paket mal deinstallieren und erneut installieren z.B.:

Code: Alles auswählen

sudo apt remove mosquitto
sudo apt purge mosquitto
sudo apt install mosquitto
Achtung! purge entfernt auch sämtliche Konfigurationen zu mosquitto, das heißt, Du musst anschließend das Passwort in /etc/mosquitto/passwd und auch die Konfiguration in /etc/mosquitto/mosquitto.conf neu konfigurieren. In letzterer Datei fehlt z.B. gerne listener 1883 bzw. es steht an der falschen Stelle (sollte eigentlich ganz oben stehen, hinter dem ersten Kommentar), was dann dazu führen kann, dass mosquitto gar nicht auf Verbindungen über tcp/ip hört.

Nur zur Statistik... mein mosquitto meldet

Code: Alles auswählen

clients/connected 26
load/messages/received/1min 525
load/messages/sent/1min 972
load/publish/received/1min 147
load/publich/sent/1min 893
messages/received 2040920
messages/sent 1829639
messages/store 672
Mein mosquitto läuft in einem LXC, der gesamte Container nutzt etwas über 20 MByte, das ist aber mit den virtuellen Betriebssystemressourcen...
Der Container wurde zuletzt, glaube ich, so vor... äh... zwei Wochen? neu gestartet...
sprich: mosquitto braucht exakt gar keine Ressourcen, die der Erwähnung wert wären, jedenfalls nicht, wenn man nur ein paar hundert Topics nutzt...
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Apohis
Beiträge: 4
Registriert: 26. Jan 2024 19:16
Answers: 0

Re: Mosquitto belegt nach <1Tag den Arbeitsspeicher.

Beitrag von Apohis »

Vielen Dank für die schnelle Antwort.
Weitere Konfigurationsdateien konnte ich nicht finden. Auch bei den defekten Dateien Fehlanzeige.
Daraufhin mosquitto gestoppt und mosquitto.db gelöscht. Keine Veränderung.
Remove und purge durchgeführt und alles wieder Installiert und eingerichtet.
Nach 30min Laufzeit >280Mbyte.

Benutzeravatar
udo1toni
Beiträge: 15244
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: Mosquitto belegt nach <1Tag den Arbeitsspeicher.

Beitrag von udo1toni »

Strange. Dann scheint es mit der genauen Version zusammenzuhängen. Was mich aber verwundert, dass es dazu noch nicht mehr Meldungen gibt, mosquitto ist gerade im openHAB Umfeld extrem weit verbreitet
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Apohis
Beiträge: 4
Registriert: 26. Jan 2024 19:16
Answers: 0

Re: Mosquitto belegt nach <1Tag den Arbeitsspeicher.

Beitrag von Apohis »

Hallo Forum,
nachdem die Neuinstallation von Mosquitto keine abhilfe geschaffen hat. Habe ich OH4 und Mosquitto auf einen zweiten RPI4 installiert, alle Clients auf das neue System umgestellt. 1 Tag gewartet alles perfekt. Jetzt habe ich das OH4 Backup vom 1. RPI auf dem 2. RPI gespielt.
Ergebnis: Mosquitto wird im Arbeitsspeicher immer größer. Bis das maximum erreicht ist…
Das MQTT-Binding zu deinstallieren brachte auch kein Erfolg.
Hat jemand noch eine Idee?

Benutzeravatar
udo1toni
Beiträge: 15244
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: Mosquitto belegt nach <1Tag den Arbeitsspeicher.

Beitrag von udo1toni »

Das heißt, Du hattest auch openHAB4 (Altsystem) als Client auf dem neuen Broker angemeldet und es hat alles funktioniert?

Das klingt dann nach einem schweren Fehler innerhalb der Konfigurationsdateien von openHAB...
Die Frage ist aber, was kann aus openHAB heraus solche Auswirkungen haben?

Wie sieht die Konfiguration mqtt bei Dir aus? (Bridge/borker, alle Things, die über mqtt kommunizieren)
Bitte den Inhalt der Code-Ansichten jeweils als Code markiert hier als Text einfügen, User/Passworte überschreiben, aber ansonsten möglichst nichts ändern.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Apohis
Beiträge: 4
Registriert: 26. Jan 2024 19:16
Answers: 0

Re: Mosquitto belegt nach <1Tag den Arbeitsspeicher.

Beitrag von Apohis »

Hallo
Das heißt, Du hattest auch openHAB4 (Altsystem) als Client auf dem neuen Broker angemeldet und es hat alles funktioniert?
Das hat ohne Probleme funktioniert.

Code: Alles auswählen

UID: mqtt:topic:6f4894e6c6
label: Generic MQTT Thing
thingTypeUID: mqtt:topic
configuration: {}
bridgeUID: mqtt:broker:b842801f75
channels:
  - id: Aussentemperatur
    channelTypeUID: mqtt:string
    label: Aussen
    description: ""
    configuration:
      stateTopic: temperatur/aussen
  - id: Solardach
    channelTypeUID: mqtt:string
    label: Solardach
    description: ""
    configuration:
      stateTopic: temperatur/solardach
  - id: Speicheroben
    channelTypeUID: mqtt:string
    label: Speicheroben1
    description: ""
    configuration:
      stateTopic: temperatur/speicheroben
  - id: Speichermitte
    channelTypeUID: mqtt:number
    label: Speichermitte
    description: ""
    configuration:
      stateTopic: temperatur/speichermitte
  - id: Speicherunten
    channelTypeUID: mqtt:number
    label: Speicherunten
    description: ""
    configuration:
      stateTopic: temperatur/speicherunten
  - id: garagentuer
    channelTypeUID: mqtt:string
    label: garagentuer
    description: ""
    configuration:
      stateTopic: garagentuer
  - id: Schlafzimmer_h
    channelTypeUID: mqtt:number
    label: Schlafzimmer_h
    description: ""
    configuration:
      stateTopic: sensor/h
  - id: Schlafzimmer_t
    channelTypeUID: mqtt:number
    label: Schlafzimmer_t
    description: ""
    configuration:
      stateTopic: sensor/t
  - id: sensorkellerh
    channelTypeUID: mqtt:number
    label: sensorkeller/h
    description: ""
    configuration:
      stateTopic: sensorkeller/h
  - id: sensorkellert
    channelTypeUID: mqtt:number
    label: sensorkeller/t
    description: ""
    configuration:
      stateTopic: sensorkeller/t
  - id: Gaszaehler
    channelTypeUID: mqtt:number
    label: Gaszaehler
    description: ""
    configuration:
      stateTopic: gas/Gas/value
  - id: temperatur_teich
    channelTypeUID: mqtt:number
    label: temperatur/teich
    description: ""
    configuration:
      commandTopic: temperatur/teich
  - id: temperaturteichvolt
    channelTypeUID: mqtt:number
    label: temperatur/teich/volt
    description: ""
    configuration:
      commandTopic: temperatur/teich/volt
  - id: temp_teich
    channelTypeUID: mqtt:number
    label: temp_teich
    description: ""
    configuration:
      commandTopic: temperatur/teich
      stateTopic: temperatur/teich
  - id: volt_teich
    channelTypeUID: mqtt:number
    label: volt_teich
    description: ""
    configuration:
      commandTopic: temperatur/teich/volt
      stateTopic: temperatur/teich/volt
Danke für die Mühe

Benutzeravatar
udo1toni
Beiträge: 15244
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: Mosquitto belegt nach <1Tag den Arbeitsspeicher.

Beitrag von udo1toni »

Also, was auffällt: Du hast vier Channel definiert, die große Probleme verursachen werden:

Code: Alles auswählen

  - id: temperatur_teich
    channelTypeUID: mqtt:number
    label: temperatur/teich
    description: ""
    configuration:
      commandTopic: temperatur/teich
  - id: temperaturteichvolt
    channelTypeUID: mqtt:number
    label: temperatur/teich/volt
    description: ""
    configuration:
      commandTopic: temperatur/teich/volt
  - id: temp_teich
    channelTypeUID: mqtt:number
    label: temp_teich
    description: ""
    configuration:
      commandTopic: temperatur/teich
      stateTopic: temperatur/teich
  - id: volt_teich
    channelTypeUID: mqtt:number
    label: volt_teich
    description: ""
    configuration:
      commandTopic: temperatur/teich/volt
      stateTopic: temperatur/teich/volt
NIEMALS stateTopic und commandTopic identisch setzen!
Man sollte es vermeiden, das commandTopic auf mehreren Channels identisch zu setzen (ja, gibt Fälle, da ist das ok, aber gewöhnlich nicht)

Hier sieht es am ehesten so aus, dass Du aus Versehen die Channel doppelt angelegt hast.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Antworten