Zugriff auf den IP-Symcon Server ist plötzlich nicht mehr möglich

Hallo,

ich habe seit einiger Zeit das Problem, dass alle paar Tage der Zugriff auf meinen IP-Symcon Server nicht mehr möglich ist, der Server läuft weiter, aber der Zugriff ist nicht mehr möglich. Weder mit der Verwaltungskonsole noch mit der Android App und auch nicht per IPSView.

Der Dienst lässt sich dann auf normalem Weg auch nicht mehr beenden.

Zuerst habe ich immer den ganzen Windows PC, auf dem IP-Symcon läuft, neu gestartet, inzwischen habe ich herausgefunden, dass ich im Taskmanager die beiden Dienste IP-Symcon Service und IP-Symcon-Tray einfach und schnell beenden kann und dann per ips_tray.exe alles neu starten kann.

In der Log Datei steht ab dem Zeitpunkt der Nicht-Erreichbarkeit sehr häufig die Meldung “Zu viele gleichzeitige Skripte. Verwerfe Ausführung für Skript #4……”

Die Einstellung zu den ThreadCount habe ich schon gefunden, stand noch auf 25, aber auch eine Erhöhung auf 50 und später auf 70 brachte keine Änderung.

Kann da ein Zusammenhang bestehen ?

Was könnte das Problem verursachen ?

Vielen Dank.

Christoph

In der Konsole gibt es die Möglichkeit Deine PHP Slots anzuzeigen welche benutzt werden.
Dort findest Du die Info unter PHP Informationen. (wenn nicht vorhanden unten rechts mit dem Zahnrad und dann mit + hinzufügen.) Schau mal ob dort ein Script mehrere Slots benutzt.

In der Regel liegt das an Schleifen in Scripten oder Mehrfachtriggern.

Er höh gerne auf 100 und schau aber bitte wie von @Ferengi-Master vorgeschlagen wer die Thread belegt.

paresy

Vielen Dank !

Bei den PHP-Informationen ploppen ja die Slots kurz auf, die gerade in Benutzung sind.

Es gibt aber auch einige Slots (18 Stück) die rot markiert sind und alle von dem selben Script benutzt werden.

Diese Slots sind aber fix und auch schon älter, teilweise von gestern.

Das wird das Problem sein. Was ist das für ein Skript? Fehlt da evtl. ein cURL Timeout?

paresy

Das Script ist für den Datenabruf des EZ1-Wechselrichter aus dem Forum.

Ich stelle es mal hier ein, ob ihr einen Fehler findet:

<?php //Datenabruf EZ1 Wechselrichter //Das bedeuten die einzelnen Werte: //p1 & p2 = aktuell erzeugter Strom in Watt von Panel 1 & Panel 2 //e1 & e2 = seit dem Start des Wechselrichters erzeugter Strom in kwh (wenn nicht gerade eine Sonnenfinsternis ist, kann man diesen Wert wohl als „erzeugter Strom heute“ betrachten) //te1 & te2 = Insgesamt erzeugter Strom seit der ersten Nutzung des Wechselrichters $status = GetValue(28669); if ($status == true){ $url = 'http://192.168.0.115:8050/getOutputData'; $curl = curl_init($url); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); $response = curl_exec($curl); if($response === false) { $error = curl_error($curl); } else { $data = json_decode($response, true); $p1 = $data['data']['p1']; $p2 = $data['data']['p2']; $p = $data['data']['p1'] + $data['data']['p2']; $e1 = $data['data']['e1']; $e2 = $data['data']['e2']; $e = $data['data']['e1'] + $data['data']['e2']; $te1 = $data['data']['te1']; $te2 = $data['data']['te2']; $te = $data['data']['te1'] + $data['data']['te2']; echo "aktuell erzeugter Strom in Watt: " . $p . "\n"; SetValue(10310 , $p); echo "aktuell erzeugter Strom in Watt Panel 1: " .$p1. "\n"; SetValue(18290 , $p1); echo "aktuell erzeugter Strom in Watt Panel 2 " .$p2. "\n"; SetValue(50667 , $p2); echo "heute erzeugter Strom in kwh: " .$e. "\n"; if ($e > 0.001) {SetValue(43157 , $e);} echo "heute erzeugter Strom in kwh Panel 1: " .$e1. "\n"; if ($e1 > 0.001) {SetValue(27814 , $e1);} echo "heute erzeugter Strom in kwh Panel 2: " .$e2. "\n"; if ($e2 > 0.001) {SetValue(58020 , $e2);} echo "Gesamt erzeugter Strom in kwh Panel 1: " .$te. "\n"; if ($te > 0.1) {SetValue(35990 , $te);} echo "Gesamt erzeugter Strom in kwh Panel 2: " .$te1. "\n"; if ($te1 > 0.10) {SetValue(30715 , $te1);} echo "Gesamt erzeugter Strom in kwh bisher: " .$te2. "\n"; if ($te2 > 0.10) {SetValue(15593 , $te2);} } curl_close($curl); }

Für mal folgende Zeile passend hinzu:

curl_setopt($ch, CURLOPT_TIMEOUT_MS, 1000);

Damit sollte es ein sauberes Timeout geben und das Problem verschwinden.

paresy

Ganz zum Schluss einfügen ?

Danke !

Am besten hinter dem anderen curl_setopt.

paresy

Ah ja, perfekt - vielen Dank.

Die Variable muss ich dann wohl noch anpassen, da ich sonst eine Fehlermeldung bekomme.

Ich werde es beobachten, ob der Fehler noch einmal auftritt.

Vielen Dank für die schnelle Hilfe !!!

Christoph