NEWS
[gelöst]Skript verursacht hohe CPU Auslastung
-
@Dominik-F sagte in Skript verursacht hohe CPU Auslastung:
"Fenster/Heizung/Steuerung"
gibt es denn dies Aufzählung/Funktion überhaupt? Sollte sich doch auf eine Funktion beziehen
-
Ja, die gibt es. Beide Skripte funktonieren und tun was sie sollen, nur die CPU Last geht komischerweise hoch wenn die parallel laufen.
-
Was passiert denn wenn Du nur das 2te Skript laufen läßt?
-
@Dominik-F deine Fenster sind dann "doppelt" hinterlegt?, oder anders gefragt, hast du zwei Funktionen bei deinen Fenstern hinterlegt?
- Funktion Fenster
- Funktion Fenster/Heizung/Steuerung*
als Gedanken-Beispiel Funktion Audio/Musik....ist aber functions.audio
-
const praefix = "javascript.0.Heizung.Fensterauswertung."; //Grundpfad für Script DPs - Muß innerhalb javascript.x sein. const WelcheFunktionVerwenden = "Fenster/Heizung/Steuerung"; // Legt fest nach welchem Begriff in Funktionen gesucht wird. Diese Funktion nur dem Datenpunkt zuweisen, NICHT dem ganzen Channel!
Zeile 3 is Käse würd ich mal meinen.
-
-
@Dominik-F sagte in Skript verursacht hohe CPU Auslastung:
wieso Käse?
Naja, als EDV Dinosaurier käm ich nie auf die Idee Slashs oder Leerzeichen in den Funktionsbezeichnungen zu verwenden, aber ok, schön wenns klappt.
Was mir grad einfällt, so wie Du das hast, greifen logischerweise immer beide Skripte gleichzeitig auf die jeweiligen Datenpunkte zu, evtl. macht dass das Problem. Warum das dann aber immer und nicht nur beim Triggern oder refreshen der Tabelle ist weis ich dann auch nicht.
-
Na als EDV Noob komm ich natürlich auf solche Ideen
Okay, also besser "Fenster_Heizung_Steuerung" ? -
Also, ich habe jetzt lange alles mögliche getestet und es liegt so wie es aussieht am 2ten Skript.
Habe nun das erste Skript in das 2te kopiert und nur 2 Sachen verändert, die Funktion und den Pfad. Sobald ich dann ein Fenster öffne geht die CPU Last hoch. Beim ersten komischerweise nicht.Das sind nun die einzigen Unterschiede der Skripte.
Skript 1:const praefix = "javascript.0.FensterUeberwachung."; //Grundpfad für Script DPs - Muß innerhalb javascript.x sein. const WelcheFunktionVerwenden = "Fenster"; // Legt fest nach welchem Begriff in Funktionen gesucht wird. Diese Funktion nur dem Datenpunkt zuweisen, NICHT dem ganzen Channel!
Skript 2:
const praefix = "javascript.0.Heizung.Fensterauswertung."; //Grundpfad für Script DPs - Muß innerhalb javascript.x sein. const WelcheFunktionVerwenden = "FensterHeizung"; // Legt fest nach welchem Begriff in Funktionen gesucht wird. Diese Funktion nur dem Datenpunkt zuweisen, NICHT dem ganzen Channel!
-
@Dominik-F sagte in Skript verursacht hohe CPU Auslastung:
Sobald ich dann ein Fenster öffne geht die CPU Last hoch.
Das is ne wichtige Info die bisher fehlte, ich dachte die is immer hoch. Bleibt die dann hoch oder geht die nach Zeit x wieder runter? Wenn das beim Fenster öffnen passiert, denk ich wirklich es liegt dran das dann beide Skripte in der gleichen ms triggern und genau gleichzeitig Daten schreiben wollen.
Edit: Was passiert denn wenn Du mal wirklich nur unterschiedliche Datenpunkte überwachst, also keine die schon vom jeweils anderen Skript abgedeckt werden? Sollte der Effekt dann nicht auftreten würde das die These stützen.
-
sorry das ich jetzt erst antworte, ich lag das We im Krankenhaus und bin erst heute entlassen worden.
Ich habe es mal mit unterschiedlichen Datenpunkten versucht und die CPU Last blieb unten. Dann ist mir folgender Satz ins Auge gesprungen:"denk ich wirklich es liegt dran das dann beide Skripte in der gleichen ms triggern und genau gleichzeitig Daten schreiben wollen."
Habe dann mal folgende Zeile etwas verändert in:const IgnoreTime = 3000; // 10000 ms = 10 Sekunden
Nach erstem Test scheint es nun zu funktionieren. Ich werde es mal ein paar Tage beobachten und mich dann melden fals die CPU Last wieder hoch geht.
-
Hi,
ich habe das Skript jetzt einige Tage am laufen und das gleiche Problem.Im Log sind keine Fehler.
Wenn ich das Script aktiviere , dann steigt der Javascript Adapter auf über 10000 Eingänge und 8000 Ausgänge.
Desweitern geht die CPU Last auf über 50 %.
Wenn ich das Script wieder deaktiviere ist alles wieder normal.
Last liegt dann bei ca. 5%
-
Hast du eine Instanz des Skriptes laufen oder 2?
-
@Dominik-F
1 Instanz wieso ? -
Weil das bei mir die Ursache war bzw. das beide Instanzen in der gleichen ms getriggert haben.
Ich würde dir dann raten, das Problem im Thread des Verfassers des Skriptes nochmal zu stellen.
https://forum.iobroker.net/topic/31674/vorlage-generisches-fensteroffenskript-vis/263 -
@Dominik-F
welche instanzen meinst du? -
@totocotonio er hatte 2 Instanzen laufen siehe https://forum.iobroker.net/post/447536
-
@crunchip
ah ok, das wusste ich nicht.Ich habe es gerade noch einmal versucht.
Der JS Adapter geht hoch und steigt aus. cpu auf 60-70%
Es kommen aber keine Fehler und die Fenster werden angezeigt.
-
@totocotonio vllt bei dir ein Fenster oder Tür falsch hinterlegt/Aufzählung....oder irgendwo doppelt hinterlegt
oder irgendeine Leiche, die du übersehen hast -
@totocotonio sagte in [gelöst]Skript verursacht hohe CPU Auslastung:
Der JS Adapter geht hoch und steigt aus. cpu auf 60-70%
Es kommen aber keine Fehler und die Fenster werden angezeigt.Also wenn der JS Adapter aussteigt passt iwas gar nicht. Da wir das aber nicht reproduzieren können, würd ich vorschlagen:
- Auch wenn keine Fehler kommen, zeig doch mal ein komplettes Startlog
- Nimm mal allen Türen/Fenstern die Funktion weg bis auf einen und gugg ob das Verhalten weiterhin so bleibt.
- Kommt das Problem schon beim Skript starten oder erst wenn was geöffnet wird?