Probleme beim Restart - fhem.save über 350MB groß

Begonnen von Amok, 18 Dezember 2022, 17:09:37

Vorheriges Thema - Nächstes Thema

Amok

Hi,

ich bemerke neuerdings nach Upgrades oder neustarts probleme mit fhem, die sich so auswirken, dass die WebGUI dann nicht mehr reagiert, es auf einmal mehrere fhem Prozesse gibt und die fhem.save Datei anscheinend zerschossen ist (da alle Geräte ihre zustände verloren haben und die Datei auch sehr klein ist).

Aktuell löse ich das Problem so, dass ich alle fhem instanzen abschieße, eine fhem.save aus dem Backup wiederherstelle und die Software dann sauber starte.

Beim Starten ist mir aufgefallen, dass fhem relativ lange hängt und nicht reagiert (die GUI funktioniert in der Zeit auch nicht) und im Log steht dann: "1: Including ./log/fhem.save".

Mir ist aufgefallen, dass die Datei auch sehr groß ist und es vermutlich etwas länger dauert diese zu laden.

Meine Vermutung ist, dass es irgendwo einen Timeout gibt, der Überschritten wird, wenn ich versuche fhem mittles shutdown/restart neu zu starten.
Wenn ich die Software über den service stoppe und warte bis alle Prozesse beendet wurden, klappt es besser mit dem neustart.

Meine Frage wäre nun, warum wächst denn meine fhem.save so an, denn wenn ich da rein schaue sieht das für mich in erster Linie so aus, als würden da nur ein paar Zustände der Geräte gespeichert werden.
Wenn ich aber weiter durch die Datei scrolle, gibt es dort sehr viel Binäres Zeugs, was ich nicht ganz verstehe ...

Gibt es ggf. eine Möglichkeit, die Datei zu "bereinigen" oder passiert das in der Software automatisch ?!?

Otto123

Zitat von: Amok am 18 Dezember 2022, 17:09:37
gibt es dort sehr viel Binäres Zeugs, was ich nicht ganz verstehe ...
MQTT im Einsatz und große retain Readings? Da gab es in letzter Zeit vermehrt ähnliche Fragen.
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz


Amok

WOW, vielen Dank für die schnellen Antworten und den Pointer in die richtige Richtung! (hatte zwar gesucht, aber scheinbar zu unspezifisch)

In der Tat war mein MQTT2-Broker im fhem "etwas" größer (beim Anklicken auf der Gui ist fhem abgeschmiert ...) also habe ich zuerst mit set <MQTT2_SERVER> clearRetain mal alles bereinigt und auch gleich das respectRetain Attribut umgestellt ...

Damit ist meine Datei von 370MB auf 260MB geschrumpft - allerdings, nach dem was ich hier so lese - ist das immer noch zu groß.

Nun würde ich gerne den Verursacher identifizieren. Habe gesehen, es gibt da was mit fhemdebug und dem Befehl "sizeInFile" - nur wie benutze ich das?

Danke & Gruß

rudolfkoenig

ZitatHabe gesehen, es gibt da was mit fhemdebug und dem Befehl "sizeInFile" - nur wie benutze ich das?
- In der FHEM-Kommandozeile (oben) "fhemdebug sizeInFile" (ohne ") und <return> eingeben
- ODER: oben links auf + klicken, "fhemdebug sizeInFile" eingeben und Execute
- ODER: per telnet verbinden, und fhemdebug sizeInFile eingeben
- ODER...

Wernieman

Habe mal für Dich recherchiert (weil es mich auch interessierte):
in der Kommandozeile eingeben "fhemdebug sizeInFile"

Edit:
Rudi war schneller ...
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Amok

Vielen Dank ihr zwei - das war ja einfach (da komme ich mir wie ein DAU vor).

Die Ausgabe zeigt mir neben diversen MQTT Devices mit ein paar Byte hauptsächlich den MQTT Server von FHEM an:

252737761: MQTT2_FHEM_Server
...
...
Total: 253758770


Mir scheint, irgendwas ist hier noch nicht so wie es soll.

Hättet ihr evtl. noch einen Tipp für mich?

BTW: Ich musste mich um die Frage zu stellen neu anmelden, weil mein erster Login aus 2017 mittlerweile gelöscht wurde und ich den Reminder gestern erst im SPAM gefunden hatte ...
Was ich damit sagen will: Seit dem ich damals fhem entdeckt und installiert habe, funktioniert es einfach perfekt als Smarthome-Zentrale (und es gab keine Notwenigkeit für mich, dumme Fragen zu stellen, ich war nur als stiller Mitleser aktiv) - Dickes Lob also an der Stelle an alle Beteiligten.
Jetzt habe ich tatsächlich mal ein Thema und man bekommt sofort Hilfe - Respekt!

Wernieman

Du hast die 2 Links von Rudi durchgelesen? Dort steht es drin ....
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

rudolfkoenig

ZitatHättet ihr evtl. noch einen Tipp für mich?
Hypothese: nach clearRetain ein shutdown restart gemacht ohne save.
Ist FHEM aktuell? respectRetain ist neu.
Ich wuerde die Datei fhem.save mit einem OS-Anzeigeprogramm (z.Bsp. less) anschauen.

Amok

#9
Die Links habe ich gelesen, dachte ein clearRetain reicht?!?

Danach war der MQTT Server in fhem zumindest wieder schön klein.

Hab dann explizit save gemacht, allerdings noch keinen restart - vielleicht war das mein Problem...

Aktuell bin ich, hatte gestern erst ein update gemacht.

Gerade noch mal probiert ...
erst ein set ... clearRetain
dann save
dann restart

Allerdings hing er gerade wieder im Start ...
2022.12.19 11:23:21 1: Including ./log/fhem.save
2022.12.19 11:25:53 1: Messages collected while initializing FHEM


Man sieht wie lange er noch braucht um die Datei einzulesen ...

Ich versuch mal die Datei zu analysieren, aber 250MB im Editor ist schon  ... happig :D

EDIT:

Ab da gehts los:
setstate MQTT2_FHEM_Server 2022-12-15 21:53:00 .RETAIN

rudolfkoenig

Zitatsetstate MQTT2_FHEM_Server 2022-12-15 21:53:00 .RETAIN
"set ... clearRetain" soll genau diesen Eintrag entfernen.

Hypothesen:
- clearRetain ist verwirrt, weil hideRetain nicht mehr gesetzt ist, und die Aenderung dieses Attributes fehlerhaft ist. In diesem Fall sollte ein "deletereading MQTT2_FHEM_Server .RETAIN" gefolgt von save und Neustart helfen.
- save funktioniert nicht, weil die Platte voll ist. In diesem Fall wuerde ich die Dateien im /opt/FHEM/restoreDir/save entfernen, die .RETAIN Zeile aus dem aktuellen fhem.save mit einem Editor entfernen, und FHEM ohne save neu starten.
- save funktioniert nicht, weil die Platte korrupt ist und deswegen read-only gemountet ist: in diesem Fall muss die Platte repariert werden.

Wernieman

- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

rudolfkoenig

Im ersten Fall der drei Hypothesen nicht, ich wuerde es aber pruefen, ob die Loesung ein Neustart ueberlebt.

Amok

Vielen Dank!

von hinten nach vorne:
Die Platte war natürlich nicht defekt oder readonly ... speichern ging ja, dauerte nur ewig (klar, bei der Größe)
Voll war die Platte auch nicht - das wäre mir schon im Monitoring aufgefallen ;)
"deletereading MQTT2_FHEM_Server .RETAIN" hätte vermutlich funktioniert, aber da ich gerade den Server wieder herunter gefahren habe um an der Datei zu fummeln, habe ich das nicht mehr ausprobieren können.
Glücklicherweise passte die Datei noch in den Arbeitsspeicher, so dass ich mit vim die .RETAIN Zeile des MQTT-Server einfach mittels dd entfernen konnte und nachdem die rund 250MB dann raus waren und ein :x auch funktionierte startet fhem jetzt so schnell wie schon lange nicht mehr - kein wunder, da:

/opt/fhem/log# ls -lah fhem.save
-rw-r--r-- 1 fhem dialout 744K 19. Dez 15:02 fhem.save


Einen reboot überlebt das auch und "save" ist auch wieder rasend flott - so macht das direkt wieder Spass ;)

Nochmals vielen Dank für den 1A Support !!!

Wernieman

Ich hätte Dir fürs Manuelle Arbeiten (auf Unix-Shell-Ebene) sed empfohlen. Der hätte so etwas "mit links" gemacht....
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html