Autor Thema: FHEM Log Cannot fork: Cannot allocate memory  (Gelesen 7074 mal)

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 17959
Antw:FHEM Log Cannot fork: Cannot allocate memory
« Antwort #60 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.

@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.

Online CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 13150
Antw:FHEM Log Cannot fork: Cannot allocate memory
« Antwort #61 am: 09 Juli 2017, 14:44:22 »
@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
« Letzte Änderung: 09 Juli 2017, 14:45:57 von 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.me/MOldenburg
Mein GitHub: https://github.com/LeonGaultier

Online CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 13150
Antw:FHEM Log Cannot fork: Cannot allocate memory
« Antwort #62 am: 09 Juli 2017, 14:47:25 »
@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.me/MOldenburg
Mein GitHub: https://github.com/LeonGaultier

Offline Groby

  • Full Member
  • ***
  • Beiträge: 190
Antw:FHEM Log Cannot fork: Cannot allocate memory
« Antwort #63 am: 09 Juli 2017, 15:26:17 »
@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...


Offline michael.winkler

  • Developer
  • Sr. Member
  • ****
  • Beiträge: 699
Antw:FHEM Log Cannot fork: Cannot allocate memory
« Antwort #64 am: 10 Juli 2017, 07:48:50 »
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?

Online CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 13150
Antw:FHEM Log Cannot fork: Cannot allocate memory
« Antwort #65 am: 10 Juli 2017, 07:57:37 »
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.me/MOldenburg
Mein GitHub: https://github.com/LeonGaultier

Offline michael.winkler

  • Developer
  • Sr. Member
  • ****
  • Beiträge: 699
Antw:FHEM Log Cannot fork: Cannot allocate memory
« Antwort #66 am: 10 Juli 2017, 07:58:38 »
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.

Online Thyraz

  • Sr. Member
  • ****
  • Beiträge: 552
Antw:FHEM Log Cannot fork: Cannot allocate memory
« Antwort #67 am: 10 Juli 2017, 12:28:33 »
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...
« Letzte Änderung: 10 Juli 2017, 12:32:09 von Thyraz »

Offline Amenophis86

  • Hero Member
  • *****
  • Beiträge: 2101
  • Anti-Statement befreite Zone ;)
Antw:FHEM Log Cannot fork: Cannot allocate memory
« Antwort #68 am: 06 Dezember 2017, 07:49:26 »
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?
FHEM auf Raspberry3, Betriebssystem Jessy, HMLan, HM Komponenten, LD382A, H801, Sonoff, Harmony Hub und vieles mehr. Einfach ein tolles universelles System

Online Thyraz

  • Sr. Member
  • ****
  • Beiträge: 552
Antw:FHEM Log Cannot fork: Cannot allocate memory
« Antwort #69 am: 06 Dezember 2017, 08:56:40 »
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.
« Letzte Änderung: 06 Dezember 2017, 08:59:41 von Thyraz »

Offline herrmannj

  • Global Moderator
  • Hero Member
  • ****
  • Beiträge: 4591
Antw:FHEM Log Cannot fork: Cannot allocate memory
« Antwort #70 am: 06 Dezember 2017, 10:34:02 »
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



smartVisu mit fronthem, einiges an HM, RFXTRX, Oregon, CUL, Homeeasy, ganz viele LED + Diverse

Offline Wernieman

  • Hero Member
  • *****
  • Beiträge: 3725
Antw:FHEM Log Cannot fork: Cannot allocate memory
« Antwort #71 am: 06 Dezember 2017, 14:23:10 »
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

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

Online CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 13150
Antw:FHEM Log Cannot fork: Cannot allocate memory
« Antwort #72 am: 06 Dezember 2017, 14:31:31 »
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.me/MOldenburg
Mein GitHub: https://github.com/LeonGaultier

Online CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 13150
Antw:FHEM Log Cannot fork: Cannot allocate memory
« Antwort #73 am: 06 Dezember 2017, 14:32:52 »
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.me/MOldenburg
Mein GitHub: https://github.com/LeonGaultier
Gefällt mir Gefällt mir x 1 Zustimmung Zustimmung x 1 Liste anzeigen

Online CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 13150
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.me/MOldenburg
Mein GitHub: https://github.com/LeonGaultier