Freeze in FW_Read() => Workaround

Begonnen von PatrickR, 04 Juli 2025, 13:34:33

Vorheriges Thema - Nächstes Thema

PatrickR

Hallo zusammen!

Ich hatte heute Morgen einen sehr ärgerlichen Freeze in FHEM:
2025.07.04 06:56:26.337 1: [Freezemon] freezemon: Long function call detected ReadFn:WWW_192.168.0.150_54471 - 374.379606 seconds
Bei dem Client mit der o. g. IP-Adresse handelt es sich um ein Macbook im Sleep Modus.

Derartige Freezes, wenn auch deutlich kürzer, treten immer mal wieder auf, z. B. bei schlechten Internetverbindungen.

Gibt es irgendeine Möglichkeit, die Laufzeit von FW_Read() in FHEM zu begrenzen? Ich habe in der Commandref kein timeout-Attribut o. ä. gefunden.

/Edith: Bin gerade auf das undokumentierte alarmTimeout gestoßen.
/Edith2: Wenn ich fhem.pl richtig verstehe, führt das nur zu einem Logeintrag :/

Patrick
lepresenced - Tracking von Bluetooth-LE-Tags (Gigaset G-Tag) mittels PRESENCE

"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning." - Rich Cook

rudolfkoenig

FW_Read sollte nie blockieren, jedenfalls nicht im Sinne von: es wartet auf weitere Daten von der Quelle.

Auch die Aktualisierung der vom Netz getrennten Browser sollte FHEM nicht blockieren: das Problem haben wir vor Jahren gehabt und hoffentlich geloest. An die Browser wird nichtblockierend gesendet bzw. zwischengepuffert, und wenn der Puffer ueber 1MB gross ist, dann werden die Daten verworfen.

Ich vermute eher eine an FHEMWEB gerichtete HTML Abfrage, was Aktionen in FHEM ausloest (per notify/DOIF/etc), die wiederum lange Zeit brauchen.

PatrickR

Hallo Rudi,

Zitat von: rudolfkoenig am 06 Juli 2025, 10:09:30Ich vermute eher eine an FHEMWEB gerichtete HTML Abfrage, was Aktionen in FHEM ausloest (per notify/DOIF/etc), die wiederum lange Zeit brauchen.
Mist, das macht es nicht gerade einfacher. Habe mal das verbose von dem WWW-Gerät auf 5 gestellt. Dann sollte ich beim nächsten Mal zumindest den zugehörigen Request sehen.

Alternative Ideen nehme ich natürlich trotzdem gerne.

Patrick
lepresenced - Tracking von Bluetooth-LE-Tags (Gigaset G-Tag) mittels PRESENCE

"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning." - Rich Cook