NEWS
Hoher RAM Verbrauch ioBroker unter Windows
-
Hallo zusammen,
seit einiger Zeit ist es mir aufgefallen, dass ioBroker unter Windows während des laufenden Betriebs immer mehr Arbeitsspeicher beansprucht.Ich habe gestern einmal auf meinem Laptop mit Windows 8 den Windows Installer (Version 1.5.12 enthälte Node 10.16.0 und npm 6.9.0 ) auf meinem Laptop installiert und diesen einen Tag lang laufen lassen. Der Laptop hat einen Intel i7 4712HQ mit 2,3GHz und 16 GByte RAM.
Innerhalb von 24h ist der RAM Verbrauch von 8 auf 6 GByte freien RAM gesunken.
Hierbei lief meine aktuelle ioBroker config
Die gleiche Config (auch über den Windows Installer v1.5.12) hab ich dann auch parallel auf meinem kleinen Server (Beebox N3150 Intel Celeron 3 Kerne 1,6 GHz, 16 GByte RAM mit Windows 10). Dort hat sich der freie RAM von 11 GByte auf 6 GByte in 24h reduziert
Das gleiche Verhalten hab ich auf dem Beebox Server auch mit einer herkömmlich installierten ioBroker Installation beobachtet.
Ich hab dann nochmal eine frische ioBroker Konfiguration über den Windows Installer ohne irgendwelche Instanzen für 24h laufen lassen. Hier hat sich jetzt der freie RAM von 10 GByte auf aktuell 4 GByte bei 100% CPU Auslastung verringert. Ich habe gerade sogar Schwierigkeiten mich über den Remotedesktop mit dem Server zu verbinden.Kennt jemand diese Probleme? Wie ist der RAM Verbrauch von eurer ioBroker Installation auf eurer Hardware?
-
Ich hab jetzt die letzten zwei Tage auf der Beebox keinen ioBroker laufen gehabt, dafür nur die Programme die sonst dort drauf auf (Confluence Server, Bitbucket Server, JIRA Server). Hier ist der RAM Verbrauch konstant. Es sind 5 GByte RAM belegt, aber es zeichnet sich nicht das Verhalten mit dem schwindenden RAM ab, welches man sieht, wenn ioBroker läuft.
Ist euer RAM Verbrauch mit euren ioBroker Installationen unter Windows relativ konstant?
-
Hatte bisher unter Win 10 noch keine offensichtlichen Probleme mit dem ioBroker unter Win. Allerdings beobachte ich derzeit den Speicher nicht explizit.
Welche Variable/Objekt/Datenpunkt sollte ich beobachten bzw. in history aufnehmen? Den systeminfo-Adapter habe ich nicht in Betrieb, da er Fehlermeldungen produzierte.
Was mir allerdings nach dem 1903 Update auffiel: Nach Verlassen des Remote Desktop hat sich eine erhöhte Prozessorlast eingestellt. Bei UltraVNC ist das nicht so und vor dem 1903 Update war das auch nicht so.Edit: Bei mir gibt es folgende ID:
info.0.sysinfo.memory.info.active
oder auch
info.0.sysinfo.memory.info.used
Allerdings wird da jede Sekunde ein neues Datum generiert. Das sind mir zu viele Daten. Ich stelle mal auf loggen von Änderungen >100MByte. Wenn der Speicher aufgefressen wird, sollte ich das auch früher oder später sehen.
-
ioBroker braucht RAM das ist richtig, aber besonders unter Windows sollte man nicht mehr auf möglichst viel freien Arbeitsspeicher spekulieren. Gerade Windows nutzt freien RAM für alles mögliche. Bedenklicher scheint mir die 100% CPU Auslastung das macht mein ioBroker nicht. Ich denke auch Windows 8 ist nicht optimal für ioBroker, entweder Windows 10 oder ein Server-OS.
Du solltest bei anhaltenden Problemen den Tasks auf den Grund gehen die das verursachen, entweder mit Prozessexplorer oder ganz einfach mit dem Taskmanager bzw. Ressourcenmonitor.
Bei mir läuft ioBroker auf einem HP-Miniserver Gen8 mit Pentium CPU GT1610 (2,3 GHz oder sowas) und 16 GB über die üblichen 4 Wochen (wegen Patches) auf Windows 10 1903 sehr unauffällig. Deutlich besser als auf dem RASPI. Nebenbei verarbeitet der Rechner bei mir auch noch den Automation Server von Mediola, nimmt Musik auf, ist mein Gatewayserver von aussen und einiges mehr. Aktuelle CPU Last 21%. -
Auf meinem Server (beebox) läuft ein Windows 10 Pro 1803.
@klassisch In meinen Diagrammen hatte ich folgenden Datenpunkt aufgezeichnet: info.0.sysinfo.memory.info.available
@lobito Ich werde einmal schauen, ob ich mit dem Process explorer etwas mehr herausfinden kann.
Welche ioBroker /node Version setzt ihr auf euren Windows Systemen gerade ein?
Aus der Erinnerung heraus hatte ich "damals" das Problem auch nicht. Ich behaupte, dass sich der Server erst so komisch verhält als ich im Juni auf Node 8.16 aktualisiert habe. Das ist aber jetzt nur noch meine Erinnerung. -
Hallo,
speichere gerade "used" und "free" auf history. Die Zahlenwerte scheinen bei mir aber mit "active" und "available" identisch zu sein.
Anfangs habe ich nur Änderungen >100MBytes und mittlerweile >50MBytes aufgezeichnet. Ansonsten werden einfach zu viele unnütze Daten erzeugt. Habe noch nicht gefunden, wie man beim Info-Tab die sampling rate ändert. Ansonsten würde ich auch Systemauslastung bzw. Prozessorauslastung historisieren.
So sieht es seit gestern Mittag aus:
Also in der Tendenz etwa wie bei Dir.Meine Prozessorauslastung ist bei 20% bis 30%. Davon entfallen 3 bis 5% auf den UltraVNC, 1 bis 2% auf den TasManager und 1 bis 4% auf den Defender. 5 bis 15% auf eine andere, recht daten- und rechenintensive Applikation. Das nodejs - bundle ist schwierig zu erfassen. Viele Prozesse, die meistens bei 0% rumdümpeln. Manchmal blitzen ein, zwei mit um oder kleiner 1% auf.
Hatte zuerst Win10 1809 und mittlerweile 1903 drauf. Lief bisher immer stabil, keine ungeplanten Restarts. Nur nach Updates oder beim Einrichten bzw. Rumspielen.ioBroker mit dem Installer von @Stabilostick installiert.
C:\Program Files\iobroker\ioBrMain>node -v v10.16.0 C:\Program Files\iobroker\ioBrMain>npm -v 6.9.0 ioBroker.admin 3.6.2 Objekte: 8458, Zustände: 6605
Betriebsystemname Microsoft Windows 10 Pro Version 10.0.18362 Build 18362 Weitere Betriebsystembeschreibung Nicht verfügbar Betriebsystemhersteller Microsoft Corporation Systemname DESKTOP-irgendwas Systemhersteller LENOVO Systemmodell 20CL001JMS Systemtyp x64-basierter PC System-SKU LENOVO_MT_20CL_BU_Think_FM_ThinkPad X250 Prozessor Intel(R) Core(TM) i5-5300U CPU @ 2.30GHz, 2295 MHz, 2 Kern(e), 4 logische(r) Prozessor(en) BIOS-Version/-Datum LENOVO N10ET33W (1.12 ), 06.04.2015 SMBIOS-Version 2.7 Version des eingebetteten Controllers 1.11 BIOS-Modus Vorgängerversion BaseBoard-Hersteller LENOVO BaseBoard-Produkt 20CL001JMS BaseBoard-Version SDK0E50510 WIN Plattformrolle Mobil Sicherer Startzustand Nicht unterstützt PCR7-Konfiguration Bindung nicht möglich Windows-Verzeichnis C:\WINDOWS Systemverzeichnis C:\WINDOWS\system32 Startgerät \Device\HarddiskVolume1 Gebietsschema Deutschland Hardwareabstraktionsebene Version = "10.0.18362.267" Benutzername DESKTOP-irgendwas\admin Zeitzone Mitteleuropäische Sommerzeit Installierter physischer Speicher (RAM) 8,00 GB Gesamter physischer Speicher 7,70 GB Verfügbarer physischer Speicher 3,98 GB Gesamter virtueller Speicher 11,0 GB Verfügbarer virtueller Speicher 7,05 GB Größe der Auslagerungsdatei 3,25 GB Auslagerungsdatei C:\pagefile.sys Kernel-DMA-Schutz Aus Virtualisierungsbasierte Sicherheit Nicht aktiviert Unterstützung der Geräteverschlüsselung Ursachen dafür, dass die automatische Geräteverschlüsselung nicht erfolgreich war: Die PCR7-Bindung wird nicht unterstützt., Fehler bei der Schnittstelle für Hardwaresicherheitstests. Das Gerät unterstützt kein Modern-Standby. Hyper-V - VM-Monitormoduserweiterungen Ja Hyper-V - SLAT-Erweiterungen (Second Level Address Translation) Ja Hyper-V - Virtualisierung in Firmware aktiviert Nein Hyper-V - Datenausführungsverhinderung Ja
Ja, Win war leider in Legacy Bios und nicht in UEFI installiert.
Task Manager läuft normalerweise nicht mit.
Zur Grobkontrolle läuft CoreTemp, holt alle paar Sekunden die Temp und speichert sie alle 30 Sekunden in ein csv, welches ich ab und an via TotalCommander hole und in LibreOffice Calc sichte.
Alles im Grünen Bereich.
Schlanke Methode, aber empfindlich genug, um die o.g. deutlich erhöhte Prozessorlast nach Beenden des Remote Desktops ab dem ersten 1903 Update zu erkennen.
Die frühere Installation auf meinem OPi lief auch recht stabil (außer nach Kernel-Update). Am Ende kam es aber wegen Datenflut zu einigen history-restarts. -
@klassisch war jetzt mit UltraVNC auf dem Rechner und habe etwas herumgespielt. U.a. mit dem Process Explorer.
Daei kam es anscheinend zu einer Speicherbereinigung, garbage collection o.ä.
Kann man mit dem Prozess Explorer auch aufzeichnen?
-
Natürlich lässt sich aufzeichnen....
Geben Sie an der Befehlszeile procmon.exe, und drücken Sie Process Monitor starten. Schließen Sie das Eingabeaufforderungsfenster. Hinweis Wenn Sie dies tun, startet Process Monitor. Reproduzieren Sie das Problem. Klicken Sie im Menü Datei auf Speichern , um die Protokolldatei Process Monitor. Klicken Sie unter Ereignisse zu speichernaktivieren Sie das Kontrollkästchen alle Ereignisse . Klicken Sie unter FormatNative Process Monitor Format (PML) das Kontrollkästchen. Geben Sie im Feld Pfad einen Speicherort auf der Festplatte die Datei gespeichert werden soll.
procmon ist der prozess explorer
-
Welche ioBroker /node Version setzt ihr auf euren Windows Systemen gerade ein?
Betriebssystem
win32
Architektur
x64
CPUs
2
Geschwindigkeit
2295 MHz
Modell
Intel(R) Celeron(R) CPU G1610T @ 2.30GHz
RAM
15.84 GB
System Betriebszeit
1 T. 06:20:51
Node.js
v8.16.0 (Recommended version v10.16.2)
NPM
6.4.1
Anzahl der Adapter
252Übrigens ist es eine eher schlechte Idee wenn man den ioBroker unter Verdacht hat, mit diesem zu monitoren. Betriebszeit... wir hatten gestern 7h Stromausfall, war ganz toll niemand daheim ausser dem Hund und der Katze. Das war richtig Stress alles Remote wieder auf die Beine zu bringen.
-
@lobito sagte in Hoher RAM Verbrauch ioBroker unter Windows:
Natürlich lässt sich aufzeichnen....
Vielen Dank, aber bei mir gibt es dann immer nur eine 14k txt Datei mit einem snapshot. Ich hätte aber gerne den Verlauf.
-
@klassisch said in Hoher RAM Verbrauch ioBroker unter Windows:
@lobito sagte in Hoher RAM Verbrauch ioBroker unter Windows:
Natürlich lässt sich aufzeichnen....
Vielen Dank, aber bei mir gibt es dann immer nur eine 14k txt Datei mit einem snapshot. >Ich hätte aber gerne den Verlauf.
Hmm stimmt, dann bleibt nur perfmon... da muss man sehr genau definieren was man will. Ist im Lieferumfang von Win. Um es kurz zu machen, man muss einen neuen Datensammelsatz definieren und kann dann die Berichte abrufen. Mit etwas Hilfe von Google sollte das auch für Laien lösbar sein Hint: https://www.pc-erfahrung.de/windows/anleitungen/performance-monitor-windows-perfmon.html
Gerade nochmal gegrübelt, wenn perfmon zu kompliziert ist. Sysmon könnte auch helfen.. Doku ist da: https://opdhsblobprod03.blob.core.windows.net/contents/6bb3fa9c72bf4849a1db2c526a264f46/63bb4b4d40dfe449aec96040a81c5f31?sv=2015-04-05&sr=b&sig=V7Xu0IBTlE43QYt85RXifPP4704F6c%2B0MG4HFhYPD8c%3D&st=2019-08-15T20%3A46%3A45Z&se=2019-08-16T20%3A56%3A45Z&sp=r -
Ich hab gestern noch einmal mit iobroker mitgeloggt. Hierbei wurde innerhalb von 24h der freie RAM von 12 GB auf 2 GB verringert. Die CPU Auslastung lag nach 24 zwichen 60 und 100%. Das System war hierbei kaum noch benutzbar über den Remotedesktop. Einen Dienst konnte ich bisher noch nicht identifizieren, welcher auf dem Rechner querschlägt.
Am Ende hat der Prozes wmiprvse ca. 30% CPU Leistung in Anspruch genommen. Hierzu habe ich das hier als Hilfe gefunden: https://support.microsoft.com/de-de/help/4483874/high-cpu-usage-by-wmiprvse-exe-process. Der Prozess scheint aber nach meinem Verständnis nicht die Ursache zu sein.
Ich mache gerade nochmal eine Aufzeichnung von CPU und RAM mit dem Tool perfmon. Danke für die Anleitung @lobito
Ebenfalls habe ich gestern abend erstmal alle noch offenen Windows Patches installiert, welche noch offen waren. Ein Upgrade auf Win 10 Version 1903 wird mir noch nicht angeboten. -
Bei mir sieht es aktuelle so aus:
Von Zeit zu Zeit scheint da auf bzw. umgeräumt zu werden.
CPU Last ist "normal" was ich aber indirekt über die Temp mitlogge.
Was Du auch tun kannst:- mit UltraVNC statt mit Remote Desktop auf den Rechner gehen. Wie oben erwähnt macht bei meinem System der Remote Desktop NACH dem Verlassen CPU-Last, was ich an der Temp sehe. Allerdings kam dies bei mir erst ab dem 1903 Update. Aber wer weiß....
- History Dateien mit dem Total Commander o.ä. anschauen, um grob zu sehen, wer wie viele Daten schreibt. Bei mir sind es derzeit 5 bis 8 MByte pro Tag, es waren aber schonmal deutlich mehr durch eine Prozessüberwachung. Ein Datensatz pro Sekunde sind aus meiner Sicht unnötig viel.
- Das Loging des Info-Adapters einschränken. Ich logge nur Speicheränderungen >= 50MByte, was die obigen Kurven ergibt und bei mir mit erträglichen 40kByte pro Kanal zu Buche schlägt. Prozessorlast logge ich gar nicht, da mir 1 Datensatz/s zu viel sind. Logge ich indirekt über die Temperaturen und die Leitung (in W) mit CoreTemp. Dabei lasse ich die Temp alle 5 sek anzeigen und alle 30sec in eine Datei speichern.
- Einzelne ioBroker-Adpter deaktivieren.
-
Das Speicher wieder freigegeben wird konnte ich leider bisher nicht beobachten. Das ist die Grafik von gestern wo über den Info Adapter alle 10s die Daten für RAM und CPU aktualisiert wurden:
Ich hab auch schon eine neue ioBroker Instanz aufgesetzt, welche nur die vorinstallierten Adapter enthielt und dort hatte ich das gleiche Verhalten.
Wenn ich in den nächsten Tagen keine wirkliche Lösung finde werde ich zum großen Hammer greifen und einmal Windows neu installieren. -
@Feuersturm sagte in Hoher RAM Verbrauch ioBroker unter Windows:
wo über den Info Adapter alle 10s die Daten für RAM und CPU aktualisiert wurden
Wo kannst Du die 10 Sekunden einstellen? Das habe ich noch nicht gefunden und meiner aktualisiert jede Sekunde. Meiner Meinung nach würde auch ein Datensatz pro Minute für solche Trenduntersuchungen reichen.
-
Gehe bei den Instanzen auf die Instanz info.0 und klicke dort auf den Werkzeugschlüssel. Dann scrollst du ganz nach unten und dort kannst du über die Schieberegler die Aktualisierungsrate einstellen.
-
Gibts bei mir nicht. Sieht so aus
Version 1.3.7 -
Hmm, ich hab auch die Adapterversion 1.3.7 installiert. Bei mir sieht es so aus:
-
Vielen Dank! Habe jetzt in der Adapteransicht den Upload Button gedrückt und dann siehts bei mir auch so aus. Aber leider ist das max Zeitintervall bei 10 Sekunden.
Temperaturen sehe ich noch immer nicht. -
Habe jetzt mal das Logging der Prozessorlast aktiviert. Für die Gesamtlast speichere ich Änderungen >=3 W auf und für system- und userload jeweils Änderungen >=2W auf. Weiß jemand, ob mit userload die ioBroker generierte Last gemeint ist?