Guten Tag zusammen
Letzte Woche hatten wir einen Stromausfall und seit da Verhält sich mein IPS etwas seltsam.
Und zwar erhalte ich sehr oft beim Ansteuern von Sonos oder beim Schreiben/Lesen von HM-Systemvariablen einen „Maximum execution time of 30 seconds exceeded“ Fehler, was mir das Dashboard und Webfront für 2-3 Minuten einfrieren lässt. Dies passiert sehr oft, jedoch nicht immer. Eine Regelmässigkeit oder ein Muster konnte ich nicht erkennen.
Ich habe mal alles so umprogrammiert, dass die Sonos-Ansteuerung in einem eigenen Thread läuft. Auch die „maxumum execution time“ habe ich mal auf 2 Sekunden herunter gesetzt. Leider alles ohne Erfolg.
Ich verwende IPS 3.3 #3645 und habe zum testen mal bis auf 40 Threads erhöht. Das ganze läuft auf einem HP ProLiant N54L mit 8GB RAM. Sonos und die CCU sind ebenfalls auf dem neusten Stand.
Hier nun mal am Beispiel von heute Morgen von Sonos, was genau passiert. HM verhält sich ganz ähnlich.
Über das Dashboard setze ich eine Boolean-Variable, dass ich nun wach bin:
07.04.2015 05:28:54.383 | 32876 | DEBUG | ExecuteThreadID #19 | Skriptausführung: dashboardAction.ips.php ~ Absender: RunScript
07.04.2015 05:28:54.430 | 45301 | MESSAGE | VariableManager | [OG\Zimmer3\Taster\isMarcoSchlafen] = False
Von hier an ist sowohl das Dashboard als auch das Webfront (Browser und Android-App) blockiert, das heisst reagiert nicht mehr auf Eingaben. Im Hintergrund laufen ein paar Ereignisse, unter anderem natürlich die Sonos-Ansteuerung:
07.04.2015 05:28:54.430 | 55335 | DEBUG | ExecuteThreadID #8 | Skriptausführung: wohnungChangeHandler.ips.php ~ Absender: Ereignis #18063, Variable #45301, Auslöser: OnChange
07.04.2015 05:28:54.430 | 21692 | DEBUG | ExecuteThreadID #25 | Skriptausführung: raumChangeHandlerZimmer3.ips.php ~ Absender: Ereignis #25725, Variable #45301, Auslöser: OnUpdate
07.04.2015 05:28:54.477 | 33262 | MESSAGE | VariableManager | [Allgemein\szeneWohnung] = 6
07.04.2015 05:28:54.477 | 25213 | MESSAGE | VariableManager | [OG\Zimmer4\szeneZimmer4] = 6
07.04.2015 05:28:54.477 | 49102 | MESSAGE | VariableManager | [OG\Terrasse\szeneTerrasse] = 6
07.04.2015 05:28:54.477 | 47174 | MESSAGE | VariableManager | [OG\Wohnzimmer\szeneWohnzimmer] = 6
07.04.2015 05:28:54.477 | 40642 | MESSAGE | VariableManager | [OG\Bad\szeneBad] = 6
07.04.2015 05:28:54.477 | 37581 | MESSAGE | VariableManager | [OG\Flur\szeneFlur] = 6
07.04.2015 05:28:54.477 | 42953 | MESSAGE | VariableManager | [OG\Kueche\szeneKueche] = 6
07.04.2015 05:28:54.477 | 50320 | MESSAGE | VariableManager | [UG\Fitness\szeneFitness] = 6
07.04.2015 05:28:54.602 | 14902 | MESSAGE | VariableManager | [_system\Libraries\SonosThreading\sonosWohnzimmer] = 3
07.04.2015 05:28:54.617 | 14902 | DEBUG | VariableManager | [_system\Libraries\SonosThreading\sonosWohnzimmer] = 3
07.04.2015 05:28:54.680 | 54325 | DEBUG | ExecuteThreadID #39 | Skriptausführung: sonosThreading.ips.php ~ Absender: Ereignis #46380, Variable #14902, Auslöser: OnUpdate
07.04.2015 05:29:50.216 | 32457 | DEBUG | ExecuteThreadID #8 | Skriptausführung: dashboardVisibility.ips.php ~ Absender: Ereignis #57686, Zeit Ereignis
07.04.2015 05:29:50.263 | 32457 | DEBUG | ExecuteThreadID #8 | Ausgeführt, Resultat: 1, Erfolgreich: True, Zeit: 51 ms
Durch setzten der Variable ‚sonosWohnzimmer‘ wird das Script ‚sonosThreading.ips.php‘ im Thread #39 aufgerufen, welches einen Internetstream auf Sonos starten soll.
Auch zu erkennen, dass mit dem Script ‚dashboardVisibility.ips.php‘ die Anzeige auf dem Dashboard verändert wird. Dies funktioniert auch, obwohl das Dashboard ansonsten auf keine Eingaben reagiert.
Nach rund 2.5 Minuten steht dann folgendes im Log:
07.04.2015 05:31:19.916 | 54325 | ERROR | ExecuteThreadID #39 | [_system\Libraries\SonosThreading] =
Fatal error: Maximum execution time of 2 seconds exceeded in [_system\Bindings\Sonos\PHPSonos] on line 2298
PHP-Error-Error: Maximum execution time of 2 seconds exceeded
Error in Script C:\IP-Symcon\scripts\PHPSonos.ips.php on Line 2298Abort Processing during Fatal-Error: Maximum execution time of 2 seconds exceeded
Error in Script C:\IP-Symcon\scripts\PHPSonos.ips.php on Line 2298
07.04.2015 05:31:19.916 | 54325 | DEBUG | ExecuteThreadID #39 | Ausgeführt, Resultat: 0, Erfolgreich: False, Zeit: 145242 ms
Also obwohl die ‚Maximum execution time‘ auf 2 Sekunden gesetzt ist, dauert es über 2 Minuten bis der Fehler im Log erscheint und Dashboard/Webfront wieder auf Eingaben reagieren.
In dieser Zeit kann ich Sonos übrigens problemlos über die Sonos-Android-App steuern.
Wie bereits geschrieben, funktioniert das ganze in vielleicht 2 von 3 Fällen problemlos. Da dauert die Ausführung des Scripts ‚sonosThreading.ips.php‘ ein paar wenige Millisekunden.
Hat jemand eine Idee, was hier passiert? Warum sind Dashboard und Webfront 2-3 Minuten lang eingefroren? Was kann ich noch tun, um dieses Problem zu beheben?
Liebe Grüsse
Marco