Cannot fork: Cannot allocate memory

Begonnen von Freibeuter, 30 März 2015, 16:04:43

Vorheriges Thema - Nächstes Thema

Freibeuter

Hall zusammen,
ich bin noch immer auf der Suche nach dem Auslöser von :
"Cannot fork: Cannot allocate memory"

Laut free hat meine Installation auf einer AVM 7490 genug Speicher:
             total         used         free       shared      buffers
Mem:        246252       167040        79212            0        14932
-/+ buffers:             152108        94144
Swap:            0            0            0

diese ca 80 MB bleiben auch über den Tag gleich (Tagesverlauf mit Sysmon / plot überwacht).

Dennoch find eich im Log dann massig "cannot fork".
Hier ein Auszug aus dem Log:
2015.03.30 15:19:53 3: get CHeizung getAll : getAll A420B245C390D275E260F265G230H240I154J181K0L0M0N0O0P0Q
2015.03.30 15:20:54 3: get CHeizung getAll : getAll A420B245C390D275E260F265G230H240I154J185K0L0M0N0O0P0Q
2015.03.30 15:21:53 3: get CHeizung getAll : getAll A420B245C390D275E260F265G230H240I154J187K0L0M0N0O0P0Q
2015.03.30 15:22:53 3: get CHeizung getAll : getAll A420B245C390D275E260F265G230H240I154J188K0L0M0N0O0P0Q
2015.03.30 15:23:53 3: get CHeizung getAll : getAll A420B245C390D275E260F265G230H240I154J188K0L0M0N0O0P0Q
2015.03.30 15:24:52 3: get CHeizung getAll : getAll A420B250C390D275E260F265G230H240I154J189K0L0M0N0O0P0Q
2015.03.30 15:26:00 1: Cannot fork: Cannot allocate memory
2015.03.30 15:26:00 1: Cannot fork: Cannot allocate memory
2015.03.30 15:26:02 3: get CHeizung getAll : getAll A420B250C390D275E260F260G230H240I154J188K0L0M0N0O0P0Q
2015.03.30 15:26:03 1: PERL WARNING: Use of uninitialized value $i in hash element at fhem.pl line 2566.
2015.03.30 15:26:03 1: PERL WARNING: Use of uninitialized value $i in hash element at fhem.pl line 2567.
2015.03.30 15:26:03 1: PERL WARNING: Use of uninitialized value $i in delete at fhem.pl line 2569.
2015.03.30 15:26:04 1: Cannot fork: Cannot allocate memory
2015.03.30 15:26:04 1: Cannot fork: Cannot allocate memory
2015.03.30 15:26:07 1: Cannot fork: Cannot allocate memory
2015.03.30 15:26:07 1: Cannot fork: Cannot allocate memory
2015.03.30 15:26:08 1: Cannot fork: Cannot allocate memory
2015.03.30 15:26:08 1: Cannot fork: Cannot allocate memory
2015.03.30 15:26:12 1: Cannot fork: Cannot allocate memory
2015.03.30 15:26:12 1: Cannot fork: Cannot allocate memory
2015.03.30 15:26:16 1: Cannot fork: Cannot allocate memory
2015.03.30 15:26:16 1: Cannot fork: Cannot allocate memory
2015.03.30 15:26:18 1: Cannot fork: Cannot allocate memory
2015.03.30 15:26:18 1: Cannot fork: Cannot allocate memory
2015.03.30 15:26:34 1: Cannot fork: Cannot allocate memory
2015.03.30 15:26:34 1: Cannot fork: Cannot allocate memory
2015.03.30 15:26:44 1: Cannot fork: Cannot allocate memory
2015.03.30 15:26:44 1: Cannot fork: Cannot allocate memory
2015.03.30 15:26:49 1: Cannot fork: Cannot allocate memory
2015.03.30 15:26:49 1: Cannot fork: Cannot allocate memory
2015.03.30 15:26:53 3: get CHeizung getAll : getAll A420B245C390D275E260F260G230H240I154J189K0L0M0N0O0P0Q
2015.03.30 15:26:57 1: Cannot fork: Cannot allocate memory
2015.03.30 15:26:57 1: Cannot fork: Cannot allocate memory
2015.03.30 15:27:00 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/42_SYSMON.pm line 813.
2015.03.30 15:27:00 1: Cannot fork: Cannot allocate memory
2015.03.30 15:27:00 1: Cannot fork: Cannot allocate memory
2015.03.30 15:27:54 3: get CHeizung getAll : getAll A420B245C390D275E260F260G230H240I153J189K0L0M0N0O0P0Q
2015.03.30 15:28:00 1: Cannot fork: Cannot allocate memory
2015.03.30 15:28:00 1: Cannot fork: Cannot allocate memory
2015.03.30 15:28:52 3: get CHeizung getAll : getAll A420B245C390D275E260F260G230H240I153J189K0L0M0N0O0P0Q
2015.03.30 15:29:00 1: Cannot fork: Cannot allocate memory
2015.03.30 15:29:00 1: Cannot fork: Cannot allocate memory
2015.03.30 15:30:06 3: get CHeizung getAll : getAll A415B245C390D275E260F260G230H240I153J189K0L0M0N0O0P0Q


Durch PS ist mir aufgefallen, das fhem beim Starten mehrere Prozesse hat,diese aber nach wenigen Minuten sich auf einen reduzieren.
2594 root     68760 R    perl fhem.pl fhem.cfg
2595 root     68760 S    perl fhem.pl fhem.cfg
2597 root     68760 S    perl fhem.pl fhem.cfg
2599 root     70132 R    perl fhem.pl fhem.cfg
2600 root     68760 S    perl fhem.pl fhem.cfg
2601 root     68760 S    perl fhem.pl fhem.cfg
2602 root     68760 S    perl fhem.pl fhem.cfg
2603 root     68760 S    perl fhem.pl fhem.cfg
2766 root     68760 R    perl fhem.pl fhem.cfg
2775 root      1232 R    ps

3 Min später:
2584 root      4636 S    perl watchdog.pl

Ca. 10 Stunden nach Start tritt der Fehler auf.
Ich meine das er schneller kommt, wenn ich viel im Menü navigiere.

Update force heute um 12:00 gemacht.

Wie könnte ich dem Problem auf die Spur kommen ?
Gruß Peter F.


rudolfkoenig

70 MB fuer fhem ist schon ordentlich, ich mit "meinem" Modulen kam nach dem Startup auf weniger als 20MB mit ca 150 Definitionen. Kannst du eine Liste der Verwendeten Module zeigen (version)? Wieviele FHEM-Geraete sind definiert? Ist plotfork aktiv? Auf dem 7490 bringt plotfork kaum was, kann aber die Probleme verursachen..

Freibeuter

#2
Folgende Module sind geladen (version):
# $Id: fhem.pl 8265 2015-03-22 13:58:15Z rudolfkoenig $
# $Id: 10_CUL_HM.pm 8258 2015-03-21 19:02:33Z martinp876 $
# $Id: 57_Calendar.pm 7701 2015-01-24 20:16:37Z borisneubert $
# $Id: 66_ECMD.pm 7510 2015-01-10 20:20:34Z borisneubert $
# $Id: 67_ECMDDevice.pm 7698 2015-01-24 19:02:54Z borisneubert $
# $Id: 01_FHEMWEB.pm 8288 2015-03-26 13:53:13Z rudolfkoenig $
# $Id: 92_FileLog.pm 8264 2015-03-22 13:56:50Z rudolfkoenig $
# $Id: 98_GEOFANCY.pm 8173 2015-03-08 11:52:08Z loredo $
# $Id: 20_GUEST.pm 8300 2015-03-27 14:39:38Z loredo $
# $Id: 00_HMLAN.pm 7822 2015-02-01 16:28:10Z martinp876 $
# $Id: 98_HMinfo.pm 8258 2015-03-21 19:02:33Z martinp876 $
# $Id: 98_HourCounter.pm 7336 2014-12-27 20:00:00Z john $
# $Id: 23_KOSTALPIKO.pm 7726 2015-01-25 18:00:00Z john $
# $Id: 73_PRESENCE.pm 8191 2015-03-10 22:34:23Z markusbloch $
# $Id: 59_PROPLANTA.pm 8147 2015-03-03 19:29:40Z tpoitzsch $
# $Id: 10_RESIDENTS.pm 8300 2015-03-27 14:39:38Z loredo $
# $Id: 20_ROOMMATE.pm 8300 2015-03-27 14:39:38Z loredo $
# $Id: 99_SUNRISE_EL.pm 6765 2014-10-14 18:24:29Z rudolfkoenig $
# $Id: 98_SVG.pm 8292 2015-03-26 16:15:51Z rudolfkoenig $
# $Id: 42_SYSMON.pm 8269 2015-03-22 20:31:25Z hexenmeister $
# $Id: 59_Twilight.pm 8305 2015-03-27 19:40:25Z dietmar63 $
# $Id: 99_Utils.pm 7914 2015-02-08 11:14:10Z rudolfkoenig $
# $Id: 99_UtilsHourCounter.pm 2014-02-01 20:15:33 john $
# $Id: 59_Weather.pm 6705 2014-10-07 17:41:42Z borisneubert $
# $Id: 98_WeekdayTimer.pm 8305 2015-03-27 19:40:25Z dietmar63 $
# $Id: 90_at.pm 8192 2015-03-11 06:29:43Z rudolfkoenig $
# $Id: 98_autocreate.pm 8138 2015-03-02 19:26:54Z rudolfkoenig $
# $Id: 98_dummy.pm 4934 2014-02-15 08:23:12Z rudolfkoenig $
# $Id: 91_eventTypes.pm 8136 2015-03-02 19:09:18Z rudolfkoenig $
# $Id: 91_notify.pm 8165 2015-03-07 14:35:16Z rudolfkoenig $
# $Id: 33_readingsGroup.pm 8227 2015-03-16 20:08:03Z justme1968 $
# $Id: 98_structure.pm 7854 2015-02-03 19:23:22Z rudolfkoenig $
# $Id: 98_telnet.pm 8229 2015-03-17 09:00:27Z rudolfkoenig $
# $Id: 91_watchdog.pm 7108 2014-12-01 08:11:34Z rudolfkoenig $
# $Id: 98_weblink.pm 5608 2014-04-23 10:57:16Z rudolfkoenig $

Ich verwende nur Homematic Komponenten (1x HMLAN) und eine USB RS323 Schnittstelle.

Fhem info:
  Release  : 5.6
  OS       : linux
  Arch     : mips-linux
  Perl     : v5.12.2
  uniqueID : 708ff5a5392cae654c8db5e83bd5fd02
  upTime   : 05:05:23

Defined modules:
  CUL_HM        : 106
  Calendar      : 1
  ECMD          : 1
  ECMDDevice    : 1
  FHEMWEB       : 5
  FileLog       : 52
  GEOFANCY      : 1
  GUEST         : 2
  HMLAN         : 1
  HMinfo        : 1
  HourCounter   : 2
  KOSTALPIKO    : 1
  PRESENCE      : 8
  PROPLANTA     : 1
  RESIDENTS     : 1
  ROOMMATE      : 5
  SVG           : 30
  SYSMON        : 1
  Twilight      : 1
  Weather       : 1
  WeekdayTimer  : 4
  at            : 11
  autocreate    : 1
  dummy         : 48
  eventTypes    : 1
  notify        : 78
  readingsGroup : 7
  structure     : 2
  telnet        : 1
  watchdog      : 5
  weblink       : 1

Defined models per module:
  CUL_HM        : ActionDetector,CCU-FHEM,HM-CC-RT-DN,HM-CC-TC,HM-CC-VD,HM-ES-PMSw1-Pl,HM-LC-Dim1L-Pl-2,HM-LC-Dim1T-Pl-2,HM-LC-SW2-FM,HM-LC-Sw1PBU-FM,HM-PB-6-WM55,HM-SEC-MDIR,HM-SEC-SC,HM-SEC-SD,HM-SEC-WDS,HM-SEN-EP,HM-SEN-MDIR-SM,HM-Sys-sRP-Pl,virtual_1,virtual_20,virtual_3,virtual_4,virtual_5


Plotfork hatte ich mal für einige Tage bei den 3 FHEMWEB abgeschaltet,  konnte aber keine Verbesserung feststellen, werde es aber direkt wieder auf 0 setzen.

Vielen Dank für die Unterstützung!
Peter F.

PS: Ich habe auch das Problem, dass shutdown reboot nicht funktioniert, ich muss danach immer von Hand wieder starten, ist nicht weiter wild aber könnte ja bei der Problemlösung helfen.


Freibeuter

Hallo,
ich kann das Problem weiter  eingrenzen, bei "shutdown restart" tritt das Problem sofort auf.
Innerhalb von 10 Sek steigt der Speicherbedarf von fhem auf über 140 mb, bis er abstürzt und von PS nicht mehr angezeigt wird.
Gruß
Peter F.



rudolfkoenig

Waere interessant zu wissen, welcher der Module das verursacht.
Wird einer der weniger ueblichen sein, sonst gaebs hier mehr "Bei mir auch" Meldungen.

Freibeuter

#5
Ich glaub es liegt an eventTypes, die Datei ist bei mir 15 MB groß, das wohl ungesund oder ?

Den Löwenteil macht
1 CHeizung state: getAll A740B410C350D245E250F320G435H245I206J168K0L0M0N0O0P0Q
Die sind von ECMDDevice, der String der per RS232 empfangen wird.
(Heizungssteuerung, Temperaturen)

Kann ich die bei eventTypes ausblenden bzw. benötigt FHEM eventTypes ??

Gruß
Peter F.

PS: Nach dem Löschen der eventTypes.txt braucht FHEM statt 90 nur noch 30 MB.



define RS232 ECMD serial /dev/ttyUSB0@9600
attr RS232 classdefs CControl= ./FHEM/ccontroln.classdef
attr RS232 group 5_Heizungsraum_CControl
attr RS232 logTraffic 5
attr RS232 partial 2
attr RS232 room 9_System
attr RS232 timeout 5
attr RS232 verbose 1

define CHeizung ECMDDevice CControl
attr CHeizung IODev RS232
attr CHeizung event-on-change-reading .*
attr CHeizung group 5_Heizungsraum_CControl
attr CHeizung room 5_Heizungsraum,9_System
attr CHeizung verbose 1



rudolfkoenig

Ja, 15MB ist ungesund, bei mir sind es 35k.
Falls das mit dem aktuellen Version von eventType passiert, dann bitte die Datei hier komprimiert anhaengen (oder per email mir schicken, falls es Geheimnisse enthaelt).

Freibeuter

Hallo,
hier der Link zur Datei:
https://www.dropbox.com/s/k6ey93rx190mf6p/xxeventTypes.txt.zip?dl=0

Der String, der von der RS232 gelesen wird, ist ja immer unterschiedlich, daher die vielen Einträge.

Könnte ich eventTypes nur für dieses Device abstellen ?

An dieser Stelle einmal vielen herzlichen Dank für das super System fhem !!!

Wünsche frohe Ostern.
Peter F.

rudolfkoenig

Habe eine neue Version von eventTypes eingecheckt:
- es erlaubt nur max. 200 Event-Sorten pro Geraet
- es fuehrt ein paar weitere Optimierungen insb. fuer HM- und Calender-Events ein
- es gibt jetzt ein ignoreList Attribut.

Selbst ohne dieses Attribut liest das Modul aus den 16MB nur noch 110kb ein, d.h. du koenntest nach einem update (morgen) die alte Datei wiederverwenden.

Es ist erstaunlich, was alles als Event gepostet wird, mAn koennte das in 90% der Faelle ein Reading ohne Event sein, wuerde FHEM auch sonst entlasten.

Freibeuter

Hallo,
habe die Kennwörter vor dem Upload geändert, konnte Ihre Emailadrese nicht finden.
Vielen Dank für die präventive Sperrung.
Gruß
Peter F.