NEWS
SOLVED [Gelöst] Speicherlecks im ioBroker?
-
Liebe ioBroker Gemeinde,
ich versuche es nochmal mein Problem hier zu platzieren.
Seit einigen Monaten habe ich massive Speicherprobleme die sich anscheinend immer mehr verstärken.Zunächst meine System:
ioBroker2 Platform: linux Betriebssystem: linux Architektur: x64 CPUs: 4 Geschwindigkeit: 1385 MHz Modell: Intel(R) Atom(TM) x5-Z8350 CPU @ 1.44GHz RAM: 3.79 GB System Betriebszeit: 9 T. 04:54:01 Node.js: v10.17.0 (Es gibt eine neuere Version: v10.23.0 - Empfohlene Version v12.20.0) NPM: 6.11.3 Festplatte Größe: 52.1 GB Festplatte frei: 44.42 GB Anzahl der Adapter: 322 Betriebszeit: 9 T. 04:53:52 Aktive Instanzen: 23 Hostname: ioBroker2
Das Problem ist das ich nach einiger Betriebszeit immer weniger Speicher habe:
Vor ein paar Wochen/Monaten war es noch so, das sich der Speicherverbrauch so über 2-3 Monaten aufgebaut hat. Mittlerweile ist es so das der Speicher beriets nach ca. 10 Tagen von ca. 70% freiem Speicher auf 7% freiem Speicher abbaut.
Wo kann ich anfangen zu suchen? Es scheint für mich so, als ob viele Adapter die ich nutze immer mehr Speicher verbrauchen. Es kann doch nicht sein das ich das System jede Woche rebooten muss damti mir das System nicht plötzlich selber herunterfährt (ist schon passiert).
Schreibe auch schon seit Monaten den Speicherverbrauch der einzelnen Adapter mit. Könnte also hier auch weitere Informationen liefern:
Vielen Dank für eure Hilfe und wertvollen Tips,
Artur
-
@LoxDUS
parallel kannst du mal den artikel lesen. insbesondere den abschnitt mit timers und callbacks.
evtl hast du da in deinen skripten etwas davon eingebaut.
https://auth0.com/blog/four-types-of-leaks-in-your-javascript-code-and-how-to-get-rid-of-them/ -
@LoxDUS Installier zunächst mal die aktuell empfohlene nodeJS-Version: node12
Und dann schauen ob das System im RL3 läuft:
who -r
-
@LoxDUS
Die einzelnen Adapter laufen ja alle in eigenen threads.
Was mir an der Grafik aufgefallen ist, dass die größten Steigerungen über kurze Zeit immer im JavaScript Adapter liegt.
Auch durch Skripte können speicher Lecks entstehen.
Evtl solltest du dir die einzelnen adapter mal separat anschauen und prüfen ob es hier Steigerungen über die Zeit gibt. -
Hallo,
ich habe ioBroker unter Windows 10 auf einem NUC laufen mit 8GB RAM und es wird unter Instanzen das angezeigt:
Datenträger verfügbar: 20.4 %, gesamte RAM-Nutzung: 817 MB / Frei: 5% = 439 MB [Host: NUC - 46 Prozesse]
Auf dem NUC läuft nur ioBroker, ist das normal oder verschwindet da irgendwo etwas?
-
@Ritter Und wo ist jetzt der Bezug zum Problem des Threaderstellers? Mach für dein Windooze-Problem einen eigenen Thread auf.
-
@LoxDUS Ne ganz blöde Frage: Kannst du den Speicher erhöhen?
Ich habe den Effekt beobachtet das bei mir der Speicher bis 4 GB zugeschrieben wird und das sich dann dort einpendelt. Wenn ich meinem CT nur 4 GB zuordne habe ich die gleichen Probleme wie du. Sobald ich aber 4,5 GB zuordne ist der Effekt weg.Ich habe keinerlei Ahnung wie Linux oder der ioBroker den Speicher verwaltet. Mir ist auch nicht klar warum das so ist. Aber ich kann das zu 100% reproduzieren. Deshalb läuft der CT jetzt eben mit 4,5 GB.
-
@Chaot sagte in Speicherlecks im ioBroker?:
Ich habe keinerlei Ahnung wie Linux
oder der ioBrokerden Speicher verwaltet. -
@Thomas-Braun sagte in Speicherlecks im ioBroker?:
@Ritter Und wo ist jetzt der Bezug zum Problem des Threaderstellers? Mach für dein Windooze-Problem einen eigenen Thread auf.
Ist doch auch ein Speicherproblem. Vielleicht kanns ja jemand löschen ich kanns nicht.
-
@Homoran Das kenne ich. Aber warum hört der Effekt auf sobald ich mehr als 4 GB zuordne?
-
@Chaot
Ich habe einen NUC mit LInux am laufen. Leider kann ich da den Speicher nicht erhöhen weil der Speicher fest verlötet ist. Wenn ich mit dem Befehl "top" mir den Speicherverbrauch ansehe bekomme ich folgende Auflistung:
-
@Chaot sagte in Speicherlecks im ioBroker?:
Aber warum hört der Effekt auf sobald ich mehr als 4 GB zuordne?
Gute Frage - erinnert mich an alte WIN Programme, die zu wenig Speicher monierten, obwohl so viel Speicher vorhanden war, dass diese Programme ihn wohl nicht adressieren konnten.
-
@OliverIO
Ich habe schon mehrfach versucht den javascript adapter neu zu starten. Wenn ich die Instanz beende erhöht sich der freie Speicher um ca. 4 bis 5% (von 7% auf 11%).
Ich habe das heute gegen Moittag nochmal gemacht.
In diesem Ausschnitt sieht man auch wie andere Adapter mit der Zeit immer mehr Speicher brauchen. Ich meine die Sägezahnkurve ist ja bei Java normal. Irgendwann schlägt der "Garbage-Collector" zu und räumt auf. ich habe aber das Gefühl das der nciht alles "aufgeräumt" bekommt. -
@Chaot
... hm, was mir noch einfällt: Viele ioBroker Instanzen laufen doch auch auf kleinen Raspberries mit z.T. nur 2GByte RAM. Mein Bekannt nutzt auch ioBroker mit dem gleichen NUC wie ich und der hat keinerlei Speicherprobleme. -
-
artur@ioBroker2:~$ free -h total used free shared buff/cache available Mem: 3,8Gi 3,2Gi 420Mi 6,0Mi 184Mi 387Mi Swap: 3,9Gi 79Mi 3,9Gi artur@ioBroker2:~$ who -r Runlevel 5 2020-12-17 06:45 artur@ioBroker2:~$ node -v v10.17.0 artur@ioBroker2:~$ nodejs -v v10.17.0 artur@ioBroker2:~$
-
@LoxDUS
siehe meine Anmerkungen von oben.
RunLevel 3 fahren, node 12 sauber installieren. -
Werde das jetzt mal auf meinem "Backupsystem" ausprobieren. Melde mich wenn ich was neues habe...
-
@Ritter Bei Windows geht die Spangezeigte Speichernutzung immer rauf. Und irgendwann kommt der Garbage Collector oder sowas und räumt wieder auf. Dann gibt es wieder mehr freien Speicher udn das ganze Spiel beginnt von Neuem.
Wenn Du keine sichtbaren Probleme hast, dann Lass Windows nur machen, das kann das schon. Mein ioBroker läuft sehr stabil unter Win 10. Habe den Info Adapter mittlerweile pausiert und mache mir einfach keine Sorgen mehr. -
Habe jetzt den Runlevel mit
systemctl set-default multi-user.target
auf das "alte" Runlevel 3 gestellt und nodejs geupdatet
artur@ioBroker:~$ nodejs -v v12.20.0
Der aktuelle Speicherverbrauch liegt laut ioBroker bei:
also es sind ca. 66% freiartur@ioBroker:~$ free -m total used free shared buff/cache available Mem: 3885 1213 2189 6 482 2439 Swap: 4027 0 4027 artur@ioBroker:~$ who -r Runlevel 3 2020-12-27 00:18 artur@ioBroker:~$ node -v v12.20.0 artur@ioBroker:~$ nodejs -v v12.20.0 artur@ioBroker:~$
Bin jetzt mal gespannt wie der Speicher morgen aussieht
-
@LoxDUS Warum ist dein swap file eigentlich so groß? Das ist ja mehr als dein RAM? Ich hab das bei mir auf 100 MB laufen:
pi@raspberrypi:/opt/iobroker $ free -h total used free shared buff/cache available Mem: 3,8Gi 895Mi 2,1Gi 9,0Mi 783Mi 3,0Gi Swap: 99Mi 0B 99Mi