homematic-community / hm_pdetect

:iphone: A HomeMatic CCU-Addon to regularly query AVM FRITZ!-devices for registered WiFi/LAN devices and deduce general user presence from this information
GNU Lesser General Public License v3.0
74 stars 6 forks source link

Fritz Repeater läuft "out of memory" #21

Open aski71 opened 8 years ago

aski71 commented 8 years ago

Hallo Jens,

nachdem hm_pdetect eine Weile lief, stellte ich fest, dass wieder die Fehlermeldung kam, der Repeater sei nicht erreichbar. Als ich versuchte, auf den Repeater per Browser zuzugreifen, verabschiedete er sich mit den Worten, er sei out of Memory. Ich rufe hm_pdetect mittels CUxD und Programm zweimal pro Minute auf. Könntest Du bitte prüfen, ob der Memory Leak vielleicht durch die hm_pdetect Aufrufe zustande kommt? Meine Mutmaßung wäre, dass sich hm_pdetect eventuell auf dem Repeater anmeldet, aber nicht mehr abmeldet und dadurch einfach zu viele Sessions offen bleiben, die dann den Speicher zumachen. Wie gesagt, nur ein Schuss ins Blaue.

Viele Grüße Alex

jens-maus commented 8 years ago

Ein "abmelden" in dem Sinne gibt es nicht und ist auch so nicht möglich. hm_pdetect hat aber ein session management implementiert und verbindet sich immer mit der gleichen session id zu den FRITZ! Geräten. Dieses Management gibt es allerdings nur wenn man hm_pdetect mit Intervallsteuerung verwendet und nicht wie du per CUxD Aufruf. Da muss hm_pdetect immer eine neue Session aufmachen und kann die meines Wissens auch nicht einem FRITZ! Gerät wieder als nicht mehr benötigt signalisieren. Dir bleibt also nur der Weg einen Bugreport an AVM zu schicken oder zu einem neueren Repeater zu greifen der das Problem offensichtlich nicht hat.

aski71 commented 8 years ago

Danke für die schnelle Antwort. Der Repeater IST der neueste Fritz-Repeater. Vorletzte Woche erst gekauft. :-) Heißt also: Entweder damit leben, dass ich in der Nacht als abwesend gemeldet werde (Daemon-Mode), oder damit leben, dass sich der Repeater aufhängt (CUxD-Aufruf)? Ich glaube kaum, dass sich AVM dafür interessiert oder das als Fehler einstuft. Vielleicht fällt Dir ja eine geeignete Lösung ein, wie man Zeitsteuerung und Session Management in Einklang bringen kann.

jens-maus commented 8 years ago

Du solltest den Fehler auf jeden Fall an AVM melden. Welches Modell ist es denn genau? Solch ein Problem sollte niemals auftreten. Und die Beseitigung dieses Fehlers sollte auch im Interesse von AVM sein.

Eine Lösung dafür (wenn es wirklich am erzeugen vieler Sessions liegt) hätte ich schon im Kopf. Das umsetzen würde jedoch etwas Zeit in Anspruch nehmen. Ggf. könnte dein Repeater zum längeren durchhalten überredet werden wenn du das Abfrageinterval vergrößerst bis ich diese Lösung umgesetzt habe.

aski71 commented 8 years ago

Das ist der 1750E mit Fritz!OS 06.32.

Das mit der Intervall-Vergrößerung ist sicher eine Übergangslösung. Ich hatte bisher mit run.sh 2 20 gearbeitet und jede Minute aufgerufen. Jetzt habe ich mal umgestellt auf nur run.sh, aber das Intervall über das Programm trotzdem mal auf alle halbe Minute gestellt. Mal schauen, wie lange es dauert, bis er die Grätsche macht. Ich beobachte das mal ein paar Tage, bevor ich es an AVM melde, aber die Antwort kann ich mir schon vorstellen. ;-)

jens-maus commented 8 years ago

Na das geht nicht. Wenn du ausschliesslich die CUxD Abfrage verwendet willst dann muss du auch in der Weboberfläche das Intervall auf 0 (aus) stellen. Ansonsten machst du doppelte abfragen.

aski71 commented 8 years ago

Keine Sorge. Das Intervall in der Weboberfläche ist deaktiviert. Ich meinte das Intervall des Programms in der CCU, das den CUxD-Aufruf durchführt.

stern105 commented 7 years ago

Ein kurzer Einwurf voin mir zu dem Thema: Auch mein Repeater (älteres Modell 300E) hat tatsächlich mangels verbleibendem Speicher den Dienst quittiert und ein Aufruf der Weboberfläche brachte die Meldung "Out of memory".

Das Problem löste sich nach dem Löschen der Ereignis-Logs, die - leider nicht abschaltbar - jeden Login auf jedem Gerät protokollieren und dieses Protokoll scheint mir der Speicherfresser zu sein. Während eine FritzBox mit mind. 500 MB Speicher einige Zeit durchhält wird der kleinere Speicher des Repeaters schnell zum Problem. Da hilft nur ein längeres Intervall zur Abfrage (bisher waren es 15 Sekunden, jetzt gehe ich nach belegter Zuverlässigkeit des Systems auf 2 min.

Ansonsten bleibt die einzig mir bekannte Lösung: Immer wieder mal die Login-Listen löschen: [https://service.avm.de/help/de/FRITZ-Box-Fon-WLAN-7490/014/hilfe_syslog](analog geht das auch bei anderen Geräten). Sollte die Weboberfläche nicht mehr erreichbar sein, zunächst kurz vom Netz trennen, dadurch werden bereits Ereignisse aus den Listen gelöscht. Evtl. hilft auf Dauer nur eine regelmäßige Abschaltung alle paar Nächte.

Grüße in die Runde!

jens-maus commented 7 years ago

Danke für den weiteren Hinweis. Allerdings möchte ich hinzufügen das mir dieses Verhalten bei einer FRITZ!Box noch nicht untergekommen ist. Hier scheint wohl das Speichermanagement der Logeinträge besser gemanaged zu werden. Da das Problem allerdings wohl auch auf neueren 1750E Repeatern auftritt würde ich immer noch dafür plädieren das jeder der von diesem Problem betroffen ist bei AVM mal einen entsprechende Bugreport öffnet damit das Problem in kommenden Versionen behoben wird.

@stern105: Welche Art des Aufrufes von hm_pdetect nutzt du denn? @aski71 nutzt ja den kommandozeilenaufruf mittels regelmäßigem CUXd Aufruf. Ist das bei dir auch so oder nutzt du mit dem Standardmodus das es sich auf der CCU selbst in gewissen Intervallen aufruft?

stern105 commented 7 years ago

Hallo, ich nutze den Standardmodus. Aber der Login-Prozess auf der FritzBox sollte ja der gleiche sein, oder?

Hier die LOG-Einträge auf der Fritz-Box (Liste kurz zuvor gelöscht): homematic-anmeldungen-hm_detect

Hier die Konfiguration der CCU2: homematic-konfiguration-hm_detect

jens-maus commented 7 years ago

Ja, im Prinzip ist das natürlich das gleiche wie beim Kommandozeilenaufruf. Jedoch gibt es den Unterschied das nur im Standardmodus hm_pdetect versucht die Session ID des vorherigen Logins wiederzuverwenden. Das war - als ich es implementiert habe - die Hoffnung das dann FRITZ! devices nicht immer einen einzelnen Login ins Logfile schreiben sondern wenn die SessionID gleich ist er hoffentlich dann nur 1x einen Login vermerkt. Das war eigentlich bis jetzt meine Annahme. Aber deine Erfahrungen sind da anscheinend anders und dann bringt die Art der Verwendung der vorherigen SessionID anscheinend nichts :( Dann gibt es leider wirklich nur den Weg bei AVM den Bug zu melden und auf Verbesserung zu hoffen. Wie gesagt, habe ich selbst aber mit keinerlei Abstürzen oder "Out of memory" Meldungen bei Verwendung meiner FRITZ!Box 6490 zu kämpfen.

Patt74 commented 7 years ago

Hallo, ich habe auch eine Frage wegen einem ähnlichen Problem. Ich habe eine Fritz 7590 und 2 WLAN Repeater 1750E. Nun habe ich das Problem, dass ich bei einzelnen Geräten Verbindungsaussetzer habe, sobald ich das WLAN am iphone 6 Plus meiner Frau aktiviere! IP Adresse Kollision oder ähnliches kann ich ausschliessen. Hatte extra eine feste IP eingestellt. Bin schon lange am Fehler suchen und da ist mir eingefallen, dass ich das iphone ja auch in hm_detect einerichtet habe. Kann dies die Ursache sein?? habe es auf alle 10s eingestellt. Sorry bin kein Netzwerkprofi.

Grüße

aksnet commented 6 years ago

Ich hatte zu dem Thema eine Supportanfrage bei AVM aufgemacht und die Antwort bekommen, dass ich die Abfragezeit auf 5 Min stellen sollte, dann sollte der Repeater damit umgehen können ohne voll zu laufen. Das Memory Management hat dann nicht so viel Last und kann den Repeater stabil halten. Ein automatischer Reboot oder leeren des Ereignisspeichers wurde auf die Feature Wunschliste genommen. Bis dato wurde mir als Workaround eine Steckdose mit Zeitschaltuhr empfohlen, die den Repeater alle 12 Stunden kurz vom Strom nimmt. So läuft es nun bei mir mit einer Abfragerate von 1 Minute.

Grüße Andreas