NEWS
ioBroker sehr hohe Diskwrites in Proxmox
-
@alcalzone sagte in ioBroker sehr hohe Diskwrites in Proxmox:
In der Regel sollte das mit der Zeit immer seltener passieren.
Wie das? Die Adapter schreiben Werte in die Datenpunkte bzw. aktualisieren diese. Dabei wird der Wert (plus Zeitstempel?) in die states.jsonl geschrieben, oder? Das wird doch nicht weniger mit der Zeit.
Gut, ich habe ein oder zwei Steckdosen in den sonoff-Adapter hinzugefĂŒgt, sonst aber nur Updates der Adapter gemacht. Also wieso dann plötzlich die schnelle Verdoppelung der DateigröĂe? Wenn die Diskwrites faktisch alleine von dieser Datei abhĂ€ngen, dann hat sich das von etwa 5 Stunden auf 3 Minuten reduziert! FĂ€llt dir etwas auf bei der Anzahl der Ausgabeereignisse (in meinem Bild oben)?
Das einzige was ich mir noch vorstellen könnte: Proxmox hat das bisher völlig falsch angezeigt (gab auch da Updates zu diesem Zeitpunkt). Kann ich mir aber eigentlich nicht vorstellen...
@dr-bakterius Die Datei ist erstmal append-only bis zum erneuten Schreiben nach Erreichen einer Schwelle. Jede Ănderung eines States entspricht einer neuen Zeile, die angefĂŒgt wird. Wenn durch dieses AnfĂŒgen die Datei auf die doppelte LĂ€nge des letzten Kompressionsvorgangs angewachsen ist, wird ein neuer ausgelöst. Je mehr States du hast, desto lĂ€nger dauert es, bis sich die GröĂe verdoppelt hat, weil die Baseline auch höher ist.
Wie viele States hast du denn insgesamt?
Und bist du ganz sicher, dass es an
states.jsonlliegt und nichtobjects.jsonl? Nicht dass einer der Adapter seit dem Update stÀndig seine Objekte neu schreibt. Da ist die Schwelle deutlich geringer und die Datenmenge wesentlich höher. -
@dr-bakterius Die Datei ist erstmal append-only bis zum erneuten Schreiben nach Erreichen einer Schwelle. Jede Ănderung eines States entspricht einer neuen Zeile, die angefĂŒgt wird. Wenn durch dieses AnfĂŒgen die Datei auf die doppelte LĂ€nge des letzten Kompressionsvorgangs angewachsen ist, wird ein neuer ausgelöst. Je mehr States du hast, desto lĂ€nger dauert es, bis sich die GröĂe verdoppelt hat, weil die Baseline auch höher ist.
Wie viele States hast du denn insgesamt?
Und bist du ganz sicher, dass es an
states.jsonlliegt und nichtobjects.jsonl? Nicht dass einer der Adapter seit dem Update stĂ€ndig seine Objekte neu schreibt. Da ist die Schwelle deutlich geringer und die Datenmenge wesentlich höher.@alcalzone Ich habe jetzt mal zum Testen wieder auf file|file umgestellt. Da wurden 11.836 states und 10.960 objects konvertiert. Danach den Container neu gestartet und 10 Minuten beobachtet. In diesen 10 Minuten wurden deutlich weniger Schreibzugriffe lt. Proxmox durchgefĂŒhrt.
Dann wieder zurĂŒck auf jsonl|jsonl und ich bin wieder da wo ich vorher war.
In den letzten 15 Minuten wurde die states.jsonl 5x neu geschrieben weil sich die GröĂe verdoppelt hatte. Die objects.jsonl ist anfangs um 15% angewachsen und bleibt seit 10 Minuten stabil auf ihrer GröĂe. Ich glaube also nicht, dass ein Adapter stĂ€ndig seine Objekte neu schreibt.
Anfang des Jahres waren die Schreibzugriffe exorbitant höher als ich noch auf file|file war. Bei redis gingen diese deutlich zurĂŒck und dann mit jsonl sanken sie faktisch auf null. Und seit ende Juli sind sie plötzlich so hoch - höher als bei file! Ich verstehe es nicht...
-
Hmmm, ich meine mich zu erinnern, dass ich damals bei der Umstellung auf JSONL irgendwas in einer Datei angepasst hab dafĂŒr...aber das wars auch schon, woran ich mich meine zu erinnern...man konnte doch das Verhalten bei JSONL selber etwas manipulieren/seinen BedĂŒrfnissen anpassen? Ggf wurde da was ĂŒberschrieben?
-
@alcalzone Ich habe jetzt mal zum Testen wieder auf file|file umgestellt. Da wurden 11.836 states und 10.960 objects konvertiert. Danach den Container neu gestartet und 10 Minuten beobachtet. In diesen 10 Minuten wurden deutlich weniger Schreibzugriffe lt. Proxmox durchgefĂŒhrt.
Dann wieder zurĂŒck auf jsonl|jsonl und ich bin wieder da wo ich vorher war.
In den letzten 15 Minuten wurde die states.jsonl 5x neu geschrieben weil sich die GröĂe verdoppelt hatte. Die objects.jsonl ist anfangs um 15% angewachsen und bleibt seit 10 Minuten stabil auf ihrer GröĂe. Ich glaube also nicht, dass ein Adapter stĂ€ndig seine Objekte neu schreibt.
Anfang des Jahres waren die Schreibzugriffe exorbitant höher als ich noch auf file|file war. Bei redis gingen diese deutlich zurĂŒck und dann mit jsonl sanken sie faktisch auf null. Und seit ende Juli sind sie plötzlich so hoch - höher als bei file! Ich verstehe es nicht...
@dr-bakterius Naja Du hast zwei Adapter die recht viel ausgehende States hatten ... ggf hat sich ja da was geĂ€ndert ... bzw @AlCalzone hatten wir nicht den Bug das ggf gar nicht compressed wurde und deswegen das eine setting im code hinzugefĂŒgt? ;-)
-
@alcalzone Ich habe jetzt mal zum Testen wieder auf file|file umgestellt. Da wurden 11.836 states und 10.960 objects konvertiert. Danach den Container neu gestartet und 10 Minuten beobachtet. In diesen 10 Minuten wurden deutlich weniger Schreibzugriffe lt. Proxmox durchgefĂŒhrt.
Dann wieder zurĂŒck auf jsonl|jsonl und ich bin wieder da wo ich vorher war.
In den letzten 15 Minuten wurde die states.jsonl 5x neu geschrieben weil sich die GröĂe verdoppelt hatte. Die objects.jsonl ist anfangs um 15% angewachsen und bleibt seit 10 Minuten stabil auf ihrer GröĂe. Ich glaube also nicht, dass ein Adapter stĂ€ndig seine Objekte neu schreibt.
Anfang des Jahres waren die Schreibzugriffe exorbitant höher als ich noch auf file|file war. Bei redis gingen diese deutlich zurĂŒck und dann mit jsonl sanken sie faktisch auf null. Und seit ende Juli sind sie plötzlich so hoch - höher als bei file! Ich verstehe es nicht...
@dr-bakterius sagte in ioBroker sehr hohe Diskwrites in Proxmox:
11.836 states
Lass mal rechnen.
1000 Ausgabeereignisse alle 15 Sekunden, macht etwa 12.000 SchreibvorgÀnge in 3 Minuten.
Das deckt sich ziemlich genau mit deiner Beobachtung, dass alle 3 Minuten komprimiert wird, weil sich dann die DB-GröĂe verdoppelt hat.hatten wir nicht den Bug das ggf gar nicht compressed wurde und deswegen das eine setting im code hinzugefĂŒgt?
Möglich. Ich weià nicht genau, welche Version @Dr-Bakterius vorher im Einsatz hatte.
Anyways - hier kann man sicher noch Feintuning betreiben, genau dafĂŒr machen wir solche Tests ja. An sich ist die Auto-Kompression dafĂŒr gedacht, dass die Dateien gröĂentechnisch nicht komplett aus dem Ruder laufen und das Laden etwas schneller geht.
FĂŒr Objects haben wir GröĂenfaktor 2, mind. 1000 Zeilen als Bedingung fĂŒr Neu-Schreiben. Die 1000 sind hier die Anzahl der teils redundanten Zeilen in der DB, nicht die einzigartigen Objekte.
FĂŒr States ist die Einstellung aktuell identisch. Ich hab nur etwa halb so viele States und meinestates.jsonldĂŒmpelt irgendwo zwischen 2-3 MB herum. Also GröĂentechnisch nix wildes.Vorschlag: wir heben die Schwellen deutlich an.
Objects: Faktor 2, bei mind. 25k Zeilen
States: Faktor 2, bei mind. 50k Zeilen (oder gar Faktor 10?)Das wird dafĂŒr sorgen, dass die DBs deutlich seltener komprimiert werden - bei kleineren Installationen so gut wie nie. Ist jetzt vermutlich nicht schlimm, aber ggf. muss man es dann zeitgesteuert ab und an machen.
-
@dr-bakterius sagte in ioBroker sehr hohe Diskwrites in Proxmox:
11.836 states
Lass mal rechnen.
1000 Ausgabeereignisse alle 15 Sekunden, macht etwa 12.000 SchreibvorgÀnge in 3 Minuten.
Das deckt sich ziemlich genau mit deiner Beobachtung, dass alle 3 Minuten komprimiert wird, weil sich dann die DB-GröĂe verdoppelt hat.hatten wir nicht den Bug das ggf gar nicht compressed wurde und deswegen das eine setting im code hinzugefĂŒgt?
Möglich. Ich weià nicht genau, welche Version @Dr-Bakterius vorher im Einsatz hatte.
Anyways - hier kann man sicher noch Feintuning betreiben, genau dafĂŒr machen wir solche Tests ja. An sich ist die Auto-Kompression dafĂŒr gedacht, dass die Dateien gröĂentechnisch nicht komplett aus dem Ruder laufen und das Laden etwas schneller geht.
FĂŒr Objects haben wir GröĂenfaktor 2, mind. 1000 Zeilen als Bedingung fĂŒr Neu-Schreiben. Die 1000 sind hier die Anzahl der teils redundanten Zeilen in der DB, nicht die einzigartigen Objekte.
FĂŒr States ist die Einstellung aktuell identisch. Ich hab nur etwa halb so viele States und meinestates.jsonldĂŒmpelt irgendwo zwischen 2-3 MB herum. Also GröĂentechnisch nix wildes.Vorschlag: wir heben die Schwellen deutlich an.
Objects: Faktor 2, bei mind. 25k Zeilen
States: Faktor 2, bei mind. 50k Zeilen (oder gar Faktor 10?)Das wird dafĂŒr sorgen, dass die DBs deutlich seltener komprimiert werden - bei kleineren Installationen so gut wie nie. Ist jetzt vermutlich nicht schlimm, aber ggf. muss man es dann zeitgesteuert ab und an machen.
@alcalzone sagte in ioBroker sehr hohe Diskwrites in Proxmox:
Vorschlag: wir heben die Schwellen deutlich an.
Objects: Faktor 2, bei mind. 25k Zeilen
States: Faktor 2, bei mind. 50k Zeilen (oder gar Faktor 10?)Macht sinn und ja States Faktor 10
@Dr-Bakterius machst du uns bitte im js-controller ein issue dazu?
-
@alcalzone sagte in ioBroker sehr hohe Diskwrites in Proxmox:
Vorschlag: wir heben die Schwellen deutlich an.
Objects: Faktor 2, bei mind. 25k Zeilen
States: Faktor 2, bei mind. 50k Zeilen (oder gar Faktor 10?)Macht sinn und ja States Faktor 10
@Dr-Bakterius machst du uns bitte im js-controller ein issue dazu?
@apollon77 sagte in ioBroker sehr hohe Diskwrites in Proxmox:
machst du uns bitte im js-controller ein issue dazu?
Erledigt. (https://github.com/ioBroker/ioBroker.js-controller/issues/1437)
-
@alcalzone sagte in ioBroker sehr hohe Diskwrites in Proxmox:
Vorschlag: wir heben die Schwellen deutlich an.
Objects: Faktor 2, bei mind. 25k Zeilen
States: Faktor 2, bei mind. 50k Zeilen (oder gar Faktor 10?)Macht sinn und ja States Faktor 10
@Dr-Bakterius machst du uns bitte im js-controller ein issue dazu?
@apollon77 @AlCalzone vllt willst Du hier sagen wie man das jetzt schon in der iobroker.json konfigurieren kann?
-
@dr-bakterius interessant ist der zweite wert. Das sind âstate changesâ. der erste ist nur das was der Adapter von anderen subscribed hat. Und ja Admin bekommt halt am Ende viele Daten aber schreibt selbst wenig.
Du musst die suchen die alle zweite Zahl viel haben.
@apollon77 Hallo, das ist jetzt vlt etwas off-topic aber ich lese diesen thread mit und bei deiner Antwort zu den "state changes" bin ich etwas stutzig geworden.
Mein System (proxmox container mit debian 10) lÀuft stabil aber ich habe beim Sonoff Adapter sehr hohe Werte:

Muss ich mir da Sorgen machen oder ist das eben so, wenn man viele (ca 70) GerÀte an dem Adapter hat. die auch viele Status-Updates senden?
-
@apollon77 @AlCalzone vllt willst Du hier sagen wie man das jetzt schon in der iobroker.json konfigurieren kann?
-
@apollon77 Hallo, das ist jetzt vlt etwas off-topic aber ich lese diesen thread mit und bei deiner Antwort zu den "state changes" bin ich etwas stutzig geworden.
Mein System (proxmox container mit debian 10) lÀuft stabil aber ich habe beim Sonoff Adapter sehr hohe Werte:

Muss ich mir da Sorgen machen oder ist das eben so, wenn man viele (ca 70) GerÀte an dem Adapter hat. die auch viele Status-Updates senden?
@amg_666 naja hast dir die Frage an sich selbst beantwortet. Wenn es viele state changes gibt dann willst du das ja haben also âŠ. Viel state changes der GerĂ€te die beim Adapter ankommen ergeben (logischerweise) auch die gleiche Anzahl States changes in iobroker. ;-))
Am Ende ist das doch auch nicht schlimm und genau das was du willst.
-
@apollon77 @AlCalzone vllt willst Du hier sagen wie man das jetzt schon in der iobroker.json konfigurieren kann?
@apollon77 sagte in ioBroker sehr hohe Diskwrites in Proxmox:
@AlCalzone vllt willst Du hier sagen wie man das jetzt schon in der iobroker.json konfigurieren kann?
WÀre genau meine nÀchste Frage gewesen. ;-)
-
@apollon77 sagte in ioBroker sehr hohe Diskwrites in Proxmox:
@AlCalzone vllt willst Du hier sagen wie man das jetzt schon in der iobroker.json konfigurieren kann?
WÀre genau meine nÀchste Frage gewesen. ;-)
-
Hallo Zusammen,
vorab erstmal vielen Dank fĂŒr diese ganzen Infos die man hier im Forum findet.
Im Bezug auf das Thema Diskwrites habe ich folgendes Problem:
Ich habe den ioBroker erstmal auf *.jsonl laufen lassen.
Dabei habe ich festgestellt, dass mehr als 30GB pro Tag auf die SSD geschrieben wurden.
Ich habe dann testweise man auf Redis umgestellt und habe jetzt 1GB/h also 24GB pro Tag.
Das finde ich einfach zu viel. Es laufen nur 20 Adapter. Ich kann einfach nicht nachvollziehen wieso so viele Daten geschrieben werden.Vielleicht kann mir jemand helfen? Wenn ja, sagt mir bitte, welche Infos ihr von meinem System benötigt.
Vielen Dank
-
Hallo Zusammen,
vorab erstmal vielen Dank fĂŒr diese ganzen Infos die man hier im Forum findet.
Im Bezug auf das Thema Diskwrites habe ich folgendes Problem:
Ich habe den ioBroker erstmal auf *.jsonl laufen lassen.
Dabei habe ich festgestellt, dass mehr als 30GB pro Tag auf die SSD geschrieben wurden.
Ich habe dann testweise man auf Redis umgestellt und habe jetzt 1GB/h also 24GB pro Tag.
Das finde ich einfach zu viel. Es laufen nur 20 Adapter. Ich kann einfach nicht nachvollziehen wieso so viele Daten geschrieben werden.Vielleicht kann mir jemand helfen? Wenn ja, sagt mir bitte, welche Infos ihr von meinem System benötigt.
Vielen Dank
@alexmi hm ⊠naja was ist deine Erwartung wenn es mal einen Crash gibt? Ist Datenverlust ok oder nicht? Wie lang das set Datenverlust sein?
20 Adapter ist ohne Angabe welche das sind mit wie vielen Objekten und Anzahl an state changes pro Zeiteinheit auch eine schlechte messgrundlage.
Am Ende ist jsonl auf eine Balance zwischen Schreibaktionen und Datenverlust-Zeit optimiert welche fĂŒr die Erwartungen der User unserer Erfahrung nach kompatibel ist. Am Ende lassen sich hier settings Ă€ndern damit es zu deinen Vorstellungen passt.
Bei redis sind die standard persistenz settings recht suboptimal und sollten nach deinen Vorstellungen angepasst werden. Muss man sich mit den persistentoptionen beschÀftigen und sinnvoll customized einstellen. Es gibt einen redis thread hier im Forum von mir wo zu redis einiges beschrieben ist. Hast du den gelesen?
Am Ende hast du ein Smart Home System welches die Haupt Aufgabe hat Daten zu verarbeiten. Ich finde das 24-30gb am Tag nicht viel mit der Sicherheit das ich auch bei einem Crash idealerweise keine bzw. wenige Daten verliere. Sonst gehen nĂ€mlich ggf bei einem restart logiken nicht mehr korrekt bis ein wert aktualisiert wurde. Alles eine Frage der Balance âŠ
Was ist denn deine Erwartung und Vorstellung?
Ingo
-
Vielen Dank fĂŒr deine schnelle Antwort Ingo
Das was bei mir an Datenverlust entstehen kann, ist fĂŒr mich in Ordnung. Ich mache tĂ€glich ein ioBroker und Redis Backup mit dem Backitup Adapter und habe auch schon ein Backup wieder einspielen mĂŒssen, da ich Probleme mit VIS hatte, dass nichts mehr geladen wurde.
Ja, ich habe den Redis Beitrag komplett gelesen und mich daraufhin auch erst dort ran getraut. Hat alles problemlos funktioniert.
Hab mich mit den persistenoptionen auch auseinandergesetzt.
Die CPU Last hat sich mit Redis auf jeden Fall verringert und daher auch die Betriebstemperatur.
Ein zurĂŒck auf jsonl ist ja wieder jederzeit möglich.Ich habe mit den Datenmengen bisher keine Erfahrungen, mir kam es nur sehr viel vor fĂŒr das "bisschen" was bei mir lĂ€uft.
Aber ich bin jetzt erstmal etwas beruhigter, wenn du sagst, dass die Datenmenge in Ordnung ist.Hier kann man mal erkennen, was ich fĂŒr Adapter installiert habe.

Objekte: 4858, ZustÀnde: 4170
CPU: 0,13 %
RAM: 81,1 %
Betriebszeit: 4d3h
VerfĂŒgbar: 4.0.23
Installiert: 4.0.23
Ereignisse: â„18 / âŠ13
Plattform: linux
Betriebssystem: linux
Architektur: arm
CPUs: 4
Geschwindigkeit: 800 MHz
Modell: ARMv7 Processor rev 3 (v7l)
RAM: 7.2 GB
System-Betriebszeit: 4 T. 00:56:47
Node.js: v16.17.0
time: 1662391338722
timeOffset: -120
Adapter-Anzahl: 510
NPM: 8.18.0
DatentrĂ€gergröĂe: 439.8 GB
Freier Festplattenspeicher: 422.4 GB
Betriebszeit: 4 T. 00:56:51
Aktive Instanzen: 17
Pfad: /opt/iobroker/Alex
-
Vielen Dank fĂŒr deine schnelle Antwort Ingo
Das was bei mir an Datenverlust entstehen kann, ist fĂŒr mich in Ordnung. Ich mache tĂ€glich ein ioBroker und Redis Backup mit dem Backitup Adapter und habe auch schon ein Backup wieder einspielen mĂŒssen, da ich Probleme mit VIS hatte, dass nichts mehr geladen wurde.
Ja, ich habe den Redis Beitrag komplett gelesen und mich daraufhin auch erst dort ran getraut. Hat alles problemlos funktioniert.
Hab mich mit den persistenoptionen auch auseinandergesetzt.
Die CPU Last hat sich mit Redis auf jeden Fall verringert und daher auch die Betriebstemperatur.
Ein zurĂŒck auf jsonl ist ja wieder jederzeit möglich.Ich habe mit den Datenmengen bisher keine Erfahrungen, mir kam es nur sehr viel vor fĂŒr das "bisschen" was bei mir lĂ€uft.
Aber ich bin jetzt erstmal etwas beruhigter, wenn du sagst, dass die Datenmenge in Ordnung ist.Hier kann man mal erkennen, was ich fĂŒr Adapter installiert habe.

Objekte: 4858, ZustÀnde: 4170
CPU: 0,13 %
RAM: 81,1 %
Betriebszeit: 4d3h
VerfĂŒgbar: 4.0.23
Installiert: 4.0.23
Ereignisse: â„18 / âŠ13
Plattform: linux
Betriebssystem: linux
Architektur: arm
CPUs: 4
Geschwindigkeit: 800 MHz
Modell: ARMv7 Processor rev 3 (v7l)
RAM: 7.2 GB
System-Betriebszeit: 4 T. 00:56:47
Node.js: v16.17.0
time: 1662391338722
timeOffset: -120
Adapter-Anzahl: 510
NPM: 8.18.0
DatentrĂ€gergröĂe: 439.8 GB
Freier Festplattenspeicher: 422.4 GB
Betriebszeit: 4 T. 00:56:51
Aktive Instanzen: 17
Pfad: /opt/iobroker/Alex
@alexmi sagte in ioBroker sehr hohe Diskwrites in Proxmox:
NPM: 8.18.0
Die Version ist aber auch nicht die von nodejs 16.17.0.
Da haste mal von Hand dran rumgefummelt. -
@alexmi sagte in ioBroker sehr hohe Diskwrites in Proxmox:
NPM: 8.18.0
Die Version ist aber auch nicht die von nodejs 16.17.0.
Da haste mal von Hand dran rumgefummelt.@thomas-braun Ja das kann sein, bin relativ neu mit dieser Umgebug. Kann dies zu Problemen fĂŒhren? Dann kann ich ja sicher wieder auf npm 8.15.0 zurĂŒck.
-
@thomas-braun Ja das kann sein, bin relativ neu mit dieser Umgebug. Kann dies zu Problemen fĂŒhren? Dann kann ich ja sicher wieder auf npm 8.15.0 zurĂŒck.
@alexmi sagte in ioBroker sehr hohe Diskwrites in Proxmox:
Kann dies zu Problemen fĂŒhren?
Aus der Erfahrung: FrĂŒher oder spĂ€ter schon. Kommt drauf an wo und wie du diese Version ins System gekleistert hast.
-
@alexmi sagte in ioBroker sehr hohe Diskwrites in Proxmox:
Kann dies zu Problemen fĂŒhren?
Aus der Erfahrung: FrĂŒher oder spĂ€ter schon. Kommt drauf an wo und wie du diese Version ins System gekleistert hast.
@thomas-braun vor ein paar Tagen ĂŒber sudo npm install -g npm@latest
Sollte ich deiner Meinung zurĂŒck auf npm 8.15.0 ?
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen BeitrĂ€ge zu scrollen? Wenn du dich fĂŒr ein Konto anmeldest, kommst du immer genau dorthin zurĂŒck, wo du zuvor warst, und kannst dich ĂŒber neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und BeitrĂ€ge positiv bewerten, um anderen Community-Mitgliedern deine WertschĂ€tzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden đ
Registrieren Anmelden