Neue Version von HTTPMOD mit neuen Features zum Testen

Begonnen von StefanStrobel, 05 Dezember 2015, 08:31:32

Vorheriges Thema - Nächstes Thema

OppiM

Hi,

ich hab jetzt mal versucht, den Verursacher für mein Speicherproblem zu identifizieren und es deutet alles auf HTTPMOD hin.

Zum Test haben ich über ein Custom Reading den Speicherbedarf von FHEM aus ps ausgelesen und grafisch dargestellt. Dann die letzte Version von HTTPMOD aus dem Thread installiert und FHEM neu gestartet. Wie man im Anhang sieht steigt der Speicherbedarf kontinuierlich an (zwischen 10:10 und 10:40).

Dann haben ich mein HTTPMOD-Device disabled und FHEM neu gestartet. Wie man sieht bleibt der Speicherverbrauch von FHEM dann recht konstant auf einem Level.

Also verbraucht HTTPMOD scheinbar kontinuierlich Speicher und gibt ihn nicht wieder frei...

Gruß,
Michael

Cruiser79

Zitat von: OppiM am 19 Februar 2016, 11:04:31
Hi,

ich hab jetzt mal versucht, den Verursacher für mein Speicherproblem zu identifizieren und es deutet alles auf HTTPMOD hin.

Zum Test haben ich über ein Custom Reading den Speicherbedarf von FHEM aus ps ausgelesen und grafisch dargestellt. Dann die letzte Version von HTTPMOD aus dem Thread installiert und FHEM neu gestartet. Wie man im Anhang sieht steigt der Speicherbedarf kontinuierlich an (zwischen 10:10 und 10:40).

Dann haben ich mein HTTPMOD-Device disabled und FHEM neu gestartet. Wie man sieht bleibt der Speicherverbrauch von FHEM dann recht konstant auf einem Level.

Also verbraucht HTTPMOD scheinbar kontinuierlich Speicher und gibt ihn nicht wieder frei...

Gruß,
Michael

Kannst du dein Custom reading hier mal posten?

Könnte vielleicht XML in HTTPMOD das Problem sein?

@schka17:
Ein Speicherloch habe ich in Perl bisher nur bei XML Dokumenten gesehen: da man normalerweise in Perl der Entwickler Speicher nicht explizit freigeben muss, vergisst man gerne, dass das beim XML wegen zirkulaeren Referenzen doch notwendig ist. Kannst Du pruefen, ob einer deiner verwendeten Module XML benoetigt, und evtl. das Modul fuer ein Tag lang deaktivieren?

http://forum.fhem.de/index.php/topic,27223.msg201436.html#msg201436

Gruß,
Tim
FHEM auf Raspberry Pi
HM-CFG-LAN mit HM-TC-IT-WM-W-EU, HM-CC-RT-DN, HM-WDS10-TH-O, HM-LC-SW1-FM, HM-LC-Bl1-FM
Signalduino mit Elro AB440, LOGILINK WS0002, IT CMR-1000

OppiM

#122
Hi,

ZitatKannst du dein Custom reading hier mal posten?

klar, kein Problem:

Internals:
   CHANGED
   NAME       FHEMMemoryUsage
   NR         176
   STATE      240180
   TYPE       CustomReadings
   Readings:
     2016-02-19 13:49:59   memory          240180
     2016-02-19 13:49:59   state           OK
Attributes:
   event-min-interval 900
   event-on-change-reading memory
   interval   30
   readingDefinitions memory:qx(FHEMMemoryUsage.sh)
   room       FHEM Server
   stateFormat memory


Und das ist das dazugehörigr Script (FHEMMemoryUsage.sh):
#!/bin/sh
PATH=/bin:/usr/bin:/usr/local/bin/:/usr/sbin:/usr/local/sbin/:/opt/sbin/

ps aux | grep fhem.pl -m 1 | awk '{ print $5 }'


ZitatKönnte vielleicht XML in HTTPMOD das Problem sein?

Das ich HTTPMOD nur für XML benutze, dürfte da das Problem liegen. Derzeit denke ich, ich werde statt HTTPMOD ein Script nehemn und es in ein Custom Reading schreiben, allerdings wollte ich eigenlich so wenig wie möglich extern auslagern...

Gruß,
Michael

StefanStrobel

Hallo,

das Problem hatten wir hier schon mal.
http://forum.fhem.de/index.php/topic,36837.15.html
damals hab ich die Konfiguration und die XML-Daten bei mir auf Raspian übernommen und der Speicher bleib konstant.
Deshalb fällt es mir schwer was dagegen zu tun (habe keinen Cubietruck).
Es muss wohl ein plattformabhängiges Problem in der XML Bibliothek liegen.

Nutzt sonst noch jemand die XPath Erweiterung auf anderen Plattformen?
Es wäre schön wenn wir das Problem eingrenzen und beheben könnten. Vielleicht gibt es ja einen Workaround im Perl-Code (an der Bibliothek kann ich nichts ändern).

@Michael: kannst Du mal Deine Konfiguration und Beispieldaten und als Datei posten, dann könnte ich die bei mir als file: URL einbinden und versuchen das Problem nachzustellen.
Zudem bräuchte ich noch ein paar Informationen über Deine Plattform (genaue Version etc.) dann bau ich eine ähnliche VM zum Nachstellen ...

Gruss
    Stefan

StefanStrobel

Hallo,

Bitte probiert mal die neue Version aus. Das Memory-Leak Problem mit dem XML-Parser könnte jetzt gelöst sein.

Gruss
    Stefan

no_Legend

Guten Morgen,

ich habe gestern mal wieder probiert den SpritPreis Monitor einzubinden.
Leider startet FHEM sobald das define abgesetzt wurde, immer wieder neu.

Die Einbindung habe ich wie folgt probiert:

define SpritMon.Hedd.Shell HTTPMOD http://www.clever-tanken.de/tankstelle_details/1221 600

Im Log kann ich nur folgendes finden:
Can't use an undefined value as an ARRAY reference at ./FHEM/98_HTTPMOD.pm line 1840.

Genau erklären kann ich es mir nicht.

Gruß Robert
IntelNUC mit Ubuntu mit FHEM immer aktuell,2x HMLAN, CUL443, CUL868 -homekit/siri -tablet ui -homebridge
Device, diverse:
HM-SEC-KEY,HM-LC-BL1-FM,HM-SEC-SD,HM-Sen-DB-PCB,HM-Sec-RHS,HM-Sec-SC-2,HM-WDS10-TH-O,Harmony,Netamo, 433MHz Steckdosen uvm.

Noman

Hi,

ist es möglich mittels HTTPMOD nicht (wohlgeformte) HTML Dateien mittels XPath auszulesen?

Gruss Norman

StefanStrobel

Hallo,

Für HTML kann man die Attribute reading01XPath etc. verwenden. Nur reading01XPath-Strict ist für echtes XML.

Gruss
    Stefan

StefanStrobel

Hallo Robert,

das klingt nach Bug. Allerdings scheinst Du eine ältere Version zu verwenden. Daher stimmt die Zeilennumer mit meiner Version nicht überein. Kannst das bitte nochmal mit der aktuellen Version testen? Dann hilft mir die Fehlermeldung deutlich weiter ;-)

Gruss / danke für's Testen
   Stefan

no_Legend

Hab die Neuste version eingebunden und neu gestartet. Nun scheint es zu gehen.

Danke für die Hilfe und das super Modul.

Gruß Robert
IntelNUC mit Ubuntu mit FHEM immer aktuell,2x HMLAN, CUL443, CUL868 -homekit/siri -tablet ui -homebridge
Device, diverse:
HM-SEC-KEY,HM-LC-BL1-FM,HM-SEC-SD,HM-Sen-DB-PCB,HM-Sec-RHS,HM-Sec-SC-2,HM-WDS10-TH-O,Harmony,Netamo, 433MHz Steckdosen uvm.

StefanStrobel

Hallo,

ich würde die neue Version gerne demnächst einchecken.
Um damit aber keinen Stress zu provozieren, möchte ich Probleme / neue Fehler so weit wie möglich vermeiden.
Es wäre daher toll wenn noch ein paar Leute die letzte Version durchtesten könnten und mir Feedback geben, ob alles funktioniert. Insbesondere zum Cookie-Handling, der Integration von getKeyValue und dem set upgradeAttributes habe ich noch keine Rückmeldung ob es auch bei Euch funktioniert.

Gruss / vielen Dank
     Stefan

frank

hallo stefan,

ich habe mich mal getraut und mit der neuesten version bei 3 httpmod devices "set upgradeAttributes" durchgeführt. scheinbar völlig problemlos.

1. uralt definition mit 39 x readingsName und readingsRegex (funktionierte wohl auch noch vor dem set upgradeAttributes)
2. eine neuere definition mit readingXXExpr (funktionierte nicht mehr vor dem set upgradeAttributes)
3. eine neuere definition ohne zu ändernde attribute.

die anderen dinge nutze ich nicht.
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
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
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

HotteFred

Hallo Stefan,

kann ich mehrere URLs hinterlegen? Also getURL1, getURL2?

Danke für die gute Arbeit.
Grüße
BananaPi mit FHEM, KM50, Velux Raumluftsensor, jede Menge HM-CC-RT-DN, jede Menge 1Wire Zeugs

StefanStrobel

Hallo Fred,

Du kannst mehrere gets definieren und jedes get kann seine eigene URL haben, z.B. get01URL, get02URL etc.
Oder möchtest Du tatsächlich dass bei einem Get mehrere Requests nacheinander vesrschickt werden?

Gruß
    Stefan

andyclimb

Just getting used to using this module.  Looks very powerful.. 
Trying to parse this json string

{"settings":{"currentpreset":255,"effect":"Off"},"device":"tvlights","heap":20864,"power":"0","modes":["Off","SimpleColor","RainbowChase","BobblySquares","Blobs","CuriousCat","Adalight","UDP","DMX"],"currentpresets":[],"code":0,"pixels":118,"MQTT":{"enable":true,"ip":[192,168,1,24],"port":1883},"timer":{"running":false}}


which has the key "modes" which leads to a comma separated list of strings.
I would like these to appear in one reading in the following format:

Zitat
Off,SimpleColor,RainbowChase,BobblySquares,Blobs,CuriousCat,Adalight,UDP,DMX

anybody able to help...
AM