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

Offline herrmannj

  • Global Moderator
  • Hero Member
  • ****
  • Beiträge: 4392
Antw:FHEM Log Cannot fork: Cannot allocate memory
« Antwort #75 am: 06 Dezember 2017, 14:42:58 »
short: händisch ja, automatisch nein.

long: Jeder Eintrag im heap (+stack ;)) müsste manuell erforscht und einem modul zugeordnet werden. Das dauert "etwas" ;) Im Zweifel ist es besser 2 dumps anzulegen. Einen nach dem Start und einen wenn der Speicher "voll läuft". Dort sucht man nach Auffälligkeiten. Es gibt auch Speicherleichen die aus FHEM (also "von innen") überhaupt nicht mehr finden lassen.

Beispiel:
sub
test {
  my $a;
  my $b;

  $a->{b} = \$b;
  $a->{0} = [1..65535];
  $b->{a} = \$a;
  $b->{0} = [1..65535];
  return;
}
for (1..65535) {
  test();
}
)
for (1..65535) {
  test();
}

Nach dem Verlassen von "test" laufen "a" und "b" aus dem scope, bleiben aber im Speicher. Wenn "test" fertig ist kann man keine der beiden Variablen mehr erreichen (ergo löschen). Sie belegen jedoch weiter Speicher. Im Beipiel 65k x ein dutzend bytes.

Das Beispiel ist übersichtlich. closures, "$parent", rekursive functionen verstecken das oft so "gut" das es schwer zu sehen ist. Weil FHEM jedoch ein long running process ist summiert sich das. Es sind oft nur wenige bytes die "verloren" gehen. IO Operationen (Netzwerk Kommikation) findet aber so oft statt das sich auch kleine leaks (bugs) im Laufe von Tagen / Wochen summieren.

Aus dem verlinkten dokument:
Zitat
As the user guide explains:

    The basic workflow consists of two main stages: first a heap dump file is generated from the perl process being debugged, at or around the time that the problem becomes apparent, and secondly this file is loaded by an analysis tool in order to inspect the contents.

    These two stages are described here separately. It is important to note that they don't have to be done at the same time, on the same perl process, or even on the same sort of machine. It is fully possible to capture the heap from a process on, say, a small server, then copy the file to a development workstation or laptop and analyse it there at a later time.

edit: codebeispiel
« Letzte Änderung: 06 Dezember 2017, 15:02:27 von herrmannj »
smartVisu mit fronthem, einiges an HM, RFXTRX, Oregon, CUL, Homeeasy, ganz viele LED + Diverse

Offline herrmannj

  • Global Moderator
  • Hero Member
  • ****
  • Beiträge: 4392
Antw:FHEM Log Cannot fork: Cannot allocate memory
« Antwort #76 am: 06 Dezember 2017, 14:47:30 »
Bitte schön

https://forum.fhem.de/index.php/topic,73490.msg653927.html#msg653927
yepp. Aber leaks wie aus dem post darüber sieht man damit auch nicht.
smartVisu mit fronthem, einiges an HM, RFXTRX, Oregon, CUL, Homeeasy, ganz viele LED + Diverse

Offline CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 12121
Antw:FHEM Log Cannot fork: Cannot allocate memory
« Antwort #77 am: 06 Dezember 2017, 14:49:04 »
Nun sei mal nicht so Jörg. Bin froh mich mit 40 überhaupt noch an den Thread erinnern zu können  ;D 8)

Ach so.
Jörg hat Recht  :)
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 Wernieman

  • Hero Member
  • *****
  • Beiträge: 3435
Antw:FHEM Log Cannot fork: Cannot allocate memory
« Antwort #78 am: 06 Dezember 2017, 15:17:27 »
@CoolTux:

Was soll ich sagen, ich habe es gelesen, ausprobiert und einen Tag später .... aber 40 ist wirklich nicht mehr viel los mit einem  :o

- 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
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline frank

  • Hero Member
  • *****
  • Beiträge: 5917
Antw:FHEM Log Cannot fork: Cannot allocate memory
« Antwort #79 am: 07 Dezember 2017, 13:15:06 »
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?
notify's können mit attr readLog auch auf fhem.log lauschen.  ;)
FHEM: 5.8(SVN) => Pi3(jessie)
IO: CUL433_V3.3(1.00.01B53)|CUL868_V3.3(1.58)|HMLAN(0.965)|HMUSB2(0.967)|HMUART(1.4.1)
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500

Offline Amenophis86

  • Hero Member
  • *****
  • Beiträge: 1759
  • Anti-Statement befreite Zone ;)
Antw:FHEM Log Cannot fork: Cannot allocate memory
« Antwort #80 am: 07 Dezember 2017, 13:31:08 »
notify's können mit attr readLog auch auf fhem.log lauschen.  ;)

Schau an, gut zu wissen. Werde ich mich die Tage mal dran machen und versuchen. Dank dir.
FHEM auf Raspberry3, Betriebssystem Jessy, HMLan, HM Komponenten, LD382A, H801, Sonoff, Harmony Hub und vieles mehr. Einfach ein tolles universelles System

Offline Wernieman

  • Hero Member
  • *****
  • Beiträge: 3435
Antw:FHEM Log Cannot fork: Cannot allocate memory
« Antwort #81 am: 07 Dezember 2017, 14:45:56 »
Wenn Du etwas gefunden hast, könntest Du deine Lösung posten?
- 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

Offline Amenophis86

  • Hero Member
  • *****
  • Beiträge: 1759
  • Anti-Statement befreite Zone ;)
Antw:FHEM Log Cannot fork: Cannot allocate memory
« Antwort #82 am: 09 Dezember 2017, 12:04:18 »
also das notify war kein Problem. Jetzt wollte ich mit dem debugbefehl: fhemdebug memusage arbeiten, aber dieser lässt mein FHEM direkt ohne Meldung abstürzen. Ich habe Devel::Size sowohl über cpanm Devel::Size als auch mittels apt-get -s install libdevel-size-perl
als auch apt-get install libdevel-size-perl installiert bzw. versucht. Kann ich irgendwie prüfen ob es klappt bzw. warum es nicht klappt?
FHEM auf Raspberry3, Betriebssystem Jessy, HMLan, HM Komponenten, LD382A, H801, Sonoff, Harmony Hub und vieles mehr. Einfach ein tolles universelles System

Offline Wernieman

  • Hero Member
  • *****
  • Beiträge: 3435
Antw:FHEM Log Cannot fork: Cannot allocate memory
« Antwort #83 am: 09 Dezember 2017, 17:55:47 »
d.h. enn Du (auch manuell)? aufrufst:
fhemdebug memusage

Ist fhem sofort weg? Was sagt denn das Log?
- 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

Offline Amenophis86

  • Hero Member
  • *****
  • Beiträge: 1759
  • Anti-Statement befreite Zone ;)
Antw:FHEM Log Cannot fork: Cannot allocate memory
« Antwort #84 am: 09 Dezember 2017, 18:19:09 »
korrekt, auch dann. Mit ohne Meldung meinte ich, dass auch im Log keine Meldung mehr kommt. Ist direkt weg und nix geht mehr. In der Beschreibung von Rudi steht ja, dass es zum Absturz kommen kann, weiß nur nicht, wie ich das verhindern kann.
FHEM auf Raspberry3, Betriebssystem Jessy, HMLan, HM Komponenten, LD382A, H801, Sonoff, Harmony Hub und vieles mehr. Einfach ein tolles universelles System

Offline Wernieman

  • Hero Member
  • *****
  • Beiträge: 3435
Antw:FHEM Log Cannot fork: Cannot allocate memory
« Antwort #85 am: 09 Dezember 2017, 18:34:04 »
Sorry, da kann ich Dir nicht helfen, da müssen wir auf "tiefere" Experten warten
- 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

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 17414
Antw:FHEM Log Cannot fork: Cannot allocate memory
« Antwort #86 am: 09 Dezember 2017, 18:49:14 »
Eigentlich muesste Devel::Size gefixt werden, dazu habe ich aber keine Musse.
Falls das Perl-Modul nicht installiert ist, dann meldet FHEM das direkt.

Ich habe eine neue Version eingecheckt, der bei "attr global verbose 5" das naechste Element ausgibt, was geprueft wird. Nach einem Absturz sollte das als Letztes im fhem-Log stehen.

Offline Amenophis86

  • Hero Member
  • *****
  • Beiträge: 1759
  • Anti-Statement befreite Zone ;)
Antw:FHEM Log Cannot fork: Cannot allocate memory
« Antwort #87 am: 09 Dezember 2017, 22:52:09 »
Werde es die Tage prüfen und mich melden. Danke
FHEM auf Raspberry3, Betriebssystem Jessy, HMLan, HM Komponenten, LD382A, H801, Sonoff, Harmony Hub und vieles mehr. Einfach ein tolles universelles System