Zu viele gleichzeitige Skripte?

Hallo

Mir fällt seit einigen Tagen auf, dass in den Meldungen häufig die Fehlermeldung „Zu viele gleichzeitige Skripte. Verwerfe Ausführung…“ bekomme. Ich habe in den letzten Wochen eigentlich nur die üblichen Updates gemacht und den MQTT Server wegen neuer Shellies genutzt. Leider kann ich den Fehler nicht genauer eingrenzen, da ich ja auch nicht weiß welche Skripte da nicht ausgeführt werden.
Hat jemand eine Idee?

Gruß Maik

Hallo.

Es geht wohl eher nicht darum welche Skripte nicht ausgeführt werden sondern welche zu oft oder welche zu lange Laufzeiten haben (z.b. wegen der Verwendung von IPS_Sleep). Wenn Dein System tatsächlich so stark ausgelastet ist kannst Du bei den Spezialschaltern auch die Anzahl der gleichzeitig möglichen Threads erhöhen.

Kommt die Meldung durchgängig oder nur gelegentlich? Du kannst mal in die PHP Information schauen. Da werden alle Skripte aufgelistet. Eventuell stocken da manche Skripte oder du hast einfach einen hohen Durchsatz. In ersterem Falle müsste man sich die stockenden Skripte mal anschauen, in zweiterem kann man die verfügbaren Threads hochschrauben.

Ahhh. Hab’s gefunden.
Ein Skript das per Event gesteuert wurde hat die Fehler ausgelöst.
Ich wollte eigentlich ein Event haben das das Skript startet, wenn die Variable von true auf false wechselt. Per MQTT kommt alle par Sekunden ein neues false. Das führt wohl dazu, das das Skript zu häufig ausgeführt wird. Wie macht ihr das denn? Veränderungen abfragen.

Bist Du sicher, dass Du nicht auf eine Variablenaktualisierung triggerst? Ein „Wechsel“ von FALSE auf FALSE sollte bei einem Trigger auf einen bestimmten Wert eigentlich nicht auslösen.

Und den Haken nachfolgende Ereignisse ausführen entfernen.
Michael

Ja. Sicher bin ich mir.
Oder das Skript hatte einen Fehler. Da war aber nur eine Zeile mit SHELLY_DimSet(…) drin.

Bin jetzt unterwegs. Werde heute Abend nochmal testen und Rückmeldung geben.

Gesendet von iPhone mit Tapatalk

Hallo. Ich habe es jetzt nochmal ausprobiert.

Ich habe mir mal schnell eine Variable angelegt und die wird vom Skript immer 1 hochgezählt sobald das Event das Skript ausführt. Und siehe da, das Skript wird auch ausgeführt, obwohl das Event von false auf false gar nicht hätte ausgeführt werden dürfen. Ich hänge mal ein paar Screenshots an. Vielleicht findet ihr ja den Fehler. Es könnte auch am Shelly Modul liegen… Die Event Variable kommt über MQTT an.

Anmerkung 2020-02-04 213036.pngAnmerkung 2020-02-04 213037.pngAnmerkung 2020-02-04 213038.png

Gruß Maik

Und nochmals… Nimm den Haken raus.
Bei bestimmten Wert heißt immer wenn der Wert false eintrifft. Da steht nix von Änderung!
Michael

Aber der „nachfolgende Befehl“ heißt doch „führe das Skript aus“.

Und wie kann ich dann die Änderung abfragen?

Nimm den Haken raus.
Und ließ die Dokumentation.
Letzter Absatz:
https://www.symcon.de/service/dokumentation/konzepte/ereignisse/ausgeloest/
Michael

Danke. Das habe ich bis jetzt wirklich noch nicht gewusst. Dann werde ich mal alle meine Ereignisse nochmal durchschauen. Hatte bisher nur Homematic Komponenten im Einsatz und vermutlich nur auf ein True getriggert.

Danke nochmal

Gesendet von iPhone mit Tapatalk

Da wird das gleiche passieren, wenn ein Sensor/Aktor einen unveränderten Status sendet und du im Ereignis bei Festen Wert eingestellt hast.
Michael

Michael, auch von mir: Danke!

Das Feld „nachfolgende Ereignisse ausführen“ habe ich oft gesehen und nie diese Funktion dahinter vermutet, weil ich den Wortlaut ganz anders gedeutet hatte. In der Doku steht’s natürlich.

Wie würdest du diese Funktion denn nennen? Vielleicht können wir dies besser benennen :slight_smile:

paresy

Gar nicht so einfach das kurz und knapp und trotzdem verständlich zu beschreiben. Aber die bisherige Formulierung war aus meiner Sicht nie ideal und ich glaube die meisten hatten damit zu Beginn Schwierigkeiten, die Bedeutung zu verstehen.

Aber wie wäre es mit:

  • Bei (direkt) aufeinanderfolgender Bedingungserfüllung ausführen

oder dynamisch (in Abhängigkeit des gewählten Auslösers):

  • Bei (direkt) aufeinanderfolgender Grenzüber/-unterschreitung ausführen
  • Bei (direkt) aufeinanderfolgenden gleichen Werten ausführen

Gruß
Slummi

Ich hätte dort als Vorschlag ‚und nur bei Änderung auslösen‘, wobei dann der Haken genau andersrum gesetzt werden muss.
Aufeinanderfolgend ist ja wieder missverständlich, da auch nach x Stunden nochmal der gleiche Wert das Ereignis triggern kann.
Es geht ja darum, dass der Vergleich einmal nicht erfüllt sein muss, damit es wieder ausgelöst werden darf.

Vielleicht noch ‚mehrfache Auslösungen unterdrücken‘ ?
Michael

Das würde dann allerdings nur auf den festen Wert passen und nicht auf Ober-/Untergrenze. Denn dort kann sich der Wert ja in die gleiche Richtung ändern und man will dennoch keine Auslösung.

Diesen Haken habe ich auch gesehen, aber ganz anders interpretiert.
Um das Problem mit den gleichen mehrfach - Auslösern in den Griff zu bekommen, hab das ganze relativ umständlich per Skript gelöst.

Gut, dass ich den Beitrag zufällig gelesen hab [emoji106]