NEWS
Javascriptadapter mehrere Instanzen?
-
Hallo ihr lieben,
mal ein Frage bezüglich des Javasriptadapters.
Macht es sinn die Menge an Scripte auf mehrere Instanzen aufzuteilen?
Um evtl das System etwas zu entlasten und so die Abarbeitung der Scripte zu beschleunigen?
MFG
Maggi
-
Hallo csamaggi,
es macht Sinn, mehrere Javascript Instanzen zu haben. Aber nicht aus Gründen der Performance. Den die Performance "leidet" eigentlich eher, denn jede Instanz braucht zusätzlich Speicher.
Ich rate dir allerdings deine Instanzen nach der Wichtigkeit der Skripte aufzuteilen.
Ich nutze derzeit 3 Instanzen:
javascript.0 für essentielle Dinge (Licht, Türöffner, Alarme, …)
javascript.1 für VIS Geschichten und andere Dienste
javascript.2 zum Testen und für Skripte, die Daten aus dem Netz holen
Die Trennung ist nicht mehr ganz so strikt, aber ich versuche, mich wieder daran zu halten.
In Instanz 0 sollten alle Skripte auf Herz und Nieren getestet sein. Änderungen werden nur vorsichtig vorgenommen.
In Instanz 1 ist es etwas lockerer. Ich nutze viele Skript für die Steuerung von VIS. Das passiert hier.
Instanz 2 ist derzeit meine Test und Entwickler Instanz. Da passieren natürlich auch mal Fehler.
Gibt es einen Fehler im Code, wird ggf. die Instanz, in der das fehlerhafte Skript steckt, neu gestartet. Manchmal ist der Fehler unvorhersehbar, wenn zum Beispeiel das Internet nicht erreichbar ist oder ein Datenlieferant (im Netz oder ein Gerät im Netzwerk) die Lieferbedingungen umstellt (neues Format, andere Adresse, etc.). Damit dann nicht gleich alle Skript ausfallen, kategorisiere ich wie oben beschrieben.
Gruß
Pix
-
pix hat alles Wichtige erklärt, vielleicht mache ich das zugrundelegen Problem noch etwas deutlicher:
Man stelle sich folgendes vor:
Die Hausautomatisierung umfasst auch die Steuerung des Lichts per Lichtschalter. Alle Lichtschalter schalten das Licht nicht direkt, sondern lösen lediglich ein Ereignis in ioBroker aus. Anders ausgedrückt: Ohne ioBroker läuft nichts. Wenn ioBroker abstürzt, dann kann das Licht im Haus nicht mehr geschaltet werden. Habe ich ein paar mal früher erlebt. Kann ganz schön frustrierend sein.
Wenn man selber programmiert, kommt es immer mal wieder dazu, dass wenn man einen Fehler macht oder zumindest etwas nicht bedenkt, dass der Javascript-Adapter abstürzt. Wenn man wie von pix vorgeschlagen die Entwicklung auslagert, so stürzt nur die Instanz des Adapters ab, in der die Entwicklung läuft.
Es kann aber durchaus passieren, dass ein Absturz sich nicht auf die Instanz beschränkt. Es kann also auch passieren, dass der Adapter insgesamt abstürzt oder noch schlimmer ioBroker insgesamt. Da mir das früher, als ich mehr programmiert habe, öfter passiert ist, habe ich einen zweiten zweiten Server aufgesetzt, in dem ich die lebenswichtige Funktion Licht verschoben habe. Das ist natürlich Luxus. Ansonsten habe ich wie pix mehrere Instanzen für Entwicklung und sekundäre Systeme.
Der Absturz eines ganzen Systems ist natürlich extrem selten. Bei mir hat dann aber eine simple http-Abfrage ausgereicht um das zu schaffen. Damit es auch nicht zu einfach war, ist der Fehler auch nur nachts um24:00 Uhr aufgetreten. Wer nicht alleine lebt, sollte hier vorsichtig sein. Wenn die Heizungssteuerung nicht funktioniert fällt das vielleicht nicht sofort auf. Aber Licht - nein das geht gar nicht. Ein vernünftiges Konzept kann Ärger mit der Regierung vorbeugen.
-
Erstmal Danke für die ausführliche Erklärung.
Mir war es durch aus bewusst wie das so zusammenhängt.
Meine Lichtschalter sind genauso gesteuert, für mich war die Frage eben ob es nicht besser wäre die Sjripte augszuteilen ob eben die einzelne Java Instanz zu entlasten wenn es aber an der Performance nichts bringt dann kann ich das auch so lassen wie ich es habe.
Klar habe ich auch eine Instanz als experimentelle.
Danke nochmal.
MFG
Maggi