Zu viele gleichzeitige Skripte. Verwerfe Ausführ

Guten Abend Zusammen,

unser IPS-Meldungsfenster zeigt des öfteren folgende Meldung an:

ScriptEngine | Zu viele gleichzeitige Skripte. Verwerfe Ausführung…

Was kann das denn sein, bzw wie kann ich herausfinden was so verworfen wird, bzw was dem IPS zu viel ist?!

Vielen Dank im Voraus
Dennis.

Da läuft wohl „irgendetwas“ zu lange ;).

Willkommen --> Expertenansicht hinzufügen --> PHP Informationen

dort siehst du was hängen bleibt bzw. läuft.

Moin,

habe selbiges Problem heute früh gehabt. Lt. Expertenansicht ist es ein Script, welches alle 10 min ausgeführt werden soll. Allerdings ist desse letzte Ausführung schon mehr als 9 Stunden her und trotzdem kann keine andere Aktion mehr ausgeführt werden. Es scheitert schon bei einem einfachen

phpinfo();

Wie kann man ein solches („Fehler-“) Script sauber stoppen, damit andere wieder ausgeführt werden können? Wie läßt sich das zudem automatisiert feststellen sowie wieder richten, sodass man nicht z.B. am fernen Urlaubsort damit „überrascht“ wird, dass zu Hause die Jalousien ständig geschlossen bleiben?

Hallo,

ich habe heute auch erstmalig diese Meldung


07/28/18 07:04:30 | 00000 | MESSAGE | ScriptEngine         | Zu viele gleichzeitige Skripte. Verwerfe Ausführung...

bei meinem IPS 4.4 gesehen. Das kann dann alle paar Minuten immer wieder (bis zu dem Neustart gerade). U diese Meldungen herum stand nix, was einen Hinweis auf das auslösende Script zulassen würde.

Thread Count ist auf Standard (also 10), die Hardware ist eine raspi 3. Und hier ist nach den Imitationen auch bei 10 Tasks Schluss (wegen dem 1 GB RAM). ThreadQueueLimit steht auf 50.

Der Raspi bedient nur IPS, war nicht ausgelastet (CPU 5…20%), es gab also keinen Systembedingten Engpass.

Änderungen an dem ProdSys habe ich seit ca. 14 Tagen nicht mehr gemacht. Ich bin mir auch nicht bewusst, Script zu haben, die auf irgendetwas besonders lange warten, kann das aber natürlich nicht ausschliessen.

Leider war es nicht mehr möglich, auf die Verwaltungskonsole zu öffnen, also konnte ich nicht in die PHP-Information schauen.

Ich habe das IPS mit ‚sudo kill -9 …‘ abgebrochen und neu gestartet.

Für den Fall das das nochmal auftritt: kann man auch anders als mit der PHP-Information sich eine Übersicht über die Prozesse verschaffen, also ohne die Verwaltungskonsole zu starten?

Kann man irgendwo nachschauen, wie weit die ThreadQueue verwendet wird?

Danke
demel

Ein bereits laufendes Skript könnte das ermitteln, guck mal hier

Viele Grüsse
Harald

Prima, damit kann ich mir zyklisch eine Liste erzeugen und im Filesystem speichern (oder als LogMessage). Damit hätte ich Chancen, eventuellen Hängern auf die Spur zu kommen.

Danke
demel

Das Script habe ich nun zyklisch laufen:


<?

$scriptName = IPS_GetName($_IPS['SELF']);

$now = time();

$threadList = IPS_GetScriptThreadList();

$s = '';
$threadCount = 0;

foreach ($threadList as $t => $i) {
    $thread = IPS_GetScriptThread ($i);

    $ScriptID = $thread['ScriptID'];
    if ($ScriptID == 0) {
        continue;
    }

    if ($ScriptID != $_IPS['SELF']) {
        $threadCount++;
    }
    $ScriptName = IPS_GetName($ScriptID);
	
    $ThreadId = $thread['ThreadID'];

    $StartTime = $thread['StartTime'];
    $sec = $now - $StartTime;
    $warn = $sec > 10 ? '!!!' : '';
    $duration = '';
    if ($sec > 3600) {
        $duration .= sprintf('%dh', floor($sec / 3600));
        $sec = $sec % 3600;
    }
    if ($sec > 60) {
        $duration .= sprintf('%dm', floor($sec / 60));
        $sec = $sec % 60;
    }
    if ($sec > 0 || $duration == '') {
        $duration .= sprintf('%ds', $sec);
        $sec = floor($sec);
    }

    $Sender = $thread['Sender'];
	
    $s .= "thread=$ThreadId, script=$ScriptName($ScriptID), sender=$Sender, duration=$duration $warn
";
}

if ($threadCount) {
    IPS_LogMessage($scriptName . '(' . $_IPS['SELF'] . ')', $s);
}

Es erzeugt eine Message, wenn mehr als dieses Script läuft; es wird die Dauer des Threads ausgegeben und ab 10s mit !!! markiert.

Natürlich erhöht dieses Script selbst die Menge der laufen Scripts, aber ein Problem sind ja eigentlich nur die Hänger.