FHEM Log Cannot fork: Cannot allocate memory

Begonnen von michael.winkler, 23 Juni 2017, 07:43:04

Vorheriges Thema - Nächstes Thema

rudolfkoenig

@Groby: Danke fuer die Testwerte. Es gibt wohl 100+ Module, die Attribute direkt abfragen, ohne AttrVal, mit (if($attr{$name}{myattribute}) ... ) und dadurch $attr{$name} implizit anlegen. Ich habe das selbst bei meinen Modulen gefunden, und bei 3 gerade gefixt (FHEMWEB, Blocking, structure). Habe danach in FHEM2FHEM fuer temporaere Geraete im LOG Modus das dazugehoerige $attr Eintrag auch entfernt.

@CoolTux: '' oder "" beim Ansprechen eines Hash-Wertes in perl nur dann notwendig, wenn der Schluessel nicht als Variablenname durchgeht. Ist fuer die meisten FHEM-Geraetenamen nicht notwendig.

CoolTux

#61
Zitat von: rudolfkoenig am 09 Juli 2017, 14:08:15
@CoolTux: '' oder "" beim Ansprechen eines Hash-Wertes in perl nur dann notwendig, wenn der Schluessel nicht als Variablenname durchgeht. Ist fuer die meisten FHEM-Geraetenamen nicht notwendig.

Danke Rudi für den Tip.


Grüße
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

CoolTux

Zitat von: rudolfkoenig am 09 Juli 2017, 14:08:15
@Groby: Danke fuer die Testwerte. Es gibt wohl 100+ Module, die Attribute direkt abfragen, ohne AttrVal, mit (if($attr{$name}{myattribute}) ... ) und dadurch $attr{$name} implizit anlegen. Ich habe das selbst bei meinen Modulen gefunden, und bei 3 gerade gefixt (FHEMWEB, Blocking, structure). Habe danach in FHEM2FHEM fuer temporaere Geraete im LOG Modus das dazugehoerige $attr Eintrag auch entfernt.

Könnte wetten das ich das auch bei mir in meinen ersten Modulen finde. Ich fixe Mal die Tage.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Groby

@Rudi,

ich habe mir die Files direkt abgegriffen und getestet.

Nach >150 Events sieht das bei mir für FHEM2FHEM im LOG Modus verdammt gut aus.

"{ join(",", grep { !$defs{$_} } sort keys %attr) }" liefert keinen einzigen Eintrag mehr.

Danke...


michael.winkler

#64
Ich habe mir gerade mein eigenes Modul angeschaut.


    # set default settings on first define
    if ($init_done) {
        $attr{$name}{icon} = 'it_server';
    }

   # set default settings on first define
    if ($init_done) {

        # use http-method POST for FritzBox environment as GET does not seem to
        # work properly. Might restrict use to newer
        # NEUTRINO Webif versions or use of OWIF only.
        if ( exists $ENV{CONFIG_PRODUKT_NAME}
            && defined $ENV{CONFIG_PRODUKT_NAME} )
        {
            $attr{$name}{"http-method"} = 'POST';
        }

        # default method is GET and should be compatible to most
        # NEUTRINO Webif versions
        else {
            $attr{$name}{"http-method"} = 'GET';
        }
        $attr{$name}{webCmd} = 'channel';
        $attr{$name}{devStateIcon} =
          'on:rc_GREEN:off off:rc_YELLOW:on absent:rc_STOP:on';
        $attr{$name}{icon} = 'dreambox';
    }



Ist dieser Code auch davon betroffen? Wenn ja, wie müsste ich den abändern?

CoolTux

Nein ist nicht betroffen. Du machst ja keine Abfrage auf ein $attr sondern eine Zuweisung.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

michael.winkler

Zitat von: CoolTux am 10 Juli 2017, 07:57:37
Nein ist nicht betroffen. Du machst ja keine Abfrage auf ein $attr sondern eine Zuweisung.
ok, danke für die Info. Dann sind meine Module erstmal nicht davon betroffen.

Thyraz

#67
Wollte auch schon seit ein paar Wochen einen Thread zu dem Thema aufmachen,
da ich das selbe Problem habe.

Da es mit 1GB auf dem Pi2 meist über eine Woche dauert bis der Zustand wieder einsetzt, ist die Fehlersuche für mich sehr schwer gewesen bisher.
Danke für die vielen Tips und Änderungen hier.

Habe schon testweise nach einem Backup mal alles an Devices gelöscht was ich in den letzten Monaten neu angelegt / hinzugefügt habe.
Leider ohne Wirkung.
"Früher" lief FHEM teilweise sehr lange ohne Probleme durch.
Das Problem ist, dass ich nicht richtig eingrenzen kann wann das Ganze begonnen hat.
Wir sind am Jahresanfang umgezogen und es kam über die Zeit danach sehr viel an neuen Devices dazu.
Eine Uptime von > 1 Woche kam da durch regelmäßige Updates/Neustarts eh kaum vor.

Mal sehen ob sich das Problem nach einem Update mit euren Änderungen gelöst hat,
sonst fuchse ich mich auch mal in die Tips hier rein und versuche mehr Infos zu liefern...
Fhem und MariaDB auf NUC6i5SYH in Proxmox Container (Ubuntu)
Zwave, Conbee II, Hue, Harmony, Solo4k, LaMetric, Echo, Sonos, Roborock S5, Nuki, Prusa Mini, Doorbird, ...

Amenophis86

Thema ist zwar schon älter, aber die Meldung habe ich die letzten Tage auch immer mal wieder im Log. Eine Frage, die indirekt damit zu tun hat, kann ich irgendwie auf die Meldung Triggern. Soll heißen ich würde mir gerne eine Nachricht schicken lassen, wenn diese Meldung im Log auftaucht um Zeitnah zu schauen. Soll heißen gibt es ein entsprechendes EVENT dazu?
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

Thyraz

#69
Ich glaube nicht.

Musst du denn FHEM auch neustarten um den Speicher wieder frei zu bekommen, oder verhält sich das bei dir anders?
Bei mir beginnt das eben wenn FHEM irgendwann an der 50% Marke des verfügbaren Arbeitsspeichers knabbert.

Der Speicherverbrauch von meinem FHEM steigt auch immer noch an.
Bis die Meldungen bei mir kommen dauert es eine knappe Woche nach einem erneuten Start von FHEM.
Fhem liegt dann meist bei einer Speichernutzung von ein paar hundert MB.
Früher blieb das auch nach wochenlanger Nutzung bei unter 50MB.

Auf dem Pi läuft neben Homebridge und Alexa an sich nur FHEM.
Der Rest der Prozesse wächst auch über die Tage hinweg kaum.
Es reicht dann auch FHEM neu zu starten, muss nicht das ganze System sein.


Ich habe schon alles aus diesem Thread und vielen weiteren die man zu dem Thema im Forum findet durch.
Bei keiner der genannten Diagnosemöglichkeiten kam es zu irgendwelchen Auffälligkeiten. :-\

Mangels Ideen und Zeit das im Moment intensiver zu verfolgen,
habe ich jetzt einfach einen Cronjob aufgesetzt, welcher FHEM täglich um 05:00 Uhr neu startet.
Nicht wirklich befriedigend, aber immerhin läuft das System so wieder 100% stabil.


edit:
Da ich mein System in Verdacht hatte, habe ich auch Raspbian und alle benötigten Pakete auf einer neuen SD Karte komplett neu aufgesetzt.
Danach nur benötigte Dateien aus dem FEHM Backup wiederhergestellt.
Das Problem besteht aber leider weiterhin.
Fhem und MariaDB auf NUC6i5SYH in Proxmox Container (Ubuntu)
Zwave, Conbee II, Hue, Harmony, Solo4k, LaMetric, Echo, Sonos, Roborock S5, Nuki, Prusa Mini, Doorbird, ...

herrmannj

es gibt eine Million Möglichkeiten wie Speicherlecks entstehen können und in 99% ist der Entwickler (eines) Moduls dafür zuständig. Gleichzeitig sind die aber auch sehr schwer zu finden.

So https://tech.binary.com/tracing-perl-memory-leaks-with-devel-mat/ kann man zb vorgehen




Wernieman

Es gibt also keine Möglichkeit rauszufinden, wie viel ein Modul an Speicher braucht? Auch nicht mal "abschätzungsweise"?
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

CoolTux

Ich glaube mich erinnern zu können das Rudi da mal was gebastelt hat. Es war ein User Thread. Ich muss überlegen mit welchen User. Ich glaube es war Winkler oder so. Also mit Vornamen dazu.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

CoolTux

Aha ich Dussel, das ist der Thread. Lach  ;D

Shit mit 40 ist alles vorbei merke ich gerade
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

CoolTux

Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net