IP-Symcon reagiert extrem verzögert

Ich verstehe deine Schlussfolgerung nicht. Die größten Nachrichten ist einfach eine Sammlung. Die sind nicht gleichzeitig gekommen, sondern irgendwann während der gesamten Laufzeit dieses Tools.

paresy

Ahhh ok, das war mir nicht bewusst.

Aber ich verstehe immer noch nicht wie du denn auf die Ansammlung kommst.

Ich verstehe das so, das doch geschaut werden soll welche Variablen über den WebSocket immer aktualisiert werden sollen. Daher sieht das für mich so aus als würden mehrere Variablen Aktualisierungen über den WebSocket laufen.

Also den Sinn von dem Hilfsscript ist mir gerade überhaupt nicht klar.

Gruß

Es laufen sogar alle Aktualisierungen über den Socket. Das Tool ist für diverse Zwecke Interessant. Für dich ist wahrscheinlich die „Busy IDs“ Sektion die relevante. Du möchtest ja sehen, wer die meisten Nachrichten versendet.

Kannst du mir ggf. mal deine Zugangsdaten für den Fernzugriff per PM zusenden? Ich würde dann das Tool einfach ebenfalls mal laufen lassen und schauen, ob dort mit den Nachrichten pro Sekunde etwas nicht stimmt - denn irgendwie gibt es ja eine Abweichung zu den Statistiken die in Grafana zu sehen sind.

paresy

PS: Ich bin aktuell dabei eine Erweiterung des MessageQueueWatch Spezialschalters zu entwicklen, woman man tracken kann, welche Instanzen genau am meisten Zeit bei der Verarbeitung benötigen. Das sollte für deine Verzögerungen ebenfalls helfen eine Analyse durchzuführen.

Hallo Paresy,

ich habe nun alle meine Module durchforstet und hinsichtlich der SetReceiveDataFilter und der SetStatus überarbeitet.
Das System läuft jetzt sehr viel besser und reagiert deutlich schneller!

Eine Auffälligkeit habe ich noch gesehen und zwar sehr viele „VM_CHANGEPROFILEACTION“. Das rührt wahrscheinlich hieraus:

If ($State == false) {
	$this->EnableAction("State");
}
else {
	         $this->DisableAction("State");
}

Um das nicht immer wieder „unnütz“ zu machen (im Modul würde das so mehrmals pro Sekunde geschehen) habe ich mir folgendes Konstrukt überlegt:

If (HasAction($this->GetIDForIdent("State")) <> !$State) 
	If ($State == false) {
		$this->EnableAction("State");
	}
	else {
		$this->DisableAction("State");
	}
}

Sieht nicht besonders „schön“ aus, geht es auch besser?

Aktuell sieht die Auswertung so aus:

Joachim

Eine Randbemerkung:
HasAction prüft nicht ob die Standardaktion vorhanden ist oder nicht.
Vielmehr wird zusätzlich auch eine vom User eingetragene ‚Eigene Aktion‘ mit berücksichtigt.
Somit könnte deine Prüfung mit HasAction nicht in deinem Sinn sein.
Besser wäre es dann vielleicht eine Prüfung mit IPS_GetVariable?
https://www.symcon.de/service/dokumentation/befehlsreferenz/variablenverwaltung/ips-getvariable/

if (IPS_GetVaribale($this->GetIDForIdent("State"))['VariableAction'] == 0) //keine Standardaktion aktiv

Michael

Der Vorschlag von Michael sieht noch schlechter aus, ist aber die korrekte Variante :slight_smile:

Ansonsten sieht es bei dir in den Grafana Charts sehr gut aus. Um 16:00 gab es einen sehr großen Ausreißer. Evtl. hast du da ja was gemacht :slight_smile:

paresy

Hallo Paresy,

das Ganze hat schon eine Menge gebracht.

Ein Punkt habe ich noch wo ich aktuell etwas ratlos bin:
Ich habe ja diverse Instanzen die über einen Software-Client-Socket mit PiGPIO kommunizieren (das macht es mir deutlich einfacher Kommando und dazugehörige Antwort „beisammen“ zu halten). Da ich auf eine Kommando eine genau definierte Anzahl von Zeichen erwarte ist dieser entsprechend aufgebaut. Um sicherzustellen dass jedes Kommando einzeln abgearbeitet wird habe ich in dieser Funktion ein Semaphore gesetzt, dieses war eine gefühlte Ewigkeit auf 300ms gestellt, was nie zu Problemen geführt hat. Im Zuge der aktuellen Fehlersuche bin ich irgendwann darauf gestossen, dass dieses - aus mir unerfindlichen Gründen - jetzt viel zu kurz war und habe es testweise auf 3000ms hochgestellt. Jetzt laufen die meisten Dinge - u.a. auch die eingangs erwähnte Leinwand - wieder.
Ich habe testweise auch auf einem der diversen Raspberry Pi die ich dafür benutze auf eine frühere Version von PiGPIO zurückgestellt - ohne sichtbaren Erfolg.

Kann es sein dass sich hinsichtlich des PHP-Client-Sockets irgendetwas signifikant geändert hat? Warum dauert das jetzt solange?

Joachim

Guten Morgen,

ich habe nochmal vorab eine Frage. Wie kann ich für den WebAnalyzer das geflackere abstellen. Bei mir wird das Konsolen Bild so oft neu aufgebaut das nichts zu erkennen.

Der Analyzer ist nicht mehr wirklich relevant. Die Statistiken, die der Analyzer sammelt, gibt es Mittlerweile auch in den Prometheus Statistiken.

paresy

ok, danke … dann geht es weiter in meinem Post