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

Offline michael.winkler

  • Developer
  • Full Member
  • ****
  • Beiträge: 495
FHEM Log Cannot fork: Cannot allocate memory
« am: 23 Juni 2017, 07:43:04 »
Hallo,

leider habe ich über die Suchfunktion zu meinem Problem nichts gefunden.

Mein FHEM Log füllt sich nach eine Laufzeit von ca. 3-4 Tagen immer wieder mit folgenden Meldungen:

2017.06.23 07:36:19 1: Cannot fork: Cannot allocate memory
2017.06.23 07:36:19 1: Cannot fork: Cannot allocate memory
2017.06.23 07:36:21 1: Cannot fork: Cannot allocate memory
2017.06.23 07:36:21 1: Cannot fork: Cannot allocate memory

Nur ein Reboot des Linux Systemes schaft hier Abhilfe. Den einzigen Hinweis den ich gefunden habe, ist dass man bei dieser Meldung im Device "global" das Attribut updateInBackground auf 0 stellen soll. Leider hat das bei mir nicht geholfen, die Meldung erscheinen trotzdem wieder.

Sobald diese Meldung im Log erscheinen ist ein Update oder shutdown aus FHEM heraus nicht mehr möglich.

Kann mir hier jemand weiterhelfen?

Gruß
Michael



Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 17266
Antw:FHEM Log Cannot fork: Cannot allocate memory
« Antwort #1 am: 23 Juni 2017, 08:56:35 »
Dass update nicht moeglich is, ist verstaendlich, da es per Voreinstellung forkt (attr global updateInBackground). shutdown restart macht das auch, warum shutdown (ohne restart) nicht funktioniert, kann ich nicht erklaeren.

Das Problem genau zu lokalisieren ist nicht einfach. Man muesste zunaechst feststellen, welcher der Prozesse den meisten Speicher verbraucht (z.Bsp. mit ps -elf | sort -rnk 10 | head). Falls FHEM ungewoehnlich gross ist/waechst, dann muss man die Module finden, die dafuer verantwortlich sind, z.Bsp. indem man sie einzeln deaktiviert.

Offline michael.winkler

  • Developer
  • Full Member
  • ****
  • Beiträge: 495
Antw:FHEM Log Cannot fork: Cannot allocate memory
« Antwort #2 am: 23 Juni 2017, 09:05:33 »
Hallo

Befehl hab ich mal ausgeführt. Anbei das Ergebnis:
root@HNMWFHEM01:~# ps -elf | sort -rnk 10 | head
4 S root      2422  2331  0  80   0 - 192259 -     Jun20 ?        00:01:20 homebridge
0 S root      1878     1  0  80   0 - 187335 -     Jun20 ?        00:00:59 alexa
1 S fhem      3639     1  3  80   0 - 173279 -     Jun20 ?        02:23:32 /usr/bin/perl fhem.pl fhem.cfg
4 S mysql     2791  2450  0  80   0 - 91021 -      Jun20 ?        00:01:54 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib/mysql/plugin --user=mysql --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/run/mysqld/mysqld.sock --port=3306
5 S www-data  3871  2149  0  80   0 - 55818 -      Jun20 ?        00:00:00 /usr/sbin/apache2 -k start
5 S www-data  2171  2149  0  80   0 - 55818 -      Jun20 ?        00:00:00 /usr/sbin/apache2 -k start
5 S www-data  2170  2149  0  80   0 - 55818 -      Jun20 ?        00:00:00 /usr/sbin/apache2 -k start
5 S www-data  2165  2149  0  80   0 - 55818 -      Jun20 ?        00:00:00 /usr/sbin/apache2 -k start
5 S www-data  2164  2149  0  80   0 - 55818 -      Jun20 ?        00:00:00 /usr/sbin/apache2 -k start
5 S www-data  2163  2149  0  80   0 - 55818 -      Jun20 ?        00:00:00 /usr/sbin/apache2 -k start

Offline Wernieman

  • Hero Member
  • *****
  • Beiträge: 3351
Antw:FHEM Log Cannot fork: Cannot allocate memory
« Antwort #3 am: 23 Juni 2017, 09:06:42 »
Für die Grundsätzliche Analyse würde ich auch vorschlagen, das mehr Infos über das System bereit gestellt werden.
- was ist es für Hardware (ÜPi/PC/Speicher/Gestplatte etc.)
- was macht der Rechner außer FHEM?
- was für Module werden in FHEM verwendet
- .....
- und natürlich die Info, welche Rudolf schon anfragte

Sorry aber bitte um mehr Input für qualifizierten Output ....

Edit:
Wenn ich die ersten 3 Zeilen Zusammenzähle. komme ich schon auf 552873Byte ...
Zitat
4 S root      2422  2331  0  80   0 - 192259 -     Jun20 ?        00:01:20 homebridge
0 S root      1878     1  0  80   0 - 187335 -     Jun20 ?        00:00:59 alexa
1 S fhem      3639     1  3  80   0 - 173279 -     Jun20 ?        02:23:32 /usr/bin/perl fhem.pl fhem.cfg
Braucht homebridge und alexa wirklich so viel Speicher???
« Letzte Änderung: 23 Juni 2017, 09:11:47 von Wernieman »
- 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: 17266
Antw:FHEM Log Cannot fork: Cannot allocate memory
« Antwort #4 am: 23 Juni 2017, 09:21:58 »
@Werniemann: ich waere vorsichtig beim Addieren, ich gehe davon aus, dass diese Zahlen die dynamisch geladenen Bibliotheken jeweils enthalten. D.h. der Programmcode von libc wird zu jedem Prozess dazugezaehlt, liegt aber nur einmal im Speicher, dh. beim Addieren darf man diesen Teil nur einmal rechnen. Beim apache2 wird der gemeinsame Anteil wesentlich sein.

Trotzdem meine Meinung: der Rechner ist fuer diese Aufgabe (bzw. Kombination aller Aufgaben) unterdimensioniert.

Offline Wernieman

  • Hero Member
  • *****
  • Beiträge: 3351
Antw:FHEM Log Cannot fork: Cannot allocate memory
« Antwort #5 am: 23 Juni 2017, 09:35:13 »
@Rudolf

Du hast prinzipiell recht, war nur eine Überschlagsrechnung. Aber egal wie ... wenn es ein Pi ist, wovon ich momentan ausgehe, ist der Speicher zu klein. Auch wenn diese "Pi mal Daumen Rechnung" nur sehr grob ist ...

Wenn es dagegen ein "Richtiger Rechner" mit mehr Speicher, würde es schon anders aussehen. Deshalb meine Nachfrage nach der Art des Rechners ...
- 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 michael.winkler

  • Developer
  • Full Member
  • ****
  • Beiträge: 495
Antw:FHEM Log Cannot fork: Cannot allocate memory
« Antwort #6 am: 23 Juni 2017, 09:40:06 »
danke schon mal für das Feedback.

Mein FHEM läuft als virtuelle Machine und ist wie folgt Ausgestattet:

512MB RAM
CPU Intel i7 2,67GHz
40GB HDD auf SSD

Der Rechner selber macht nur FHEM, Alexa und Homebridge. Bis vor kurzem wurde noch SmartVISU auf dem Rechner betrieben. Dies ist aber aktuell nicht mehr in Benutzung.

Folgende Module werden eingesetzt:
+ alexa
+ allowed
+ at
+ autocreate
+ BOTVAC
+ Calendar
+ CALVIEW
+ CUL
+ CUL_HM
+ DbLog
+ dewpoint
+ DLNARenderer
+ DOIF
+ DOIRools
+ dummy
+ FB_CALLMONITOR
+ FBAHA
+ FBDECT
+ FHEM2FHEM
+ FHEMWEB
+ FHT
+ FRITZBOX
+ fronthem
+ fronthemDevice
+ FS20
+ harmony
+ HMLAN
+ HMS
+ HTTPMOD
+ IPCAM
+ jawboneUp
+ MPD
+ NEUTRINO
+ notify
+ OPENWEATHER
+ Pushover
+ readingsGroup
+ structure
+ SVG
+ TelegramBot
+ VIERA
+ WINCONNECT
+ XBMC
+ YAMAHA_AVR

Offline Wernieman

  • Hero Member
  • *****
  • Beiträge: 3351
Antw:FHEM Log Cannot fork: Cannot allocate memory
« Antwort #7 am: 23 Juni 2017, 09:41:06 »
Zitat
512MB RAM
Dann gib ihm mal mehr Speicher! Siehe Diskussion mit Rudi und mir (s.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

Offline michael.winkler

  • Developer
  • Full Member
  • ****
  • Beiträge: 495
Antw:FHEM Log Cannot fork: Cannot allocate memory
« Antwort #8 am: 23 Juni 2017, 09:42:20 »
Dann gib ihm mal mehr Speicher! Siehe Diskussion mit Rudi und mir (s.o.)
Ok, das kann ich mal machen.

Gibt es eigentlich eine Grundsätzliche Empfehlung wie viel Hauptspeicher ein Standard FHEM Server haben sollte?

Offline Wernieman

  • Hero Member
  • *****
  • Beiträge: 3351
Antw:FHEM Log Cannot fork: Cannot allocate memory
« Antwort #9 am: 23 Juni 2017, 09:53:52 »
Siehe oben, es liegt nicht an fhem, sondern an den parallel laufenden Programmen.

WENN Du schon mit VM arbeitest, warum lagerst Du eigentlich alexa nicht in eine eigene aus?
Ob man homebringe auslagern könnte, bin ich überfragt.
- 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 michael.winkler

  • Developer
  • Full Member
  • ****
  • Beiträge: 495
Antw:FHEM Log Cannot fork: Cannot allocate memory
« Antwort #10 am: 23 Juni 2017, 10:21:54 »
das es noch von anderen Programmen abhängt habe ich verstanden.

Des Wegen hatte ich ja auch nach einer Empfehlung für FHEM gefragt. Das viel RAM immer gut ist, ist auch klar.

Ich habe jetzt mal 1GB Ram zugeteilt, ich werde es jetzt mal beobachten.

danke für eure Hilfe.

Offline Wernieman

  • Hero Member
  • *****
  • Beiträge: 3351
Antw:FHEM Log Cannot fork: Cannot allocate memory
« Antwort #11 am: 23 Juni 2017, 11:06:30 »
FHEM läuft auch auf einem Pi mit 512. Es gibt keine Empfehlung, da es auch von der Art/Menge der verwendeten Module abhängt.
- 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: 17266
Antw:FHEM Log Cannot fork: Cannot allocate memory
« Antwort #12 am: 23 Juni 2017, 11:07:33 »
Empfehlung ist schwer: es haengt von den eingesetzten Modulen, Anzahl der Geraete, was man damit macht, etc ab. Beispiele:
- manche Module achten auf Speicherverbrauch, andere weniger. Es findet diesbezueglich keine Kontrolle statt, nur wenn jemand sich beschwert, und der Autor Zeit und Musse hat es zu fixen.
- Jahresplots zu berechnen braucht mehr Speicher, als Tagesplots.
- Falls mehrere Plots auf einer Seite zu sehen sind, dann werden mehrere (bis zu 6) parallel berechnet
- die Leute wollen Features, z.Bsp. war CUL_HM mal 50k, inzwischen ist es bei 750k.

512MB fuer FHEM alleine sollte im Normalfall ausreichen.
In deinem Fall hat es ja auch nur fuer ein Drittel der Belegung gesorgt.
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline michael.winkler

  • Developer
  • Full Member
  • ****
  • Beiträge: 495
Antw:FHEM Log Cannot fork: Cannot allocate memory
« Antwort #13 am: 29 Juni 2017, 06:41:35 »
Leider ist das Problem wieder da. Diese mal hat es nur länger gedauert, da wohl mehr Arbeitsspeicher zur Verfügung stand.

Anbei mal das Speicherergebnis
Last login: Fri Jun 23 22:35:55 2017 from hnmwwks01.home.int
root@HNMWFHEM01:~# ps -elf | sort -rnk 10 | head
1 S fhem      1920     1 14  80   0 - 206548 -     Jun23 ?        19:55:57 perl
4 S root      2420  2326  0  80   0 - 192202 -     Jun23 ?        00:01:49 homeb
0 S root      2059     1  0  80   0 - 187813 -     Jun23 ?        00:02:17 alexa
1 S fhem     28592  1920  0  80   0 - 180252 -     Jun28 ?        00:00:04 perl
4 S mysql     2803  2448  0  80   0 - 91021 -      Jun23 ?        00:04:10 /usr/                                                                                                                                                             ysqld/mysqld.sock --port=3306
5 S www-data  5228  2144  0  80   0 - 55815 -      Jun25 ?        00:00:00 /usr/
5 S www-data  3993  2144  0  80   0 - 55815 -      Jun25 ?        00:00:00 /usr/
5 S www-data  3991  2144  0  80   0 - 55815 -      Jun25 ?        00:00:00 /usr/
5 S www-data  3987  2144  0  80   0 - 55815 -      Jun25 ?        00:00:00 /usr/
5 S www-data  3983  2144  0  80   0 - 55815 -      Jun25 ?        00:00:00 /usr/

Gibt es eine Möglichkeit zu schauen welches Modul den meisten Speicher benötigt?

Offline Wernieman

  • Hero Member
  • *****
  • Beiträge: 3351
Antw:FHEM Log Cannot fork: Cannot allocate memory
« Antwort #14 am: 29 Juni 2017, 11:25:29 »
Ich kann Dir nur wieder raten, wenn Du schon mit VM arbeitest, dann richtig, d.h. eine VM = ein Dienst.
4 S root      2420  2326  0  80   0 - 192202 -     Jun23 ?        00:01:49 homeb
0 S root      2059     1  0  80   0 - 187813 -     Jun23 ?        00:02:17 alexa
Pache die einfach mal in eigene VMs ....
- 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

 

decade-submarginal