NEWS
Steigender Ram/Swap nach update auf nodejs24
-
Ich habe den Test mit den Vorschlägen aus dem Thread wiederholt (Raspberry Pi 4, 4 GB, ~19 Instanzen, jsonl, js-controller 7.2.5, Messung per Skript alle 10 Minuten).
Vorgehen:
- Repository
Beta (latest)gelöscht (iob repo del "Beta (latest)"), nurstablebleibt. - Override nach Thomas' Vorschlag angelegt (
MALLOC_ARENA_MAX=2undNODE_OPTIONS=--max-semi-space-size=8). Per/proc/<pid>/environgeprüft, dass beide Variablen im js-controller-Prozess ankommen. - Auf Node 24.22.0 gewechselt.
Ergebnis (Host_RSS des js-controllers):
Node 22.23.3 Node 24.22.0 Node 24.22.0 mit Override, Beta-Repo gelöscht RSS im Normalbetrieb ~340-440 MB ~705 MB ~935 MB RSS nach Repository-Update kein Sprung (3 Updates, älterer js-controller) Spitze 1422 MB, danach Plateau ~1210 MB nicht mehr getestet HeapUsed ~140-160 MB ~143 MB ~122 MB MemAvail ~1350-1640 MB bis 285 MB ~890-960 MB im Normalbetrieb Der Override hat bei mir im Normalbetrieb von Node 24.22.0 nicht geholfen. Der RSS lag danach stabil bei ~935 MB (30 Minuten flach) statt bei ~705 MB ohne Override. Der Heap ist dabei sogar kleiner geworden, der Mehrverbrauch liegt also außerhalb des JS-Heaps. Das Repository-Update habe ich mit dieser Konfiguration nicht mehr ausgelöst, weil ich schon im Normalbetrieb bei nur ~900 MB verfügbarem RAM lag und das auf dem produktiven System nicht riskieren wollte.
Unter Node 22.23.3 konnte ich keine eindeutige Wirkung des Overrides erkennen. Mit js-controller 7.2.5 liegt Node 22 bei mir bei ~340-440 MB, vor dem Update waren es ~455 MB. Ob das am js-controller-Update lag, kann ich aus meinen Daten nicht sicher trennen.
Ich bin wieder auf Node 22.23.3 zurück und habe den Override entfernt. Danke an Bluefox für den Hinweis auf #3427 und an Thomas für den Vorschlag. Ich schaue gern, wenn es dazu einen Fix im js-controller gibt.
- Repository
-
Ich habe den Test mit den Vorschlägen aus dem Thread wiederholt (Raspberry Pi 4, 4 GB, ~19 Instanzen, jsonl, js-controller 7.2.5, Messung per Skript alle 10 Minuten).
Vorgehen:
- Repository
Beta (latest)gelöscht (iob repo del "Beta (latest)"), nurstablebleibt. - Override nach Thomas' Vorschlag angelegt (
MALLOC_ARENA_MAX=2undNODE_OPTIONS=--max-semi-space-size=8). Per/proc/<pid>/environgeprüft, dass beide Variablen im js-controller-Prozess ankommen. - Auf Node 24.22.0 gewechselt.
Ergebnis (Host_RSS des js-controllers):
Node 22.23.3 Node 24.22.0 Node 24.22.0 mit Override, Beta-Repo gelöscht RSS im Normalbetrieb ~340-440 MB ~705 MB ~935 MB RSS nach Repository-Update kein Sprung (3 Updates, älterer js-controller) Spitze 1422 MB, danach Plateau ~1210 MB nicht mehr getestet HeapUsed ~140-160 MB ~143 MB ~122 MB MemAvail ~1350-1640 MB bis 285 MB ~890-960 MB im Normalbetrieb Der Override hat bei mir im Normalbetrieb von Node 24.22.0 nicht geholfen. Der RSS lag danach stabil bei ~935 MB (30 Minuten flach) statt bei ~705 MB ohne Override. Der Heap ist dabei sogar kleiner geworden, der Mehrverbrauch liegt also außerhalb des JS-Heaps. Das Repository-Update habe ich mit dieser Konfiguration nicht mehr ausgelöst, weil ich schon im Normalbetrieb bei nur ~900 MB verfügbarem RAM lag und das auf dem produktiven System nicht riskieren wollte.
Unter Node 22.23.3 konnte ich keine eindeutige Wirkung des Overrides erkennen. Mit js-controller 7.2.5 liegt Node 22 bei mir bei ~340-440 MB, vor dem Update waren es ~455 MB. Ob das am js-controller-Update lag, kann ich aus meinen Daten nicht sicher trennen.
Ich bin wieder auf Node 22.23.3 zurück und habe den Override entfernt. Danke an Bluefox für den Hinweis auf #3427 und an Thomas für den Vorschlag. Ich schaue gern, wenn es dazu einen Fix im js-controller gibt.
@Michael-Schmitt danke, so eine Messreihe ist genau das, was uns hilft. Wichtig ist vor allem der Punkt, dass HeapUsed gleich bleibt oder sogar sinkt, während der RSS steigt. Unter Node 24 geht der Mehrverbrauch also nicht in den JS-Heap, sondern in den Speicher außerhalb davon. Das deckt sich mit dem, was tipp88 im Issue beobachtet hat: Selbst ohne den inaktiven Katalog bleibt beim Repo-Refresh noch eine deutliche Spitze.
Das Löschen von Beta hat sich trotzdem gelohnt: Dein
objects.jsonlist laut diag von 39 MB auf 19 MB geschrumpft.Kannst du deine Tabelle bitte auch direkt in https://github.com/ioBroker/ioBroker.js-controller/issues/3427 posten? Dort gehen die Daten nicht im Thread unter, und wir haben einen sauberen Vergleich Node 22 / 24 auf demselben Pi.
Bei Node 22 zu bleiben ist völlig in Ordnung, die Version wird noch bis Frühjahr 2027 unterstützt. Sobald es im js-controller eine Änderung am Repository-Handling gibt, melde ich mich hier.
- Repository
-
-
@Michael-Schmitt danke, so eine Messreihe ist genau das, was uns hilft. Wichtig ist vor allem der Punkt, dass HeapUsed gleich bleibt oder sogar sinkt, während der RSS steigt. Unter Node 24 geht der Mehrverbrauch also nicht in den JS-Heap, sondern in den Speicher außerhalb davon. Das deckt sich mit dem, was tipp88 im Issue beobachtet hat: Selbst ohne den inaktiven Katalog bleibt beim Repo-Refresh noch eine deutliche Spitze.
Das Löschen von Beta hat sich trotzdem gelohnt: Dein
objects.jsonlist laut diag von 39 MB auf 19 MB geschrumpft.Kannst du deine Tabelle bitte auch direkt in https://github.com/ioBroker/ioBroker.js-controller/issues/3427 posten? Dort gehen die Daten nicht im Thread unter, und wir haben einen sauberen Vergleich Node 22 / 24 auf demselben Pi.
Bei Node 22 zu bleiben ist völlig in Ordnung, die Version wird noch bis Frühjahr 2027 unterstützt. Sobald es im js-controller eine Änderung am Repository-Handling gibt, melde ich mich hier.
eine Messreihe
-
@Michael-Schmitt danke, so eine Messreihe ist genau das, was uns hilft. Wichtig ist vor allem der Punkt, dass HeapUsed gleich bleibt oder sogar sinkt, während der RSS steigt. Unter Node 24 geht der Mehrverbrauch also nicht in den JS-Heap, sondern in den Speicher außerhalb davon. Das deckt sich mit dem, was tipp88 im Issue beobachtet hat: Selbst ohne den inaktiven Katalog bleibt beim Repo-Refresh noch eine deutliche Spitze.
Das Löschen von Beta hat sich trotzdem gelohnt: Dein
objects.jsonlist laut diag von 39 MB auf 19 MB geschrumpft.Kannst du deine Tabelle bitte auch direkt in https://github.com/ioBroker/ioBroker.js-controller/issues/3427 posten? Dort gehen die Daten nicht im Thread unter, und wir haben einen sauberen Vergleich Node 22 / 24 auf demselben Pi.
Bei Node 22 zu bleiben ist völlig in Ordnung, die Version wird noch bis Frühjahr 2027 unterstützt. Sobald es im js-controller eine Änderung am Repository-Handling gibt, melde ich mich hier.
Für weitere Zeitreihen kannst du auch hier schauen falls du es nicht schon gesehen hast.
2 identisch konfigurierte docker Container mit node22/24
Einmal ohne und mit adapter(wenige)https://forum.iobroker.net/topic/85471/steigender-ram-swap-nach-update-auf-nodejs24/84
https://forum.iobroker.net/topic/85471/steigender-ram-swap-nach-update-auf-nodejs24/95
-
Für weitere Zeitreihen kannst du auch hier schauen falls du es nicht schon gesehen hast.
2 identisch konfigurierte docker Container mit node22/24
Einmal ohne und mit adapter(wenige)https://forum.iobroker.net/topic/85471/steigender-ram-swap-nach-update-auf-nodejs24/84
https://forum.iobroker.net/topic/85471/steigender-ram-swap-nach-update-auf-nodejs24/95
@Michael-Schmitt danke, ist im Issue angekommen.
@OliverIO @crunchip danke für die Links. Der Vergleich mit zwei gleich konfigurierten Containern unter Node 22 und 24 ist interessant, weil er die Grundlast von Node 24 vom Effekt beim Repo-Refresh trennt. Könnt ihr eure Messungen bitte auch kurz in https://github.com/ioBroker/ioBroker.js-controller/issues/3427 posten, am besten mit Node-Version, js-controller-Version, RSS und HeapUsed? Dann liegt alles an einer Stelle.
-
ich kann bei mir keinen Unterschied feststellen.
Master läuft auf einem Nuc in Proxmox VM und der Slave läuft auf einem Pi mit 8Gb.
Beide Systeme laufen jetzt 3Tage, seit dem Update.
Nur den iobroker habe ich ein paar mal gestoppt und wieder gestartet.

-
Hab gestern auf Node 24 aktualisiert und heute zwei Mal innerhalb von 15 Minuten Out of memory: Killed process. Wusste bisher gar nicht dass es sowas gibt. Dadurch bin ich hier gelandet. rpi4 mit 4GB ram. hab jetzt noch nicht alles hier gelesen, aber auch nicht so viel Zeit gerade mich dem zu widmen, werde jetzt erstmal wieder auf 22 downgraden
-
-
Hab gestern auf Node 24 aktualisiert und heute zwei Mal innerhalb von 15 Minuten Out of memory: Killed process. Wusste bisher gar nicht dass es sowas gibt. Dadurch bin ich hier gelandet. rpi4 mit 4GB ram. hab jetzt noch nicht alles hier gelesen, aber auch nicht so viel Zeit gerade mich dem zu widmen, werde jetzt erstmal wieder auf 22 downgraden
@skinni Zurück auf Node 22 ist auf einem Pi mit 4 GB vorerst die richtige Entscheidung. Node 22 wird noch bis Frühjahr 2027 unterstützt.
Unabhängig von der Node-Version lohnt es sich, nicht aktive Repositories zu löschen. Sie behalten ihren kompletten Katalog in
system.repositories, und das kostet bei jedem Repo-Refresh viel RAM. Welches Repo aktiv ist, siehst du mit:iob repoAlles, was dort nicht unter
Active repo(s)steht und was du nicht brauchst, kannst du entfernen, z. B.:iob repo del betaWenn du Zeit hast: Welcher Prozess wurde denn gekillt? Das siehst du mit
sudo dmesg -T | grep -i -A2 "out of memory"Ein
iob diagwäre auch hilfreich. Die Hintergründe sammeln wir in https://github.com/ioBroker/ioBroker.js-controller/issues/3427 -
es war beide Male Out of memory: Killed process 853 (iobroker.js-con)
Der controller ist innerhalb relativ kurzer Zeit von ca. 350-500 MB RSS auf knapp 900+ MB RSS angewachsen ist, also 400-500 MB mehr als unter node 22.
Momentan unter node 22 siehts so aus, da ist leider nicht viel Reserve für sowas:
i@iobroker:~ $ free -h total used free shared buff/cache available Mem: 3.7Gi 3.2Gi 217Mi 3.5Mi 410Mi 555Mi Swap: 2.0Gi 43Mi 2.0Gi i@iobroker:~ $ ps aux --sort=-rss | head -5 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND iobroker 30158 11.6 12.4 12307384 482620 ? Ssl Oct20 84:54 iobroker.js-controller iobroker 30192 0.3 8.1 22603132 316920 ? Sl Oct20 2:15 io.admin.0 iobroker 30258 2.0 6.8 12041396 265856 ? Sl Oct20 14:47 io.javascript.0 iobroker 30315 0.2 5.1 11978408 198904 ? Sl Oct20 1:51 io.backitup.0Hab das von gestern gefunden (mit node24):
i@iobroker:~ $ free -h total used free shared buff/cache available Mem: 3.7Gi 3.2Gi 271Mi 3.9Mi 299Mi 490Mi Swap: 2.0Gi 914Mi 1.1Gi i@iobroker:~ $ ps aux --sort=-rss | head -20 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND iobroker 24308 40.4 24.2 2828228 943220 ? Ssl 17:42 11:37 iobroker.js-controller iobroker 25840 9.6 11.1 10585832 432008 ? Sl 18:04 0:39 io.admin.0 iobroker 24537 4.1 5.0 1954864 195924 ? Sl 17:43 1:09 io.javascript.0 iobroker 25603 4.5 3.8 10043656 149220 ? Sl 18:01 0:25 io.influxdb.0 iobroker 25488 4.0 3.7 1714344 146620 ? Sl 18:01 0:25 io.history.0 iobroker 25710 2.0 3.6 1716540 143280 ? Sl 18:02 0:10 io.web.0 iobroker 24628 2.6 3.3 1664840 129944 ? Sl 17:44 0:43 io.shelly.1 iobroker 25756 1.9 3.3 1637940 129196 ? Sl 18:03 0:09 io.text2command.0 iobroker 24605 2.1 3.1 1656520 121020 ? Sl 17:43 0:35 io.shelly.0 iobroker 25035 1.0 3.0 1645508 118500 ? Sl 17:46 0:15 io.mihome-vacuum.0 iobroker 24815 3.4 3.0 1716936 117284 ? Sl 17:44 0:54 io.statistics.0 iobroker 24403 1.2 3.0 10241488 116752 ? Sl 17:43 0:21 io.telegram.0 iobroker 24837 0.8 2.7 1743992 108572 ? Sl 17:44 0:13 io.vis-2.0 iobroker 24798 1.4 2.6 10117884 102856 ? Sl 17:44 0:23 io.iot.0 iobroker 24836 1.2 2.6 1786764 101796 ? Sl 17:44 0:20 io.mqtt.0 iobroker 24775 5.2 2.6 1285028 101316 ? Sl 17:44 1:25 io.fb-checkpresence.0 iobroker 24789 1.0 2.6 1713332 101116 ? Sl 17:44 0:17 io.mihome-vacuum.1 iobroker 24708 2.0 2.5 1380856 99632 ? Sl 17:44 0:32 io.zigbee.0 iobroker 24620 0.9 2.4 1654744 96212 ? Sl 17:44 0:15 io.backitup.0 -
es war beide Male Out of memory: Killed process 853 (iobroker.js-con)
Der controller ist innerhalb relativ kurzer Zeit von ca. 350-500 MB RSS auf knapp 900+ MB RSS angewachsen ist, also 400-500 MB mehr als unter node 22.
Momentan unter node 22 siehts so aus, da ist leider nicht viel Reserve für sowas:
i@iobroker:~ $ free -h total used free shared buff/cache available Mem: 3.7Gi 3.2Gi 217Mi 3.5Mi 410Mi 555Mi Swap: 2.0Gi 43Mi 2.0Gi i@iobroker:~ $ ps aux --sort=-rss | head -5 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND iobroker 30158 11.6 12.4 12307384 482620 ? Ssl Oct20 84:54 iobroker.js-controller iobroker 30192 0.3 8.1 22603132 316920 ? Sl Oct20 2:15 io.admin.0 iobroker 30258 2.0 6.8 12041396 265856 ? Sl Oct20 14:47 io.javascript.0 iobroker 30315 0.2 5.1 11978408 198904 ? Sl Oct20 1:51 io.backitup.0Hab das von gestern gefunden (mit node24):
i@iobroker:~ $ free -h total used free shared buff/cache available Mem: 3.7Gi 3.2Gi 271Mi 3.9Mi 299Mi 490Mi Swap: 2.0Gi 914Mi 1.1Gi i@iobroker:~ $ ps aux --sort=-rss | head -20 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND iobroker 24308 40.4 24.2 2828228 943220 ? Ssl 17:42 11:37 iobroker.js-controller iobroker 25840 9.6 11.1 10585832 432008 ? Sl 18:04 0:39 io.admin.0 iobroker 24537 4.1 5.0 1954864 195924 ? Sl 17:43 1:09 io.javascript.0 iobroker 25603 4.5 3.8 10043656 149220 ? Sl 18:01 0:25 io.influxdb.0 iobroker 25488 4.0 3.7 1714344 146620 ? Sl 18:01 0:25 io.history.0 iobroker 25710 2.0 3.6 1716540 143280 ? Sl 18:02 0:10 io.web.0 iobroker 24628 2.6 3.3 1664840 129944 ? Sl 17:44 0:43 io.shelly.1 iobroker 25756 1.9 3.3 1637940 129196 ? Sl 18:03 0:09 io.text2command.0 iobroker 24605 2.1 3.1 1656520 121020 ? Sl 17:43 0:35 io.shelly.0 iobroker 25035 1.0 3.0 1645508 118500 ? Sl 17:46 0:15 io.mihome-vacuum.0 iobroker 24815 3.4 3.0 1716936 117284 ? Sl 17:44 0:54 io.statistics.0 iobroker 24403 1.2 3.0 10241488 116752 ? Sl 17:43 0:21 io.telegram.0 iobroker 24837 0.8 2.7 1743992 108572 ? Sl 17:44 0:13 io.vis-2.0 iobroker 24798 1.4 2.6 10117884 102856 ? Sl 17:44 0:23 io.iot.0 iobroker 24836 1.2 2.6 1786764 101796 ? Sl 17:44 0:20 io.mqtt.0 iobroker 24775 5.2 2.6 1285028 101316 ? Sl 17:44 1:25 io.fb-checkpresence.0 iobroker 24789 1.0 2.6 1713332 101116 ? Sl 17:44 0:17 io.mihome-vacuum.1 iobroker 24708 2.0 2.5 1380856 99632 ? Sl 17:44 0:32 io.zigbee.0 iobroker 24620 0.9 2.4 1654744 96212 ? Sl 17:44 0:15 io.backitup.0@skinni danke. Das ist genau das Bild aus dem Issue: Unter Node 24 legt der js-controller um rund 400 bis 500 MB RSS zu, und auf einem Pi mit 4 GB reicht das dann nicht mehr. Bleib also vorerst bei Node 22.
Dein System ist aber auch unter Node 22 schon ziemlich knapp, 555 MB verfügbar ist nicht viel Reserve. Hast du die inaktiven Repos schon gelöscht? Poste bitte mal die Ausgabe von:
iob repoWenn dort außer dem aktiven Repo noch
betaoder andere stehen, lösch sie mitiob repo del <name>. Das macht die Spitze beim täglichen Repo-Refresh deutlich kleiner, auch unter Node 22.Ansonsten lohnt sich ein Blick auf die Instanzen: Brauchst du wirklich alle, z. B. history und influxdb parallel? Jede Instanz kostet auf dem Pi rund 100 MB.
Wenn du magst, poste die beiden
ps-Ausgaben (Node 22 / Node 24) auch in https://github.com/ioBroker/ioBroker.js-controller/issues/3427, dann haben wir einen weiteren Vergleich auf einem Pi 4.
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
