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

    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

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

    Phili

    Kommentar


      #3
      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?
      Kind regards,
      Yves

      Kommentar


        #4
        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.




        Kommentar


          #5
          Das passiert z.B., wenn blockierende Codestellen nicht im exec Teil des LBS stehen (Abfragen, Wait, ...)
          Gruß Wolfgang
          __________________________________________________ ____
          HS

          Kommentar


            #6
            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

            Kommentar


              #7
              Danke schon mal an alle!
              Werde wohl ersteinmal den Großteil der Logiken deaktivieren.

              Kommentar


                #8
                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.

                Kommentar


                  #9
                  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.

                  Kommentar


                    #10
                    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.

                    Kommentar


                      #11
                      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)

                      Kommentar


                        #12
                        Stimmt, langsam wird es ja wieder kalt und früh dunkel

                        Kommentar


                          #13
                          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.

                          Kommentar


                            #14
                            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.

                            Kommentar

                            Lädt...
                            X