Fehler durch IPSLogger??

Hallo Leute,

seit heute morgen habe ich extreme Probleme mit IPS…
In der Log-Datei ist nichts auffälliges zu entdecken, in den „Meldungen“ sind aber divere Meldungen die sich ständig wiederholen und die ich nicht deuten kann.
Ich habe mal einen Screenshot gemacht…

Jemand eine Idee? IPS reagiert extrem träge, den Dienst „normal“ zu beenden ist fast unmöglich…

Joachim

Nachtrag: Ich habe inzwischen auch mein letztes Backup installiert, diverse Male neu gestartet - leider keine Änderung…
Ein Zugriff auf das Webfromt läuft auch nicht…
Was bedeutet die Meldung vom ScriptEngine „Warteschleife füllt sich“??

Die Warteschleife ist ein Puffer von IPS (ähnlich eines Stacks) welches Aufgaben abarbeitet. In Deinem Fall sehe ich zumindest schonmal ein Script welches nicht korrekt abläuft bzw. dessen Scriptlaufzeit außerhalb des PHP Limits liegt. (eben der IPS Logger)

was sacht denn die IPS-RAM Auslastung?

Mit dem IPSLogger hat das nichts zu tun. Der protokolliert nur, dass es ein Script gegeben hat, das die maximale Ausführungszeit überschritten hat und deswegen abgebrochen wurde.

Kann man auch jederzeit ausprobieren - Script anlegen mit einem kleinen sleep:


   sleep(150);

dann bekommt man in der Konsole:

Fatal error: Maximum execution time of 60 seconds exceeded in [Program\IPSLibrary_Installation] on line 3

und im Logger:

05.06.2012 19:57:13.359 | 0 | CUSTOM | PHP | Error: Error: Maximum execution time of 60 seconds exceeded
Error in Script C:\ab\IPS\IP-Symcon\scripts\IPSLibrary_Installation.ips.php on Line 3
133 in IPSLibrary\app\core\IPSLogger\IPSLogger.inc.php (call IPSLogger_Out)
33 in IPSLibrary\app\core\IPSLogger\IPSLogger_PhpErrorHandler.inc.php (call IPSLogger_Err)
91 in IPSLibrary\app\core\IPSLogger\IPSLogger_PhpErrorHandler.inc.php (call IPSLogger_PhpErrorHandler)
in IPSLogger_PhpFatalErrorHandler

Hallo Leute,

Euch allen vielen Dank für die Antworten!
Ich war noch anderweitig unterwegs und als ich wiederkam musste ich nun (glücklicherweise) feststellen, dass sich offenbar alles wieder „eingerenkt“ hat…:slight_smile:

Joachim

Hallo Andreas,

wo wird der Ursprung der Max.exec. protokolliert?

Wird normalerweise in der Message protokolliert (Error in Script…).

Im Falle von Joachim war das aber der Funktionsaufruf des PhpErrorhandlers, wie das zu interpretieren ist, über das rätsel ich auch gerade!

Mögliche Erklärung wäre, dass während dem Handlen eines Errors wieder ein Fehler aufgetreten ist und es zu einer Rekursion gekommen ist.
Da muss ich mal nachlesen, ob das möglich ist und wie das zu verhinderen ist …

Geht klar Andreas. Danke erstmal.

Hallo Leute,

heute hatte ich den gleichen Fehler wieder: Ein Skript, dass alle 5 Sekunden die Enigma-Sat-Box abfragt „hing“, es führte zu den oben schon aufgezeigten Effekten…
Ich habe nun die zyklische Wiederholung herausgenommen, da „erholte“ sich IPS wieder…
Warum es für das Skript selbst keinen „Timeout“ gegeben hat, kann ich aber nicht erklären…

Hier das Skript:

<?
include "Enigma2_Funktionen.ips.php" ;
// Test
$dreamboxIP = "192.168.178.39";
$AktuellerSender = "Keine Information";

$AktuellerSender = ENIGMA2_GetCurrentServiceName($dreamboxIP);
$AktuelleSenderinformation = ENIGMA2_GetCurrentFilm($dreamboxIP);

If ($AktuellerSender == "")
	{
   SetValue(12809 /*[Sonstige Daten\TV\Aktueller Sender]*/ , "Keine Information");
   SetValue(32920 /*[Sonstige Daten\TV\Aktuelle Programminformationen]*/, "");
	}
   else
   {
	SetValue(12809 /*[Sonstige Daten\TV\Aktueller Sender]*/ , "$AktuellerSender");
	SetValue(32920 /*[Sonstige Daten\TV\Aktuelle Programminformationen]*/, "$AktuelleSenderinformation");
	}
return;
?>

Joachim

Hey JPeaper.

Es gab schon Timeouts für dein Skript - allerdings erst nach 30 Sekunden. IPS hat dein Skript sturr alle 5 Sekunden aufgerufen, obwohl die vorherigen Aufrufe noch bis zum 30 Sekunden Limit „hingen“. Da IPS nur eine bestimmte Anzahl an Skripten gleichzeitig ausführen kann, hat sich eine Warteschleife gebildet.

Ich würde empfehlen Vorkehrungen zu treffen, um dieses Verhalten zu verhindern. Die könntest z.B. ein Semaphore setzen, oder das Event immer deaktivieren und am Ende des Skripts wieder aktivieren.