So habe nunmehr REDIS installiert. Und, man glaubt es kaum, dass System hängt nicht mehr. Es gibt keine Aussetzer mehr nach 40sec für 10sec. Da REDIS nur die States speichert und sich sonst nichts ändert, heißt das wahrscheinlich, dass auf meinem System das Lesen/Schreiben der States bei ioBroker zu häufig geschieht und das System überfordert ist. Die Anzahl der Adapter und Instanzen dürfte damit primär egal sein. Vielmehr ist interessant, wie häufig sich ein State ändert. Je häufiger dieses der Fall ist, desto eher kommt das System an die Grenzen. IoBroker scheint hier nicht sehr effizient zu sein, da es bei Redis dann doch geht. Das der Raspi schlechter abschneidet ist klar, da das Schreiben auf einer Flash-Karte nicht sehr performant ist. Auch mein System schneidet schlechter ab, als das von ruhr70. Da ich ioBroker in einer virtuellen Maschine laufen lasse und die Lese-/Schreiboperationen dadurch langsamer sind kommt das System schneller an die Grenzen. Hinzukommt, dass auf dem Host ein Raid 6 läuft. Gefühlt ist dieses träger als ein Raid 5 oder einzelnen Festplatte. Daher wird bei mir die Schreib-/Leseperformance weiter eingeschränkt.
Zu den Symptomen, die dieses Problem mitbringt, scheint mir jetzt vieles plausibel. Wenn das System nicht irgendwann die Daten schreiben kann, dann steigt der Speicherbedarf. Je häufiger der Fall eintritt, desto langsamer wird auch VIS. VIS muss ja auch lesen. Insgesamt ist die CPU nicht ausgelastet, da der Lese-/Schreibprozess wohl das aktuelle Programm (ioBroker) an der weiteren Ausführung (zumindest in Teilen) behindert. Die CPU steht aber anderen Programmen zur Verfügung. Geht irgendwann mal der Seicher zur Neige, steigt auch die CPU-Last durch Auslagerung des Speichers. Bezüglich ioBroker werden wohl nicht alle Programmteile gleichermaßen gehemmt. Die Konsole und VIS sind betroffen. Trotzdem werden Events immer noch zum richtigen Zeitpunkt ausgelöst.
Ich hoffe, dass mein Ergebnis von anderen auch bestätigt werden kann und dies zu einer Verbesserung von ioBroker führt. Schön wäre es aus meiner Sicht, wenn die interne Funktionsweise von ioBroker näher dokumentiert werden würde. Dann könnte man auch leichter sich durch den Quellcode arbeiten und eventuell das Problem auch selber angehen.
Bis dahin sollte man, wenn man Performanceprobleme hat Redis zumindest in Erwägung ziehen.
Herzlichen Gruß Gerhard