ExecEngine (und wieder mal Zombies)

Bugreports und Updatewünsche an die Firma contronics
Keine allgemeinen Fragen!

Moderator: Co-Administratoren

Antworten
rhobin
Beiträge: 1007
Registriert: 09.11.2009, 12:01

ExecEngine (und wieder mal Zombies)

Beitrag von rhobin » 10.02.2013, 17:35

Hallo Leute,

ihr wisst ja, dass ich mich schon seit Monaten mit "hängenden ExecEngines" und "Zombies" herumärgere. :(

Ich hatte mich zwischenzeitlich damit abgefunden, dass ich nach jeder Neuübertragung des Projektes den "Hardware-Reset" an der CCU durchführen muss, weil halt die Kiste nach einfachem Neuübertragen nicht mehr richtig läuft und VISUWIN "einfriert". :(

Jetzt kommt ein neues Phänomen dazu:

Beim Übertragen kommt nach wenigen Sekunden folgendes Fenster
Zwischenablage01.jpg
Nach Bestätigung des OK-Button, kommt rasch die Meldung "Datei korrekt übertragen". Dem ist aber nicht so, wie man per ftp im Verzeichnis "usr/local/Homeputer" anhand des Zeitstempels der Datei "<Projektname>.CEX" feststellen kann.

Also kopiere ich die neue CEX-Datei per Hand (FTP) auf die CCU. Danach über das Zentralen-Kontrollprogramm "Exec Engine beenden" - auf Antwort warten - "ExecEngine Starten" auf Antwort warten "Ausführung starten"

Dann läuft das System wieder rund (auch VISUWIN) aber die Prozesse auf der CCU per Telnet aufgerufen zeigen:
Zwischenablage02.jpg
Da isser ja - unser kleiner süsser Zombie (PID 1247) :D - und der verschwindet auch nicht von alleine, wie hier vor kurzem erzählt wurde...

Über einen Kommentar von Contronics würde ich ich freuen

Gruß
Rhobin

buempi
Ehrenmitglied
Beiträge: 12194
Registriert: 29.07.2006, 15:58
Wohnort: Schweiz
Danksagung erhalten: 5 Mal

Re: ExecEngine (und wieder mal Zombies)

Beitrag von buempi » 10.02.2013, 18:28

rhobin hat geschrieben:Über einen Kommentar von Contronics würde ich ich freuen
... damit sich Contronics dazu äussern kann, verschiebe ich das Thema in die Bugs.

Viele Grüsse
Bümpi

Tobias78
Beiträge: 1464
Registriert: 27.06.2010, 01:01
Wohnort: Braunschweig
Hat sich bedankt: 4 Mal

Re: ExecEngine (und wieder mal Zombies)

Beitrag von Tobias78 » 10.02.2013, 18:47

Hallo Rhobin,
wie groß ist Dein Projekt und benutzt Du den Befehl Starteprogramm?
Ich vermute in großen Projekten in Kombination mit diesem Befehl das Problem.
Wenn ich testweise alle 5 Minuten den Uptime Befehl nutze, hab ich genau das von Dir beschriebene Problem.
Meine Doppelten ExecEngines haben sich noch nie allein beendet - auch per Telnet habe ich dies noch nicht geschafft... und jetzt bitte keine Sprüche über Knoblauch oder Silbernägel in die CCU... auch wenn mir manchmal selbst danach ist.
Gern stelle ich das besagte Makro bei Bedarf zur Verfügung.
Gruß, Tobias.
--------------------------------------------
Im Einsatz und empfehlenswert:
RaspberryMatic,IO.Broker, Homeputer Studio; CuXD; PocketControl, HomeStatus, Robonect, Alexa, io.Broker
------------------------------------------

Familienvater
Beiträge: 7151
Registriert: 31.12.2006, 15:18
System: Alternative CCU (auf Basis OCCU)
Wohnort: Rhein-Main
Danksagung erhalten: 35 Mal

Re: AW: ExecEngine (und wieder mal Zombies)

Beitrag von Familienvater » 10.02.2013, 19:13

Moin,

ich glaube, startprogramm hat irgendwann ein Problem und gibt Speicher nicht wieder frei, meine execengine wächst von ~3200 bis max. ~8000kb, dann startete bei mir die execengine von alleine. Zombies habe ich auch, aber die stören mich nicht wirklich.

Der Familienvater

Gesendet von meinem Nexus 7 mit Tapatalk 2

rhobin
Beiträge: 1007
Registriert: 09.11.2009, 12:01

Re: ExecEngine (und wieder mal Zombies)

Beitrag von rhobin » 10.02.2013, 20:46

Hi Tobias
Tobias78 hat geschrieben: wie groß ist Dein Projekt und benutzt Du den Befehl Starteprogramm?
Mein Projekt ist etwa 420 kb groß, den Befehll "Starteprogamm" nutze ich exakt 7mal.
Tobias78 hat geschrieben: Ich vermute in großen Projekten in Kombination mit diesem Befehl das Problem.
hm - steckt hinter "STARTPROGRAMM" etwa "system.exec" ???
Tobias78 hat geschrieben: Wenn ich testweise alle 5 Minuten den Uptime Befehl nutze, hab ich genau das von Dir beschriebene Problem.
Den uptime-Befehl nutze ich auch - aber händisch über den Aufruf mit einem Objekt "Knopf"
Tobias78 hat geschrieben: Meine Doppelten ExecEngines haben sich noch nie allein beendet - auch per Telnet habe ich dies noch nicht geschafft... und jetzt bitte keine Sprüche über Knoblauch oder Silbernägel in die CCU... auch wenn mir manchmal selbst danach ist.
Die Zombie-PID stört mich auch nicht wieter, aber ab und an (kann leider nicht sagen wann genau), ist der Zombie nicht tot, sodern werkelt im Hintergrund weiter. Ich sehe das daran, dass in diversen Log-Dateien 2 Einträge mit exakt dem gleichen Zeitstempel auftauchen...
Tobias78 hat geschrieben: Gern stelle ich das besagte Makro bei Bedarf zur Verfügung.
Tu das, danke schonmal

Gruß
Rhobin

Tobias78
Beiträge: 1464
Registriert: 27.06.2010, 01:01
Wohnort: Braunschweig
Hat sich bedankt: 4 Mal

Re: ExecEngine (und wieder mal Zombies)

Beitrag von Tobias78 » 11.02.2013, 06:58

rhobin hat geschrieben:Hi Tobias

...
Tu das, danke schonmal

Gruß
Rhobin
gern:

Das Makro ist vom Typ Zeichen;
Nicht übernehmen! DIeses Makro führt bei einem Ausführungsintervall von 5 Minuten spätestens nach 1-2 Tagen zur Fehlfunktion der EXEC.ENGINE
Eine ganze Weile hat das Makro einwandfrei funktioniert...

Code: Alles auswählen

//! ============================================================
//! VARIABLENDEFINITIONEN
//! ============================================================
//! NAME                TYP                 STARTWERT
//! ------------------------------------------------------------
//! Uptime              Zeichen
//! Last1min            Zeichen
//! counter             Zahl                0
LöscheDatei("Uptime.log")
Schreibedatei("Uptime.log","MAKRO_UPTIME_LOG.Uptime=",0)
warte("00:00:11")
StartProgramm("uptime >> /var/datadisk/Uptime.log")
//Antwort: 21:11:00 up  8:47, load average: 0.03, 0.20, 0.33
warte("00:00:10")
lesewertedatei("Uptime.log")
warte("00:00:05")
Last1min:=RECHTERTEIL(Uptime,16)
Last1min:=LINKERTEIL(Last1min,4)
MAKRO_UPTIME_LOG:="Uptime: "+Uptime+" Last1min: "+Last1min

wenn Uptime="" oder Uptime=" " dann
     MAKRO_PROWL_NACHRICHT.Empfaenger:="Tobias"
     MAKRO_PROWL_NACHRICHT.Betreff:="CCU STARTPTOGRAMM"
     MAKRO_PROWL_NACHRICHT.Text:="Uptime: "+Uptime+" Wenn nach Uptime nix steht, wird kein STARTPROGRAMM mehr ausgeführt. Hier hilft denn wohl nur nen Reset!? Wird in 10 Minuten ausgelöst"
     MAKRO_PROWL_NACHRICHT.Dringlichkeit:="1"
     Aufrufen(MAKRO_PROWL_NACHRICHT)
     counter:=counter+1
endewenn

wenn (Uptime="" oder Uptime=" " )und Counter > 2 dann
     MAKRO_PROWL_NACHRICHT.Empfaenger:="Tobias"
     MAKRO_PROWL_NACHRICHT.Betreff:="CCU STARTPTOGRAMM"
     MAKRO_PROWL_NACHRICHT.Text:="Hilft ja nix! CCU wird in 2-3 Minuten neu gestartet!"
     MAKRO_PROWL_NACHRICHT.Dringlichkeit:="1"
     Aufrufen(MAKRO_PROWL_NACHRICHT)
     warte("00:00:30")
     Virt_CCU_RESET:=1
endewenn

wenn Last1min > 1.20 und Counter = 2 dann
     MAKRO_PROWL_NACHRICHT.Empfaenger:="Tobias"
     MAKRO_PROWL_NACHRICHT.Betreff:="CCU Volllast Warnung"
     MAKRO_PROWL_NACHRICHT.Text:="Uptime: "+Uptime+" Last1min: "+Last1min
     MAKRO_PROWL_NACHRICHT.Dringlichkeit:="-2"
     Aufrufen(MAKRO_PROWL_NACHRICHT)
    counter:=counter+1
endewenn

wenn Last1min > 1.20 und Counter > 1 dann
    counter:=counter+1
endewenn
wenn Last1min < 1.20 und NICHT Uptime = "" dann
    counter:=0
endewenn
wenn counter>12 dann
   counter:=0
endewenn
Gruß, Tobias.
--------------------------------------------
Im Einsatz und empfehlenswert:
RaspberryMatic,IO.Broker, Homeputer Studio; CuXD; PocketControl, HomeStatus, Robonect, Alexa, io.Broker
------------------------------------------

rhobin
Beiträge: 1007
Registriert: 09.11.2009, 12:01

Re: ExecEngine (und wieder mal Zombies)

Beitrag von rhobin » 12.02.2013, 11:04

Hi Tobi,

danke für das Makro (das ich so sicher nicht übernehmen werde :) ) Ich könnte mir tatsächlich vorstellen, dass ein 5minütiges Aufrufen der CCU Stress macht früher oder später....

Aber Du hast mich auf eine Idee gebracht. Wenn ich bei Bedarf meinen "Aktualisieren"-Knopf betätige, dann spuckt mir das Makro jetzt auch die Lasten auf die Visualisierung.

Während des Testens gestern abend habe ich fast einen Schreck bekommen. "2.43, 2.13, 1.92". Ich mit Telnet auf die CCU und kontrolliert - Werte plausibel.

Nur: Wer oder was rödelt auf der CCU plötzlich so??
Das System funktionierte absolut einwandfrei - keine Verzögerungen spürbar.
Das ging dann so etwa 20 Minuten, dann pendelten sich die Last-Werte wieder so bei "0.2" bis "0.5" ein. Heute früh sind die Last-Werte auch im grünen Bereich.
Der ganze Zirkus hatte offensichtlich nichts mit Homeputer zu tun.

Gruß
Rhobin

Familienvater
Beiträge: 7151
Registriert: 31.12.2006, 15:18
System: Alternative CCU (auf Basis OCCU)
Wohnort: Rhein-Main
Danksagung erhalten: 35 Mal

Re: ExecEngine (und wieder mal Zombies)

Beitrag von Familienvater » 12.02.2013, 11:29

Moin,

das ist kein Problem mit der load average, ich mache bei mir nur die WebUi auf und gehe z.B. in den Geräte Posteingang, schon ist bei mir die 1min Average auf 2,50....

Ich glaube nicht wirklich dran, das ein 5 minütiges Aufrufen von uptime die CCU kurzfristig lahmlegt, weil das nur 288 Aufrufe pro Tag sind. Ich habe bei mir bis zu 900 Aufrufe/Tag vom logger per startprogramm gemacht, und das hat zuletzt bei mir erst nach 10 Tagen zu einem automatischen Neustart der execengine geführt, die CCU lief trotzdem noch stabil...

Aber ich will nichts beschönigen, es kann kein Lösung sein, die CCU regelmäßig neustarten zu müßen, damit das ganze zuverlässig funktioniert...

Der Familienvater

Familienvater
Beiträge: 7151
Registriert: 31.12.2006, 15:18
System: Alternative CCU (auf Basis OCCU)
Wohnort: Rhein-Main
Danksagung erhalten: 35 Mal

Re: ExecEngine (und wieder mal Zombies)

Beitrag von Familienvater » 20.02.2013, 19:15

Moin,

wer das nächste mal Zombies von der ExecEngine hat, der kann sich dieser auch ohne Reboot der CCU entledigen, indem er am besten erstmal per Kontrolle Exec-Engine seine normale Ausführung beendet, und danach dann die Exec-Engine beendet. (jetzt spuckt einem hoffentlich kein Watchdog-Timer mehr mit automatischen Restart in die Suppe)

Jetzt per telnet/ssh auf der Konsole /etc/config/rc.d/homeputer stop eingeben und ausführen, dann werden erstmal alle noch hängenden/laufenden homeputer-Prozesse (ctlstart/ctlexen und die FHZ-Treiber entladen)

Damit sollten die Zombies der Vergangenheit angehören. Jetzt kann man das ganze wieder mit /etc/config/rc.d/homeputer ans laufen bringen, wer einen USB-Stick an der CCU hat, bekommt jetzt eine Fehlermeldung, das der mount nicht geklappt hat, aber das kann man getrost ignorieren.
Bitte Geduld, nicht noch mal aus ungeduld in der Kontrolle Exec-Engine auf Ausführen starten oder so klicken, dann schafft man es nämlich wirklich, 2 komplette Instanzen der Exec-Engine ans laufen zu kriegen.

So sollte das dann nachher aussehen, ohne doppelte Instanzen, das dort insgesamt 4 ExecEngines am werkeln sind ist wohl OK (pstree -p mit der Vollversion der Busybox)

Code: Alles auswählen

init(1)-+-FHZ1xxxIF(29360)---FHZ1xxxIF(29366)-+-FHZ1xxxIF(29367)
        |                                     `-FHZ1xxxIF(29368)
        |-FHZ2000IF(29353)---FHZ2000IF(29359)-+-FHZ2000IF(29363)
        |                                     |-FHZ2000IF(29365)
        |                                     `-FHZ2000IF(29369)
        ....
        |-ctlstart(29348)---ctlexen(29349)-+-ExecEngine(29362)---ExecEngine(29370)-+-ExecEngine(29371)
        |                                  |                                       `-ExecEngine(29442)
        |                                  `-ctlexen(29357)---ctlexen(29358)
        ....
Ich habe es vorhin geschafft mit ungeduld die Doppelausführung hinzukriegen, leider habe ich nicht dran gedacht, einen Screenshot vom pstree zu machen und es ist schon aus dem Zwischenspeicher vom putty raus...

Ich meine aber, das sah ungefähr so aus (doppelte PIDs, weil ich das jetzt nur COPY/PASTE aus dem Tree von oben gebaut habe)

Code: Alles auswählen

init(1)-+-FHZ1xxxIF(29360)---FHZ1xxxIF(29366)-+-FHZ1xxxIF(29367)
        |                                     `-FHZ1xxxIF(29368)
        |-FHZ2000IF(29353)---FHZ2000IF(29359)-+-FHZ2000IF(29363)
        |                                     |-FHZ2000IF(29365)
        |                                     `-FHZ2000IF(29369)
        ....
        |-ctlstart(29348)---ctlexen(29349)-+-ExecEngine(29362)---ExecEngine(29370)-+-ExecEngine(29371)
        |                                  |                                       `-ExecEngine(29442)
        |                                  |-ExecEngine(29362)---ExecEngine(29370)-+-ExecEngine(29371)
        |                                  |              `-ExecEngine(29442)
        |                                  `-ctlexen(29357)---ctlexen(29358)
        ....
Vielleicht hilfts ja jemand, einen Neustart der CCU zu verhindern.

Der Familienvater

rhobin
Beiträge: 1007
Registriert: 09.11.2009, 12:01

Re: ExecEngine (und wieder mal Zombies)

Beitrag von rhobin » 05.11.2013, 07:21

Hallo,

ausgegebenem Anlass ist es wieder mal an der Zeit das Thema hochzuholen...

Leider hatte ich den letzten Beitrag von "Familienvater" nicht mehr in Erinnerung, sonst hätte ich das gestern abend mal ausprobieren können, denn...

...nach Erfrieren von VisuWin habe ich über das Kontrollprogramm die EE erst "resetted", als das nach etwa 30 - 40 Sekunden erledigt war aber VisuWin immer noch hing, dann die EE "beendet" und nach dem Abwarten der Rückmeldung neu "gestartet" - ohne dass sich am Hänger in VisuWin etwas änderte. Eine Kontrolle mittels Telnet ergab dann - und jetzt kommt's -

3 (in Worten: drei) EE-Zombies (wer bietet mehr??) :P

Und für diejenigen, die da sagen "Der Rhobin spinnt, das kann nicht sein" im Anhang der Screenshot.
Zombies.jpg
Ein Hard-Reset brachte - wie immer - wieder Ruhe im Karton.

Ich warte immer noch auf einen Kommentar von Contronics

Gruß
Rhobin

Antworten

Zurück zu „homeputer CL - Bugs & Updatewünsche“