Cannot fork: Cannot allocate memory | BlockingInformParent

Begonnen von Burny4600, 14 Februar 2018, 10:33:06

Vorheriges Thema - Nächstes Thema

mumpitzstuff

Zitat von: herrmannj am 25 Oktober 2019, 12:21:57
5.24 ist scheinbar auch betroffen, siehe https://stackoverflow.com/questions/43288921/perl-program-leaking-memory-when-compiling-regex

Eventuell distribution/Patchlevel abhängig. Ich meine mich zu erinnern das ich das unter 5.24 auch das erste mal gesehen habe

Unter Perl 5.28 passiert bei diesem Beispiel gar nix bei mir.

Hardlife

Zitat von: mumpitzstuff am 24 Oktober 2019, 01:35:48
Im Anhang befindet sich die von mir veränderte HTTPMOD Version (entspricht ansonsten der aktuellsten Version). Bei mir ist damit der steigende Speicherverbrauch komplett weg, wie man auf dem anderen Bild sehen kann.

Getestet mit dem von Hardlife hier geposteten TV_Programme Device:
https://forum.fhem.de/index.php/topic,84372.msg981483.html#msg981483

Ich würde mich freuen, wenn Hardlife und parabacus das mal testen könnten.

Hi Com,

nach etwas Stress im Reallife  ::) bin ich nun wieder an der Sache dran.

Ich habe das modifizierte Modul von "mumpitzstuff" getestet und kann bestätigen, daß sich damit alle Probleme in Luft aufgelöst haben.
FHEM läuft performat und der exorbitante MEM-Zuwachs ist Geschichte.

Switche ich zurück zum originalen FHEM-Modul, klettert der RAM-Verbrauch wieder flugs in ungeahnte Höhen...  :)


Liebe Grüße,
Hardlife
Raspi 4B
nanoCUL-868 & 433,JeeLink,milight,Signalduino,GPIO-433er-Sender/Empfänger, GPIO-Infrarot,GSM-Stick für SMS
MAX!-Heizungssteuerung,Intertechno-V1-Steckdosen + V3-Dimmer,"Flamingo FA21RF"-Funk-Rauchmelder
433er-China-Bewegungsmelder,"Voltcraft CO20"-Stick,LaCrosse-Temperatur,Revolt-NC5462

StefanStrobel

Eine neue Version von HTTPMOD ist auf dem Weg.
Ich teste gerade selbst noch ein paar Optionen.
Prinzipiell möchte ich aber den Weg zur Umgehung des Perl-Bugs (und eventuelle Seiteneffekte) nicht im Modul fest vorgeben, sondern dem Anwender die Wahl lassen.
Entweder die Option a für Regexes (per Attribut readingRegOpt für alle Regexes), Decode der Regexes mit einem zu definierenden Encoding oder Vorcompilieren der Regexes bei der ersten Verarbeitung der Attribute.

Gruss
    Stefan

herrmannj

Ich würde mir wünschen dass dir Bug automatisch kompensiert wird. Vielleicht gekoppelt an die Perl Version. Der Anwender könnte das doch bei Seiteneffekten per Attribut deaktivieren. Viele Anwender werden sich erst damit beschäftigen wenn sie betroffen sind und nachdem sie den Zusammenhang erkennen und verstehen

StefanStrobel

Hallo,

Da ist die Frage, was am wenigsten Seiteneffekte verursacht.
Vermutlich wenn man die Regexes vorab compiliert. Optimistisch betrachtet würde das sogar die Performance verbessern.
Beim Decode kommt es vermutlich darauf an wie kreativ die Anwender ihre Regexes formuliert haben.
Ich würde ungern einen Perl-Bug umschiffen und dabei noch mehr Leute verärgern, deren Konfiguration seither gut funktioniert hat. Anderseits würde Deine Idee, das von der Perl-Version abhängig zu machen den Kreis der potentiell betroffenen weiter eingrenzen.
Ich tendiere bisher zu qr//, allerdings ist das der vergleichsweise größte Eingriff ins Modul.

Gruss
    Stefan

parabacus

Zitat von: mumpitzstuff am 24 Oktober 2019, 01:35:48
Im Anhang befindet sich die von mir veränderte HTTPMOD Version (entspricht ansonsten der aktuellsten Version). Bei mir ist damit der steigende Speicherverbrauch komplett weg, wie man auf dem anderen Bild sehen kann.

Getestet mit dem von Hardlife hier geposteten TV_Programme Device:
https://forum.fhem.de/index.php/topic,84372.msg981483.html#msg981483

Ich würde mich freuen, wenn Hardlife und parabacus das mal testen könnten.
Sorry - war ein paar Tage unterwegs und offline... - hab's eben eingebaut und lass es laufen. Mal sehen was passiert...
Stiebel Eltron LWZ 504 / FHEM auf Rasperry Pi 3 / THZ / Weather / TABLETUI / SB_SERVER / SB_PLAYER  / OBIS / Verkehrsinfo / speedtest / Presence / FRITZ / ZWDongle / ZWAVE / Calendar / CALVIEW/ IPCAM/ ABFALL / ESPEasy

parabacus

Wie es scheint, lässt sich das Speicherloch bei mir mit modifiziertem HTTPMOD-Modul nicht beheben. Ich stelle seit gestern einen leichten Anstieg fest.
Ich lass es mal noch ein paar Tage laufen. Bisher hat's so nach 4..5 Tagen zugeschlagen.
Stiebel Eltron LWZ 504 / FHEM auf Rasperry Pi 3 / THZ / Weather / TABLETUI / SB_SERVER / SB_PLAYER  / OBIS / Verkehrsinfo / speedtest / Presence / FRITZ / ZWDongle / ZWAVE / Calendar / CALVIEW/ IPCAM/ ABFALL / ESPEasy

mumpitzstuff

Welche Perl Version hast du?

PS: Ich habe mal deine regular Expressions ins leak Script kopiert und konnte dabei keinen Speicheranstieg feststellen mit Perl 5.28. Somit ist es bei dir irgend etwas anderes oder tritt nur mit deiner Perl Version auf.

parabacus

Bei läuft das auf einem RasPi 3 mit Stretch und Perl 5.24.1.

Gefühlt war der Anstieg aber geringer, wobei ich das erst mal ein paar Tage unverändert laufen lassen müsste.
Derzeit baue ich aber bisschen was um und starte daher mehrfach.
Trotzdem danke für deine Bemühungen.
Stiebel Eltron LWZ 504 / FHEM auf Rasperry Pi 3 / THZ / Weather / TABLETUI / SB_SERVER / SB_PLAYER  / OBIS / Verkehrsinfo / speedtest / Presence / FRITZ / ZWDongle / ZWAVE / Calendar / CALVIEW/ IPCAM/ ABFALL / ESPEasy

jailbreaker07

Guten Morgen,

Woran kann das den liegen das bei jeden Fhem Backup ca 300mb Speicher verloren gehen?

Gruß

Thorsten

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

jailbreaker07

Hey, ansonsten so 200 Mb pro Tag. Habe auch das geänderte httpmod Modul im Einsatz.


StefanStrobel

Hallo,

ich habe auch auf meinem Raspi mit Stretch, Perl 5.24.1 und dem TV-Programme-Beispiel in den letzten 6 Tagen noch einen Anstieg von ca. 1MB je Tag.
Jetzt teste ich ob das mit vorcompilierten Regexes besser wird oder ob die Ursache noch an anderer Stelle ist.

Gruss
    Stefan

mumpitzstuff

Es gab ein Bespiel bei dem in den Rexexp </a> drin stand. Das führt zumindest zu Warnings, die ebenfalls zu Speicher Leaks führen können. Schau mal nach und ersetze gegebenenfalls </a> durch <\/a>. 

Burny4600

Was hat sich zwischen dem 20. und 23. November geändert, dass der Speicheranstieg plötzlich nicht mehr erkennbar ist?
Ich kann jetzt den täglichen Neustart entfernen und wäre noch einige Tage das System beobachten.
Mfg Chris

Raspberry Pi 2/2+/3/3+/4 / Betriebssystem: Bullseye Lite
Schnittstellen: RFXtrx433E, SIGNALduino, MQTT, nanoCUL, HM-MOD-UART, 1-Wire, LAN, ser2net, FHEM2FEHEM
Devices: S.USV, APC-USV, Fronius Datalogger Web 2, FS20, IT, Resol VBUS & DL2, TEK603, WMR200, YouLess, Homematic, MQTT