Tausende tclsh threads

Einrichtung, Nutzung und Hilfe zu RaspberryMatic (OCCU auf Raspberry Pi)

Moderatoren: jmaus, Co-Administratoren

Benutzeravatar
jmaus
Beiträge: 9818
Registriert: 17.02.2015, 14:45
System: Alternative CCU (auf Basis OCCU)
Wohnort: Dresden
Hat sich bedankt: 459 Mal
Danksagung erhalten: 1855 Mal
Kontaktdaten:

Re: Tausende tclsh threads

Beitrag von jmaus » 22.10.2018, 13:31

deimos hat geschrieben:
22.10.2018, 13:18
Rein vom TCL code wird bei dem check_mk Plugin alles so gemacht, wie es in der Doku steht um Zombies zu vermeiden. Nur weiß ich nicht, was das tcl_rega Modul macht und ich würde vermuten, dass das Problem aus der Richung kommt.
Ich vermute auch das es entweder vom tclrega oder tclrpc Modul kommt. Allerdings kann ich dir zumindest sagen das in beiden keinerlei eigener fork() gemacht wird oder ähnliches. Allerdings kann es in der Tat so sein, dass wenn die "xmlrpc" oder "rega_script" Methode aus irgendwelchen Gründen nicht "zurückkehrt" (weil XMLRPC oder ReGa nicht verfügbar ist) dann kann das ganze hier mitunter schon blockieren. Und da check_mk eben in gewissen Intervallen alle system abfragt werden es im Endeffekt immer mehr und mehr solcher tclsh Prozesse. Kannst du vielleicht irgendein Prozesscheck ganz am Anfang des check_mk Skriptes einbauen das nach einem Lockfile checkt oder so und dann ggf. erst gar nicht das check_mk Skript ausführt wenn es noch läuft?!?
RaspberryMatic 3.75.6.20240316 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal / ☕️

hauwech
Beiträge: 21
Registriert: 16.10.2013, 13:43

Re: Tausende tclsh threads

Beitrag von hauwech » 22.10.2018, 13:31

Ich habe die Auffälligkeiten gerade oben im Beitrag ergänzt.

Benutzeravatar
deimos
Beiträge: 5383
Registriert: 20.06.2017, 10:38
System: Alternative CCU (auf Basis OCCU)
Wohnort: Leimersheim
Hat sich bedankt: 121 Mal
Danksagung erhalten: 949 Mal
Kontaktdaten:

Re: Tausende tclsh threads

Beitrag von deimos » 22.10.2018, 13:44

Hi,
jmaus hat geschrieben:
22.10.2018, 13:31
deimos hat geschrieben:
22.10.2018, 13:18
Rein vom TCL code wird bei dem check_mk Plugin alles so gemacht, wie es in der Doku steht um Zombies zu vermeiden. Nur weiß ich nicht, was das tcl_rega Modul macht und ich würde vermuten, dass das Problem aus der Richung kommt.
Ich vermute auch das es entweder vom tclrega oder tclrpc Modul kommt. Allerdings kann ich dir zumindest sagen das in beiden keinerlei eigener fork() gemacht wird oder ähnliches. Allerdings kann es in der Tat so sein, dass wenn die "xmlrpc" oder "rega_script" Methode aus irgendwelchen Gründen nicht "zurückkehrt" (weil XMLRPC oder ReGa nicht verfügbar ist) dann kann das ganze hier mitunter schon blockieren. Und da check_mk eben in gewissen Intervallen alle system abfragt werden es im Endeffekt immer mehr und mehr solcher tclsh Prozesse. Kannst du vielleicht irgendein Prozesscheck ganz am Anfang des check_mk Skriptes einbauen das nach einem Lockfile checkt oder so und dann ggf. erst gar nicht das check_mk Skript ausführt wenn es noch läuft?!?
Nope, das ist ein Daemon und der läuft durch und forked keine tclsh Prozesse.

Viele Grüße
Alex

Benutzeravatar
deimos
Beiträge: 5383
Registriert: 20.06.2017, 10:38
System: Alternative CCU (auf Basis OCCU)
Wohnort: Leimersheim
Hat sich bedankt: 121 Mal
Danksagung erhalten: 949 Mal
Kontaktdaten:

Re: Tausende tclsh threads

Beitrag von deimos » 22.10.2018, 13:50

Hi,
hauwech hat geschrieben:
22.10.2018, 13:26
Ohne reboot: alle wilden tclsh Prozesse sind weg!
In /var/log/messages stehen (vor der Deinstallation) viele Einträge wie:

Code: Alles auswählen

Oct 22 11:28:02 homematic-raspi user.notice root: check_mk_agent - couldn't execute "ip": no such file or directory
:shock:

Kannst du bitte mal schauen, was kommt, wenn du dich per SSH einloggst und den Befehl

Code: Alles auswählen

ip link
ausführst?

Viele Grüße
Alex

hauwech
Beiträge: 21
Registriert: 16.10.2013, 13:43

Re: Tausende tclsh threads

Beitrag von hauwech » 22.10.2018, 13:56

Code: Alles auswählen

# ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether b8:27:eb:4d:46:0c brd ff:ff:ff:ff:ff:ff
3: wlan0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop qlen 1000
    link/ether b8:27:eb:18:13:59 brd ff:ff:ff:ff:ff:ff

Benutzeravatar
jmaus
Beiträge: 9818
Registriert: 17.02.2015, 14:45
System: Alternative CCU (auf Basis OCCU)
Wohnort: Dresden
Hat sich bedankt: 459 Mal
Danksagung erhalten: 1855 Mal
Kontaktdaten:

Re: Tausende tclsh threads

Beitrag von jmaus » 22.10.2018, 14:22

deimos hat geschrieben:
22.10.2018, 13:50
Kannst du bitte mal schauen, was kommt, wenn du dich per SSH einloggst und den Befehl

Code: Alles auswählen

ip link
ausführst?
Also hier existiert das und geht auch:

Code: Alles auswählen

# which ip
/sbin/ip
# ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq qlen 1000
    link/ether XX:XX:XX.XX.XX brd ff:ff:ff:ff:ff:ff
3: wlan0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop qlen 1000
    link/ether XX:XX.XX.XX.XX.XX brd ff:ff:ff:ff:ff:ff
Kann es sein das das "ip" Kommando in irgendeiner konstellation mit einem komischen/falschen Suchpfad für executables ausgeführt wird in dem der /sbin/ Pfad fehlt?
RaspberryMatic 3.75.6.20240316 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal / ☕️

Benutzeravatar
deimos
Beiträge: 5383
Registriert: 20.06.2017, 10:38
System: Alternative CCU (auf Basis OCCU)
Wohnort: Leimersheim
Hat sich bedankt: 121 Mal
Danksagung erhalten: 949 Mal
Kontaktdaten:

Re: Tausende tclsh threads

Beitrag von deimos » 22.10.2018, 14:31

Hi,

klingt nach sowas. Nur wie kommt da ein falscher Pfad in einen laufenden Prozess? Und Die dokumentierten Methoden um Zombies beim Fork von Socket zu verhinden (das catch mit schließen vom Channel) scheinen bei der alten Version von TCL wohl noch nicht angekommen zu sein.

Viele Grüße
Alex

Bulli
Beiträge: 494
Registriert: 29.04.2014, 18:38
Hat sich bedankt: 2 Mal
Danksagung erhalten: 9 Mal

Re: Tausende tclsh threads

Beitrag von Bulli » 22.10.2018, 18:33

Hallo
und gleich mal sorry aber ich kann gerade nicht anders.
/* sarkasmus on
so ein kleiner lieber Zombie Prozess ist doch gar nicht schlimm. Verbraucht keine Ressourcen tut keinen Weh. Also was soll es last sie doch einfach Leben Problem erledigt.
sarkasmus off */


Jetzt meine Meinung dazu.
Schön wäre es wenn man auch mal eine ps Ausgabe gesehen hätte. Ich möchte aber auch noch mal an dieses Problem erinnern.
https://github.com/jens-maus/RaspberryMatic/issues/316
Ein Cronjob erzeugt sogar einen Zombie der 8-10 Sekunden läuft. Aber jedes tcl sh oder sonst was Script erzeugt DEFINITIV einen Zombie.
Das es dann auch mal Zombies gibt die nicht mehr weg gehen kennen wir doch schon. So lange das so ist ist es ein Kampf gegen Windmühlen.
Der wo jetzt durch welches Script auch immer einen Zombie erzeugt, hat halt verloren und muß Nachsitzen und sein Script ändern.

Gruß
Bulli

UND BEVOR JETZT WIEDER EIN MISTER X KOMMT UND AUF SCHÜRREN MACHT DAS WAR SCHON VOR jmaus SO.

Benutzeravatar
deimos
Beiträge: 5383
Registriert: 20.06.2017, 10:38
System: Alternative CCU (auf Basis OCCU)
Wohnort: Leimersheim
Hat sich bedankt: 121 Mal
Danksagung erhalten: 949 Mal
Kontaktdaten:

Re: Tausende tclsh threads

Beitrag von deimos » 22.10.2018, 18:54

Hi,

@Bulli: Triggerst du einfach immer wenn Zombieund CCU in einem Post vorkommt, egal ob es Sinn macht und ohne den ganzen Thread gelesen zu haben?

Dank dem Log sieht man, dass die Rega sehr wahrscheinlich unschuldig an den Zombies ist.

Viele Grüße
Alex

Bulli
Beiträge: 494
Registriert: 29.04.2014, 18:38
Hat sich bedankt: 2 Mal
Danksagung erhalten: 9 Mal

Re: Tausende tclsh threads

Beitrag von Bulli » 22.10.2018, 20:08

deimos hat geschrieben:
22.10.2018, 18:54
Hi,

@Bulli: Triggerst du einfach immer wenn Zombieund CCU in einem Post vorkommt, egal ob es Sinn macht und ohne den ganzen Thread gelesen zu haben?

Dank dem Log sieht man, dass die Rega sehr wahrscheinlich unschuldig an den Zombies ist.

Viele Grüße
Alex
Hallo
ich habe alles gelesen sogar issues/2. Warum schreibe ich den letzten Satz groß!? Habe doch auch geschrieben das jedes Script auf jeden Fall einen Zombie erzeugt. Sprich ohne Rega auch ein Shell Script erzeugt einen Zombie. Wenn der jetzt bei einigen/wenigen User dauerhaft bleibt ist es für diese User ein Problem weil die Prozesstable(ulimit -u) voll läuft.
Wir haben doch jetzt schon öfter gesehen das es vor kommt.Wie zum Beispiel hier.
viewtopic.php?f=65&t=43359 (ok da ist die Rega dabei aber was soll es)

Du kannst nur indirekt etwas dafür. So lange das Problem nicht an der Wurzel beseitigt wird.
@deimos wie ist eigentlich deine Meinung zum Cronjob Zombie? Kann ich was für mein cronjobs die Zombies erzeugen?

Gruß
Bulli

Antworten

Zurück zu „RaspberryMatic“