NEWS
Adapterzustand, welcher Datenpunkt?
-
@ticaki sagte in Adapterzustand, welcher Datenpunkt?:
Wenn ein Adapter laufend neu startet gehe ich nicht mehr davon aus, das was natürlich ist Ich hab echt keine Idee - Ich hab meinen Adapter auch mal durch ein Script abgeschossen so das er keine Fehlermeldungen von sich gegeben hat, aber ich weiß nciht mehr wie. Hast du mal alle Skript auf pause gestellt? So hab ichs damals gemacht.
Alle Skripte auf Pause hab ich auch probiert. Hat nicht geholfen.
Hat gefühlt ne Stunde gedauert und ich hab erstmal überall ne „1“ hingeschrieben bei den Skriptnamen die normalerweise immer aktiv sein sollen.
Dann hat mich mein Linux-Kumpel belehrt und gesagt ich soll mal in die Bibliothek gehen und ein Buch über programmieren nehmen und Seite 1 aufschlagen, da steht das debugmeldungen gut sind.Jetzt hab ich gegrübelt wie man‘s denn richtig macht.
Meine Idee:
Debug-Blockly am Anfang vom Script. Damit nich ins log geschrieben wird das es gestartet wurde.
Debugmodus aus „debug“ und nicht auf „info“ damit das log nicht zugemüllt wird.
Dann hoffe ich im Problemfall den js adapter auf debug stellen zu können um dann ablesen zu können welches script gestartet und das Problem ausgelöst hat.Hab herausgefunden das man auch die anzahl der Skripte beschränken kann. Wenn also ein Script 3000x ausgeführt wird, dann stoppt der adapter und sagt welches script das Problem ist. (wenn man glück hat)
Einmal hatte ich aber ein Problem mit dem js adapter. Und das Problem war dee Device-watcher adapter der einen bug hatte. Bin ich nicht drauf gekommen. Moritz hat mir helfen müssen.
Ich gehe im moment davon aus, das es immernoch ein bug im iobroker selbst ist. Denn das der js adapter jede minute neustartet, das ist ja bewiesenermaßen ein bug im admin adapter. Dachte das wäre weg, nachdem ich den adminadapter geupdatet habe.
Lustig: Im Moment startet der js adapter nicht mehr jede Minute! Ich hab NIX verändert.
-
@roelli
Dann hoffe ich mal das es so bleibt. -
@ticaki sagte in Adapterzustand, welcher Datenpunkt?:
@roelli
Dann hoffe ich mal das es so bleibt.Ist garnicht jede Minute. Mal funktioniert der js adapter fast eine Stunde ohne neustart.
0:29 down 0:30 up 0:45 down 0:47 up 1:01 down 01:08 up 1:43 down 1:48 up 1:53 down 1:55 up 2:00 down 2:01 up 2:26 down 2:29 up 3:49 down 3:55 up 4:00 down 4:06 up 4:11 down 4:12 up 4:17 down 4:17 up 4:22 down 4:28 up 4:33 down 4:39 up 5:34 down 5:36 up 6:06 down 06:15 up 06:20 down 06:21 up 06:51 down 06:53 up 07:03 down 07:06 up 07:46 downm 07:47 up 08:22 down 08:23 up 08:28 down 08:31 up 08:56 down 08:57 up 09:52 down 09:56 up 10:01 down 01:02 up 10:12 down 10:12 up
-
@roelli startet da jedesmal ein Skript und läuft dann amok?
-
@homoran sagte in Adapterzustand, welcher Datenpunkt?:
@roelli startet da jedesmal ein Skript und läuft dann amok?
Fühlt sich so an.
Kann aber theoretisch nicht sein, denn:
Ich habe alle Skripte schon pausiert. Problem besteht weiterhin.
Ich habe einen zweiten JS Adapter installiert und den ersten deaktiviert, zweiter JS Adapter schmiert auch ab.
Liegt also gefühlt nicht an den Skripten und nicht am JS Adapter.Ich kann mir mal die mühe machen und per debug-Blockly den Skriptnamen in jedes der 200 Skripte einfügen in der Hoffnung das dann zuerst geloggt wird und DANN das Skript ausgeführt wird. Aber wenn alle Skripte ja ausgeschaltet sind und das Problem weiterhin auftritt, dann kann es ja nicht daran liegen?
Ich probiere mal alle anderen Adapter abzuschalten.
Da hatte ich auch schonmal schlechte Erfahrungen. (der device manager Adapter hat den JS Adapter lahm gelegt damals) -
@roelli sagte in Adapterzustand, welcher Datenpunkt?:
Kann aber theoretisch nicht sein,
dann versuche herauszufinden was zu diesen Zeiten startet.
-
@homoran sagte in Adapterzustand, welcher Datenpunkt?:
dann versuche herauszufinden was zu diesen Zeiten startet.
Alle Adapter ausschalten außer admin und javascript hilft nicht.
Aber so wie es aussieht ist das Problem weg wenn man den admin-Adapter stoppt. -
mal mit htop oder so geguckt was der javascript adapter so verbraucht?
-
@ticaki sagte in Adapterzustand, welcher Datenpunkt?:
mal mit htop oder so geguckt was der javascript adapter so verbraucht?
Oh...
javascript.0 100%
javascript.1 100%
redis ab und zu 100%
-
@roelli
vermutung ist das du eine zirkulär Referenze drin hast. Also etwas das sich selbst wieder aufruft und vom skript abgekoppelt ist.Lösungsmöglichkeit:
- alle Skript beenden
- Javascript adapter besser iobroker neustarten
- Skripte aktivieren und htop im Blick behalten.
- Wenns spinnt wieder 1. und 2 dann
- Von dem Skript bei dem du warst rückwärts die Skripte aktivieren.
- Wenns wieder spinnt 4. nochmal
- sehr sehr sehr sehr langsam die Skripte die in frage kommen aktivieren.
Hab das erst letztens wieder hinbekommen - websocket erzeugt und mich nach ein paar starts gewundert wo den all die Loginfos herkommen :D.
-
Das ist aber gefühlt trotzdem schwierig das schlechte Skript zu finden, weil es zwar gestartet wird, aber erst ausfgeführt wird - wenn es getriggert wird? (glaube ich)
Mir ist vermutlich noch ein iobroker system bug aufgefallen:
Wenn ich einen Cronjob im Blockly anlege und dann das Skript stoppe, dann wird der Cronjob TROTZDEM weiterhin ausgeführt.
Ich vermute das liegt an dem "anerkannten" iobroker bug vom admin-adapter wo man auch den cronjob jeder Instanz nicht mehr ändern kann und immer auf 1 Minute gestellt wird. -
@roelli said in Adapterzustand, welcher Datenpunkt?:
Ich vermute das liegt an dem "anerkannten" iobroker bug vom admin-adapter wo man auch den cronjob jeder Instanz nicht mehr ändern kann und immer auf 1 Minute gestellt wird.
Sicher nicht. Bei dem Bug geht es nur darum, dass der Cron String fälschlicherweise mit '* n ...' statt mit '0 n ...'befüllt wird. Das betrifft nur das Restarten eines Adapters.
Admin hat mit dem eigentlichen Starten irgendeines Scripts nichts zu tun und noch weniger mit dem Beenden desselben.
Wenn ich einen Cronjob im Blockly anlege und dann das Skript stoppe, dann wird der Cronjob TROTZDEM weiterhin ausgeführt.
So ganz verstehe ich diese Aussage nicht.
Due hast ein Blockly xxx das einen Cronjob um z.B. 7:0:0 anlegt der um diese Zeit ein Script yyy startet. Oder? Wenn du nun das Blockly disableds warum sollte sich das Script dann beenden? Das Script muss je eh nach getaner Arbeit sich selbst beenden.Oder meinst du dass der Cronjob (z.B. alle 5 Minuten das Script x starten) weiterhin alle 5 MInuten das Script startet?
Aber so ganz ist mir nicht klar was du nun hast - ein Blockly? Ein Script? Wo ist da ein Cronjob?
Ev erklär das mal genauer. -
@mcm1957 sagte in Adapterzustand, welcher Datenpunkt?:
Ev erklär das mal genauer.
Wenn ich ein Blockly mache mit einem 1-Minuten-cronjob als Trigger und damit dann z.B. per Alexa Sprachausgabe etwas sagen lasse und dann das Skript stoppe, dann stoppt es nicht. Es läuft unendlich weiter.
Und scheinbar läuft es teilweise auch mehrmals parallel. Habe gerade das hier gefunden wo jemand das gleiche Problem beschreibt:
https://github.com/ioBroker/ioBroker.javascript/issues/1756Ich habe nun ein altes VM Backup mit 10GB wieder aktiviert. Da geht noch alles. Ich weis allerdings nicht genau was das Problem ausgelöst hatte. Ich glaube es hat mit dem update des JS-Controllers angefangen. Ich hatte 7.0.3 und hab dann auf 7.0.6 ge-updated und dann auch den admin adapter geupdated. Danach... Probleme.
-
Und... seit ein paar Monaten ist es bei mir so, dass bei einem iobroker neustart der javascript-adapter niemals automatisch auf grün geht.
Man muss ihn immer zuerst neustartet oder stoppt und starten. -
@roelli said in Adapterzustand, welcher Datenpunkt?:
Wenn ich ein Blockly mache mit einem 1-Minuten-cronjob als Trigger und damit dann z.B. per Alexa Sprachausgabe etwas sagen lasse und dann das Skript stoppe, dann stoppt es nicht. Es läuft unendlich weiter.
Nun wenn du ein Blockly alle Minnuten starten lässt dann musst du natürlich sicherstellen, dass das Blockly nie länger als eine Minute laufen kann.
Wie stoppst du das Blockly?
-
@mcm1957 sagte in Adapterzustand, welcher Datenpunkt?:
Wie stoppst du das Blockly?
Ich drücke einfach bei den Blockly-Skripten auf "Pause".
-
Backupit machen und neu aufsetzen. Ich kann keinen der genannten Fehler nachvollziehen, hab aber keine 200 Skripte - dafür aber locker 60000 Zeilen an Skriptcode in den vorhandenen.
schedule hab ich gerade noch ausversucht, die werden beendet, aber sicherlich gibt es eine Konstellation in denen die endlos weiter laufen. Spiegelverzeichnisse können auch ein Grund sein wieso da was amok läuft. Daher hab ich das deaktiviert.
Was mir bzw. einem Tester beim tagesschau adapter aufgefallen ist (recht schnelles System bei dem), das der javascript adapter auf rot geht (für ne halbe/ganze Sekunde) wenn der Adapter startet. Daher hab ich die Korrektur aller Objektdaten beim Start des Adapters um den Faktor 3 verlangsamt. Das können je nach Nutzerauswahl ein paar tausend Objekte sein, die beim Start alle in Ordnung gebracht werden.
Da über das Benachrichtigen der Admin und jede Javascriptinstanz über solche Aktualisierungen benachrichtigt wird. Ist es nachvollziehbar. Aber wieso das Probleme bei den heutigen Geschwindigkeiten macht, keine Ahnung. Andererseits wird heute auch viel mehr überprüft ob der Adapter-Entwickler da nciht irgendeinen Quark rein schreibt
-
@roelli said in Adapterzustand, welcher Datenpunkt?:
@mcm1957 sagte in Adapterzustand, welcher Datenpunkt?:
Wie stoppst du das Blockly?
Ich drücke einfach bei den Blockly-Skripten auf "Pause".
Wie wird das Script "Cronjob Trigger Test" gestartet? Was hast du da eingestellt?
Und wie beendet sich das Script "Cronjob Trigger Test" wenn du NICHT auf Pause drückst?
Wenn du schreibst dass das Script "Cronjob Trigger Test" alle Minuten gestartet wird, muss es sich ja auch mal selbst (binnen einer Minute) beenden !?!?
Wie sieht das Script "Cronjon Trigger Test" aus? Was tut es? -
@mcm1957 sagte in Adapterzustand, welcher Datenpunkt?:
Wie sieht das Script "Cronjon Trigger Test" aus? Was tut es?
Ich habe einfach den "Zeitplan" Block genommen und steuere damit eine Sprachausgabe an.
Und bin die letzten Jahre davon ausgegenangen, dass der Zeitplan dann auch automatisch gestoppt wird wenn man das komplette Skript stoppt. War aber noch nie so? (mir fällt auch gerade garnicht ein wie mann es im Blockly dann richtig macht, dass der Zeitplan dann auch gestoppt wird?) -
Ich habe gerade eine alte VM hergestellt bevor ich JS-Controller und Admin-Adapter geupdated habe und wenn ich da dieses Cronjob-Skript stoppe, dann stoppt auch der Cronjob! (und läuft nicht einfach weiter)
Liegt gefühlt also am JS-Controller oder Admin-Adapter.