Ankündigung

Einklappen
Keine Ankündigung bisher.

Edomi-Logikengine stellt die Arbeit ohne einen Mucks ein

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • phili
    antwortet
    Also Problem ist behoben:
    Ich hatte vor ca. einer Woche auf meinem Debian-Server ein "dist-upgrade" durchgeführt. Dabei wurden einige Pakete entfernt, so dass der Logitech Media Server nicht mehr korrekt ausgeführt wurde.
    Der SqueezeCommand oder der SqueezeClient in der Version 0.5 kommen damit wohl nicht zurecht und haben die LogikEngine blockiert.

    Ich habe bei blockierter Engine den LMS aktualisiert. Ein erneuter Blick auf edomis Send-Rate zeigt, dass die LogikEngine ohne Neustart weiterarbeitet.

    Danke für alle Hinweise und Tipps.

    Zitat von starwarsfan Beitrag anzeigen
    Und ganz wichtig: Was genau wurde in letzter Zeit am System selber bzw. an den Umsystemen gemacht?
    Yves, wie recht Du hattest!
    Die Untersysteme, von denen man immer meint, es gäbe keine Abhängigkeiten.

    Einen Kommentar schreiben:


  • phili
    antwortet
    Hallo Andre,
    danke auch für Deine Antwort. Also weg war der Prozess nicht. War nicht sauber formuliert. Das hatte ich gestern abend auch schon geprüft:

    Code:
    [root@edomi ~]# ps aux | grep edomi
    root 1233 9.1 0.3 258556 15364 ? S 01:05 0:27 php /usr/local/edomi/main/proc/proc_main.php 14
    root 1251 0.0 0.0 108192 1568 ? S Oct12 0:00 sh /usr/local/edomi/main/start.sh
    root 1686 1.5 0.2 254992 10904 ? S 01:07 0:03 php /usr/local/edomi/main/proc/proc_queue.php
    root 1688 0.4 0.2 254992 11000 ? S 01:07 0:01 php /usr/local/edomi/main/proc/proc_sysinfo.php
    root 1703 5.5 0.3 255760 12152 ? S 01:07 0:12 php /usr/local/edomi/main/proc/proc_knx.php
    root 1705 8.8 0.3 258148 14920 ? S 01:07 0:19 php /usr/local/edomi/main/proc/proc_logic.php
    root 1707 8.0 0.3 257040 13256 ? S 01:07 0:17 php /usr/local/edomi/main/proc/proc_visu.php
    root 1709 2.8 0.3 257816 12544 ? S 01:07 0:06 php /usr/local/edomi/main/proc/proc_dvr.php
    root 1763 7.1 0.3 257612 11844 ? S 01:07 0:14 php /usr/local/edomi/www/data/liveproject/lbs/EXE19000200.php 2397
    root 1996 0.1 0.3 255508 11984 ? S 01:07 0:00 php /usr/local/edomi/www/data/liveproject/lbs/EXE19000358.php 6007
    root 2939 21.5 0.3 269788 14732 ? S 01:10 0:00 php /usr/local/edomi/www/data/liveproject/lbs/EXE19000978.php 2516
    root 2945 0.0 0.0 105332 928 pts/1 S+ 01:10 0:00 grep edomi
    [root@edomi ~]#
    Mal sehen, welcher Baustein es schlussendlich ist. Habe gerade festgestellt, dass mein Logitech Media Server nicht erreichbar ist. Mal sehen, ob es daher kommt.

    Einen Kommentar schreiben:


  • maque
    antwortet
    Stimmt, langsam wird es ja wieder kalt und früh dunkel

    Einen Kommentar schreiben:


  • jonofe
    antwortet
    Ihr solltest zunächst mal feststellen, ob die Logikengine abgestürzt (main.php) oder blockiert ist. Bei Absturz sollte eigentlich ein Fehler im Log stehen, da EDOMI ja einen eigenen Errorhandler hat. Im Idealfall sollten diese Prozesse laufen:

    Code:
    root 18409 0.0 0.6 396820 24432 tty1 S+ Okt09 3:52 php /usr/local/edomi/main/proc/proc_main.php 14
    root 18973 0.1 0.3 388528 14708 tty1 S+ Okt09 8:24 php /usr/local/edomi/main/proc/proc_queue.php
    root 18975 0.0 0.3 388528 14816 tty1 S+ Okt09 3:27 php /usr/local/edomi/main/proc/proc_sysinfo.php
    root 18988 0.5 0.3 388528 14936 tty1 S+ Okt09 32:53 php /usr/local/edomi/main/proc/proc_knx.php
    root 18990 1.3 0.4 390604 17648 tty1 S+ Okt09 80:38 php /usr/local/edomi/main/proc/proc_logic.php
    root 18992 0.6 0.4 390576 16232 tty1 S+ Okt09 38:49 php /usr/local/edomi/main/proc/proc_visu.php
    Wenn einer davon nicht da ist, dann ist vermutlich was schief gelaufen, insbesondere gilt das für main, queue, logic.
    Gleiches gilt für den mysqld Prozess. Auch dann sollte was im Errorlog stehen.

    Ist der proc_logic.php blockiert, dann sollten noch alle Prozess vorhanden sein, aber proc_logic macht nichts mehr, da er evtl. in einer Endlosschleife hängt. Wenn in der Endlosschleife dann noch irgendein usleep() verwendet wird, dann kann man das noch nicht mal an der Prozessorlast erkennen.

    Da hilft es nur, über Ausschlussverfahren den Übeltäter ausfindig zu machen. Was natürlich erstaunlich ist, dass es Einzelfälle sind. Bei Verwendung von selbst erstellten LBS, die nicht im DL Portal sind, kann man natürlich wenig zu sagen, da muss man wissen was man tut. Ansonsten kann man sich den LBS Bereich der relevanten Bausteine anschauen und prüfen, ob da was kritisches gemacht wird.

    Zitat von madmaxx Beitrag anzeigen
    Dann bliebe die Frage, ob sich die Logikengine seitens Entwickler durch Robustheitsmaßnahmen insoweit abschotten ließe, dass ein (Fremd-)LBS diese unter keinen Umständen zum Absturz bringen kann.
    Ich bin nicht sicher, ob das wirklich nötig ist. Man sollte einfach alles was über einfaches PHP hinausgeht, in den EXEC-Bereich des LBS packen. Dieser läuft komplett unabhängig von der Hauptlogikschleife und kann diese auch nicht blockieren.

    Ich glaube wir hatten für den Herbst auch mal einen Workshop zum Thema LBS Erstellung geplant. Da sollte das dann mit berücksichtigt werden. (maque)

    Einen Kommentar schreiben:


  • phili
    antwortet
    madmaxx

    Ja, der Effekt ist genau der, den Du beschreibst.
    Ich hatte wohl ein wenig Glück, weil ich zunächst die Logikseiten deaktiviert hatte, bei denen es eine Kommunikation nach Außen gibt.
    Meistens war die LogikEngine nach ca. 30 Minuten nicht mehr "aktiv", jetzt bin ich schon bei 2,5 Stunden.

    Einen Kommentar schreiben:


  • madmaxx
    antwortet
    Ist bei dir die Auswirkung die gleiche, d.h. Empfangen und Protokollieren von Telegrammen (z.B. Monitor-Log) funktioniert noch, aber es geht nichts mehr raus und die manuelle Manipulation von Werten in der Live-Ansicht von Logiken hat keine Auswirkungen auf die nachfolgenden Bausteine?

    Das (De-) Aktivieren der Logikseiten ist das eine, viel langwieriger das Warten auf den Absturz, welcher durch nicht bekannte und somit auch nicht reproduzierbare Parameter nach immer unterschiedlicher Laufzeit hervorgerufen wird.

    Dann bliebe die Frage, ob sich die Logikengine seitens Entwickler durch Robustheitsmaßnahmen insoweit abschotten ließe, dass ein (Fremd-)LBS diese unter keinen Umständen zum Absturz bringen kann.

    Einen Kommentar schreiben:


  • phili
    antwortet
    Habe es jetzt anscheinend auf 3 Logikseiten eingegrenzt,
    wobei das solche sind, an denen ich seit Ewigkeiten nicht gepfuscht habe.

    Aber sie haben mit externen Diensten zu tun. Ich bin gespannt.

    Zum schnellen Deaktivieren der Logik:
    In der Datenbank ist die Information darüber welche Seiten aktiviert (1) bzw. deaktiviert (0) sind in der

    Tabelle edomiProject/editLogicPage und der Spalte pagestatus

    gespeichert. Lässt sich so doch recht fix durchtesten.

    Einen Kommentar schreiben:


  • phili
    antwortet
    Danke schon mal an alle!
    Werde wohl ersteinmal den Großteil der Logiken deaktivieren.

    Einen Kommentar schreiben:


  • madmaxx
    antwortet
    phili
    Bei mir hat sich schließlich der Influx-DB-Batch-LBS 19001034 als Verursacher herauskristallisiert, nach langwieriger Try-and-Error-Methode. Sobald dieser nicht mehr aktiv war, stieg die Logik-Engine nicht mehr aus und das obwohl:
    1. das Setup mehrere Monate problemlos lief und Daten korrekt geschrieben wurden
    2. nach einem Restart von Edomi auch das Schreiben in die Influx-Datenbank problemlos verlief, aber eben nur ein paar Tage
    3. nichts am Zielsystem (Raspi 4) oder der Netzwerk-Infrastruktur geändert wurde

    Einen Kommentar schreiben:


  • woda
    antwortet
    Das passiert z.B., wenn blockierende Codestellen nicht im exec Teil des LBS stehen (Abfragen, Wait, ...)

    Einen Kommentar schreiben:


  • phili
    antwortet
    Hallo Yves,
    danke für Deine Rückmeldung.

    Zitat von starwarsfan Beitrag anzeigen
    das passiert nicht "einfach so" und "von jetzt auf gleich", da muss sich etwas geändert haben. Aber genau das herauszufinden, wird ohne Glaskugel schwer und die ist wie üblich beim Service.
    Das ist ja gerade das nervige. Ich habe seit langer Zeit nichts am System geändert. Nun habe ich an einigen eigenen Bausteinen weiterentwickelt (kann ich noch nicht im Detail darstellen, weil zu aufwändig).
    Die damit verbundenen Logiken habe ich zwischenzeitlich wieder deaktiviert. Aber immer noch, nach ca. 30 Minuten ist die Logik Engine weg. Habe jetzt mal ein Backup von vor 5 Tagen eingespielt.

    Ich bin total bei dir! Es sind deterministische Systeme und wenn da nichts geändert wird und nichts seinen Geist aufgibt, dann verhält sich das System wie immer.

    Ich schaue erstmal wie es mit dem Backup von vor 5 Tagen aussieht.




    Einen Kommentar schreiben:


  • starwarsfan
    antwortet
    Hallo miteinander,

    das passiert nicht "einfach so" und "von jetzt auf gleich", da muss sich etwas geändert haben. Aber genau das herauszufinden, wird ohne Glaskugel schwer und die ist wie üblich beim Service.

    Also bitte:
    • Auf welchem System resp. welcher Hardware läuft Edomi? Nativ auf Blech, Docker, ProxMox?
    • Wie sieht das Setup im Detail aus? Harddisk? Memory?
    • Funktioniert in so einem Fall der ssh-Login noch?
    • Welche Edomi-Basisfunktionen sind aktiviert? KNX, Mail, IRTrans, ...
    • Welche nicht-standard-LBS (beginnen mit Nummer 19*) sind installiert?
    • Gibt es mehrfache Verwendung der LBS, also in verschiedenen Logiken?
    Und ganz wichtig: Was genau wurde in letzter Zeit am System selber bzw. an den Umsystemen gemacht?

    Einen Kommentar schreiben:


  • phili
    antwortet
    Hallo Marcus,
    das selbe Problem habe ich auch seit heute Vormittag.
    Hast Du Abhilfe schaffen können? Wie hast Du es debuged?

    Phili

    Einen Kommentar schreiben:


  • madmaxx
    hat ein Thema erstellt Edomi-Logikengine stellt die Arbeit ohne einen Mucks ein

    Edomi-Logikengine stellt die Arbeit ohne einen Mucks ein

    Hallo,

    seit ein paar Tagen stellt wahrscheinlich die gesamte Logik-Engine in unregelmäßigen Abständen von jetzt auf gleich die Arbeit ein. Im Error- und Systemlog steht in diesem Zeitraum überhaupt nichts, im ETS-Gruppenmonitor und im Edomi-Monitorlog ist nichts ungewöhnliches zu sehen. Bis auf die Edomi-internen Einträge sind beide identisch, die Edomi-internen hören ab diesem Zeitpunkt komplett auf. Monitor- und Bausteinlogs laufen weiter, d.h. es kommt noch was rein, aber es geht nichts mehr raus, zu sehen auch in der Edomi-Statusübersicht.
    Wenn ich in der Liveansicht einen Wert ändere, wird in den folgenden LBS nichts aktualisiert.

    In den Bildern sieht man recht gut: der minütliche Edomi-Heartbeat erfolgt 12:06:00 noch, ab 12:07:00 nicht mehr.

    Da der Absturz in unregelmäßigen Abstanden und aus jetzigem Wissenstand nicht reproduzierbar erst nach Tagen kommt, ist das Deaktivieren von Logiken bestenfalls schwierig und äußerst langwierig. Nach einem Neustart läuft alles wieder wie gewünscht.

    Ich hoffe euch fällt ein Ansatz zur Problemlösung ein.

    Danke und Grüße
    Marcus
    Angehängte Dateien
Lädt...
X