NEWS
ioBroker: 25GB pro Tag wg states.json + states.json.bak
-
Hallo,
mein ioBroker schreibt alle 20 bis 30 Sekunden die Dateien
states.json states.json.bak
auf die Platte (SSD). Macht bei mir ca. 25GByte pro Tag. Nur dafür.
Habe ioBroker unter Win 10 Pro. Weiß nicht, ob das bei einem Linux System genauso ist, aber warum sollte es da ander sein?Zum Vergleich: Ein ausgewachsenes Win 10 Pro schreibt täglich <5GB für Verwaltungskram auf die Platte.
So gesehen kann ich den relativ hohen Trafficbedarf bei ioBroker nicht nachvollziehen.
- Warum werden diese Dateien so häufig geschrieben?
- Kann man die Schreibhäufigkeit reduzieren?
- Welche Nachteile hätte das?
Systemdata Bitte Ausfüllen Hardwaresystem: Lenovo X1 i5-6300u Arbeitsspeicher: 8GB Festplattenart: SSD 180GB Betriebssystem: Win 10 Pro Node-Version: 10.17.0 Nodejs-Version: Node.js v10.17.0 NPM-Version: 6.11.3 ioBroker Version: 3.1.6 Installationsart: Installer mit Workaround Image genutzt: Installer Installer 2 Link -
@klassisch sagte in ioBroker: 25GB pro Tag wg states.json + states.json.bak:
mein ioBroker schreibt alle 20 bis 30 Sekunden die Dateien states.json und states.json.bak auf die Platte
Ja, das sind all die Datenpunkte, die es im System gibt. Schliesslich wollen wir, dass bei einem allfälligen Neustart die Datenpunkte den korrekten Wert haben. Und der Info Adapter sowie die Meta-Datenpunkte der einzelnen Adapter werden regelmässig aktualisiert.
Wenn du ein skalierbareres System haben willst, kann ich dir empfehlen, auf Redis für States zu wechseln, das ist sicherlich effizienter und schreibt nur die Datenpunkte, welche sich auch geändert haben (nicht alle Daten).
-
steig auf Redis um.. bei der Datenmenge wird sich das bestimmt lohnen..somit reduzierst du auch die Schreibvorgänge
-
Über wieviele DP reden wir denn hier? Ab wann ist der Umstieg auf Redis empfohlen?
-
@Rushmed pimalauge ab 10k..
das sind meine
-
Hm, bei mir sind es 100 MB und ich habe 27398 Objekte
-
Vielen Dankfür Eure Antworten.
@sigi234 (zuerst, weil Antwort einfacher): Bei mir steht
"Objekte: 11762, Zustände: 10039"
Die states Dateien sind jeweils etwas zwischen 3 und 4 MByte. Und werden alle 20 bis 30 Sekunden geschrieben. Damit kommt man auf 25GB bis 30GB pro Tag.
Das passt auch zur Anzeige des Programms SsdReady@UncleSam & @arteck
Danke für Euren Hinweis auf Redis.
Redis kenne ich nicht, habe nur etliche Problemposts hier im Forum dazu gesehen - allerdings nicht studiert.
Redis unter Windows scheint limitiert zu sein. Version Redis 2.4.5 von 2011. Das klingt nicht gut.
Eine andere Anleitung von 2018 startet mit einer zusätzlichen Installation von Linux https://redislabs.com/blog/redis-on-windows-10/ Klingt auch nicht sehr verlockend.Kann man die states-Dateien verlagern? An meinem System hängt für eine andere Applikation noch eine klassische WD-Purple Platte, auf der ich auch meine ioBroker history Daten ablege. Die schreibt für die andere Applikation praktisch immer durch und ist auch dafür gebaut.
Die sollte also mit den Schreibmengen besser zu recht kommen.Aber ich finde keine Konfigurationsmöglichkeit für den Verwahrort der states-Dateien.
-
@klassisch ..... Okay.... erst mal Sorry..... ich scheine das nicht richtig zu verstehen.... ich habe "Objekte: 20868, Zustände: 19046" also werden dann so alle 30 Sekunden 3 - 4 MB geschrieben (und nach 30 Sekunden wieder Überschrieben) ~ 30GB/Tag
Also so ca. 11,1 TB im Jahr, bei einer durchschnittlichen Lebensdauer einer SSD von 220 TB... habe ich noch so zwei - drei Jahre Zeit diese Auszutauschen, dann Kosten die 500GB SSDs auch nicht die Welt..... oder übersehe ich da noch ein Problem?
Was ist denn jetzt das Größere Übel.... eine Programm zu nutzen das seit Jahren nicht mehr gepflegt wird oder alle paar Jahre eine neue SSD für 50 Euro zu Kaufen?..... Ich bitte um Aufklärung
-
@Master67 Bei einer SSD sollte das zu verkraften sein - wenn es denn dabei bleibt.
Dennoch ist es in Relation zu Windows alleine auffällig viel. Und da frage ich mich, ob das so sein muß.
Habe früher auch mal SBCs für ioBroker genutzt und da wird es für die SD Karten schon kritisch und auch eine eMMC ist nicht beliebig belastbar.
Und ja, unter Windows scheinen mir die o.g. Redis Opionen derzeit nicht sehr verlockend. Vielleicht gibt es ja noch was angenehmeres.
Oder ich finde einen Weg, die "Haupttäter" zu verschieben.
In meinem Fall ist der Rechner gebraucht und die SSD nicht mehr taufrisch. Da macht es schon Sinn, mal zu sehen, wieviel da zu erwarten ist. -
@klassisch sagte in ioBroker: 25GB pro Tag wg states.json + states.json.bak:
Redis unter Windows scheint limitiert zu sein. Version Redis 2.4.5 von 2011. Das klingt nicht gut.
Eine andere Anleitung von 2018 startet mit einer zusätzlichen Installation von Linux https://redislabs.com/blog/redis-on-windows-10/ Klingt auch nicht sehr verlockend.Wenn du unter Windows 10 eine saubere Installation von ioBroker und Redis willst, dann empfehle ich Docker zu verwenden. Damit sparst du dir auch irgendwelche NodeJS Updates und hast darunter immer das aktuellste (Linux) OS.
Docker ist einfach zu installieren und mit Backitup kannst du ioBroker problemlos von Windows auf Docker umziehen.
Falls du unbedingt weniger Schreibzugriffe auf deine HD willst und dir das Alter der Zustände egal ist, kannst du mal versuchen, was passiert, wenn du eine RAM Disk verwendest und die z.B. 1x pro Stunde auf die HD/SSD sicherst. Ich hätte nicht gedacht, dass ich im Jahr 2020 noch über RAM Disks rede
-
@UncleSam sagte in ioBroker: 25GB pro Tag wg states.json + states.json.bak:
Ich hätte nicht gedacht, dass ich im Jahr 2020 noch über RAM Disks rede
Ich auch nicht und möchte das auch nicht wirklich. Wenn es bei den ca. 30GB pro Tag, also ca. 10 TBW pro Jahr bleibt, ist das für mich ok. So viel in etwa habe ich auch letztes Jahr verloren und das ist locker eingepreist.
Aber nach meinen Aufzeichnungen habe ich jetzt auf diesem Rechner in den letzten 68Tagen 22TBW verloren. Und da lohnt sich schon ein genaueres Hinsehen. Und dabei war ioBroker die erste - und noch immer die einzige - auffällige Applikation. Aber natürlich weit weg vom o.g. Wert. Ich beobachte weiter...
Linux und Docker möchte ich mir derzeit nicht wirklich antun. Bin gerade recht zufrieden, daß alles unter dem gewohnten und stabilen Win läuft. Das kann ich (fern-)warten und ich komme einigermassen zu recht. Wie gesagt, da laufen noch andere Applikationen, die es nur unter Win gibt und die allerdings auf die Purple HD zugreifen. -
@klassisch sagte:
Die states Dateien sind jeweils etwas zwischen 3 und 4 MByte. Und werden alle 20 bis 30 Sekunden geschrieben.
Das kann man ändern: Ändere in der Datei iobroker/node_modules/iobroker.js-controller/lib/states/statesInMemFileDB.js in Zeile 66 den Wert 30000 in z.B. 300000, dann wird nach ioBroker-Neustart nur noch alle 5 Minuten geschrieben.
Ich hatte es erst mit der Config-Datei conf/iobroker-dist.json versucht, was allerdings nicht funktioniert hat. -
@paul53 sagte in ioBroker: 25GB pro Tag wg states.json + states.json.bak:
iobroker/node_modules/iobroker.js-controller/lib/states/statesInMemFileDB.js
Vielen Dank! Die Stelle habe ich gefunden
parseInt(this.settings.connection.writeFileInterval) : 300000;
Muß man vor dem Rückspeichern ioBroker anhalten, damit da nichts durcheinander kommt?
-
@klassisch sagte:
Muß man vor dem Rückspeichern ioBroker anhalten, damit da nichts durcheinander kommt?
Nein, die Datei wird nur bei ioBroker-Start eingelesen.
-
@paul53 Ok, habe rückgespeichert und iobroker restartet. Mal sehen, wie das funktioniert. Ich nehme an, daß bei einem regulären Abschalten von ioBroker - also iobroker stop oder Stop oder Restart von Windows - die aktuellen States gesichert werden.
-
@klassisch sagte:
Ich nehme an, daß bei einem regulären Abschalten von ioBroker - also iobroker stop oder Stop oder Restart von Windows - die aktuellen States gesichert werden.
Ja, so ist es.
-
@paul53 Klasse, herzlichen Dank! Dann passt das. der Win Rechner läuft ja sehr stabil. Und wieder mal Respekt und Hut ab!
-
@klassisch sagte:
Dann passt das.
Das heißt aber auch: Nach jedem js-controller Update an die Änderung in der Datei denken.
-
@paul53 Danke, habs notiert. Hoffentlich finde ich es dann auch wieder und denke dran. So häufig update ich den Controller nicht.
-
Kurzer Bericht. Nach dem Umstellen hat sich das Speichervolumen reduziert. Habe jetzt in ca. 24h laut SsdReady ca. 10GBWritten. Das klingt plausibel. ca. 5GB braucht schon Win10 idle.
Dann gibt das Programm noch "aligned to 4K Writes" mit ca. 15GB an.
Ganz verrückt aber: Sowohl nach CrystalDiskInfo als auch laut Intel Festplattentool (ich habe eine Intel PRO 2500) wurden im selben Zeitraum 153GBWritten verbraucht. Also das Zehnfache. Kann ich mit nicht vorstellen, recht unplausibel. Das sieht irgendwie nach einer verrutschten Zehnerpotenz aus. Seltsam.