Die Nuki-Integration hat sich beim Starten am Wildcard-MQTT-Topic homeassistant/# angemeldet, selbst wenn die Nuki-Integration nicht verwendet wurde
Darüber hinaus war die Verarbeitung auf der Nuki-Seite für jede Home Assistant-Erkennungsnachricht relativ aufwendig, sodass unnötig CPU verbraucht wurde.
Was ich geändert habe:
Nur während eines Nuki-Scans abonnieren und nach einer 1-minütigen Timeout automatisch das Abhören beenden
Den MQTT-Handler optimieren, indem frühzeitig zurückgegeben wird, wenn das entdeckte Gerät kein Nuki-Gerät ist
@ProtZ Könntest du bitte diesen PR überprüfen, um sicherzustellen, dass ich nichts in der Nuki-Integration kaputt gemacht habe?
Falls nötig, habe ich ein Docker-Image zum Testen erstellt:
Ich habe das Fix-Image gladysassistant/gladys:fix-nuki-home-assistant-wildcard-listen getestet, aber leider liegt die CPU-Auslastung immer noch bei ~60-70%.
Kein NotFoundError mehr in den Logs (das Race Condition der behaltenen Nachrichten scheint behoben), aber die hohe CPU-Auslastung bleibt bestehen.
Ich habe auch bemerkt, dass der LAN-Manager-Präsenzscanner weiterhin ip neigh show aufruft, selbst wenn er in der UI auf « deaktiviert » gesetzt ist — aber das ist wahrscheinlich nicht die Hauptursache, da die Aufruffrequenz niedrig ist.
Hast du noch weitere Ideen, was die konstante hohe CPU-Auslastung bei nur ~0,8 msg/s MQTT-Durchsatz verursachen könnte?
Immerhin haben wir auf dem Weg einen Fehler in der Nuki-Integration behoben!
Das v4.67.0-Release enthält nur drei Änderungen:
Nuki-Integration
Verbesserung des Gladys Plus-Backups
HAP-Abhängigkeitsaktualisierung
Um sicherzustellen, dass das Problem nicht mit der HomeKit-Abhängigkeitsaktualisierung zusammenhängt, könntest du die HomeKit-Integration vollständig deaktivieren und Gladys dann neu starten?
Das kannst du in den Einstellungen → Dienste tun, indem du den Apple HomeKit-Dienst deaktivierst und Gladys dann neu startest.
Damit können wir bestätigen, ob das Problem mit der HAP-Aktualisierung zusammenhängt
Das ist es! Wenn ich Apple HomeKit im Dashboard unter Einstellungen/Dienst deaktiviere und den Gladys-Container neu starte (den fix_nuki-Container UND latest, aktuell v4.71.0), geht die CPU-Zeit stark zurück, Container-CPU 0,3%
Ich habe zwar Apple-Geräte, aber ich nutze keine Apple HomeKit-Geräte, also ist DAS PROBLEM FÜR MICH GELÖST.
Ich nehme an, das überlässt es Ihnen, die Ursache für Ihre anderen Benutzer herauszufinden. Wenn ich etwas beitragen kann, das Ihnen helfen könnte, werde ich das gerne tun.
Nochmals DANK für all Ihre Arbeit. Es ist unglaublich.
Hallo, ich freue mich, dass du dein Problem lösen konntest. Falls es mit der HomeKit-Integration zusammenhängt, werde ich mich darum kümmern. Ich bin mir ziemlich sicher, dass es ein Problem mit mdns ist, ich habe es bereits hier erwähnt: Installer Gladys sur NAS Qnap - #13 par bertrandda. Die neueste Version der Abhängigkeit, die wir verwenden, bringt einige erhebliche Änderungen mit sich, und es scheint, dass es Probleme mit Docker verursacht.
Ich konnte das Problem auf meinem Mac nicht reproduzieren, aber ich habe einen Linux-PC besorgt, um es zu untersuchen. Ich bin dran!
Entschuldigung, mir war nicht klar, dass es ein Problem sein könnte. Dein PR ist in Ordnung, danke, und eine schöne Lösung für die weitere MQTT-Überwachung. Ich würde gerne eine weitere Korrektur im PR vornehmen, aber ich weiß nicht, wie ich das machen soll.
Mir ist gerade aufgefallen, dass ‘device.get’ den Parameter ‘service_id’ nicht akzeptiert, es muss ‘device.get({ service: ‹ nuki ›, });’ in nuki.mqtt.connect.js und nuki.mqtt.disconnect.js heißen.
Ich habe alles versucht, konnte aber nicht reproduzieren, was den CPU-Spitzenwert verursacht. Ich habe versucht, eine Auswahl auf der Homekit-Integrationskonfigurationsseite hinzuzufügen, um die mDNS (das ist, was Homebridge tut) zu ändern. Wenn es, wie ich vermute, ein mDNS-Problem ist, sollte das den Trick machen.
Ein Docker-Image ist verfügbar: bertrandda/gladys:homekit-mdns. Normalerweise ist der Standardwert CIAO. @bamboleate, könntest du bitte jede verfügbare mDNS testen und die CPU-Auslastung überprüfen? Sobald die Konfiguration gespeichert wurde, müssen Sie einige Sekunden warten, bis der Dienst neu geladen wird.
@bertrandda Ich habe bemerkt, dass es eine neue Version von @homebridge/hap-nodejs gibt. Hast du schon versucht, auf die neueste Version zu aktualisieren?
Ein anderer Gedanke: @bamboleate’s MQTT-Geräte senden etwa 1 Nachricht pro Sekunde. Hast du schon versucht, eine ähnliche Last zu simulieren, indem du MQTT-Nachrichten mit dieser Rate an deine Instanz veröffentlichst? Das könnte helfen zu bestätigen, ob der HomeKit-Listener (der auf alle Zustandsänderungen reagiert) zu schwer geworden ist und den CPU-Spitzenwert verursacht.
Sooooo, ich hatte endlich die Zeit, ein bisschen mit dem Container bertrandda/gladys:homekit-mdns herumzuspielen, und hier ist, was ich herausgefunden habe
Der CPU-%-Wert steigt sofort an, wenn ich den Apple HomeKit-Dienst starte/I auf den Button im Dashboard/Einstellungen/Dienst klicke
zunächst war er auf CIAO eingestellt
Bei AVAHI hatte ich das Gefühl, dass der CPU-%-Wert im Vergleich zu CIAO leicht anstieg, aber das könnte auch nur ich sein
Bei BONJOUR sank der CPU-%-Wert auf normale Werte!!!
Bei RESOLVED war der CPU-%-Wert wie bei den anderen drei erhöht
Beachte, dass ich mich seit ich mit Netzwerken, einem Server und Pis und so herumgespielt habe, meine Apple-Geräte sichtbar haben möchte und nicht irgendwie verschleiert durch einen „Dienst“, den Apple anbietet, also habe ich versucht, all das zu deaktivieren, und das könnte vielleicht die Ursache dieses Problems sein? Hätte ich nicht geglaubt, aber hier sind wir…
Ich habe die Option „Limit Tracking“ von Apple auf meinen Geräten deaktiviert (die IPs/MAC-Adressen rotiert), und mein DNS läuft auf PiHole. Ich bin mir nicht sicher, ob das relevant ist, aber es könnte erklären, warum BONJOUR in meiner Konfiguration am besten funktioniert. Derzeit läuft es mit BONJOUR und der CPU ist stabil.
Hoffe, das hilft
EDIT: Ich habe vergessen zu erwähnen, dass der CPU-%-Wert sofort sank, als ich den Apple HomeKit-Dienst im Dashboard/Einstellungen/Dienst deaktiviert habe, während er bei gladysassistant/gladys:latest erhöht bleibt, bis ich den Container neu lade, das könnte auch für dich relevant sein
Vielen Dank @bamboleate, genau das war es, was ich wissen musste.
Ich werde Bonjour als Standard mDNS einstellen. Es war der Legacy-Anbieter, der mit der Beta-Version der Bibliothek verwendet wurde.
Wir können hier sehen mDNS Options · homebridge/homebridge Wiki · GitHub, dass für Docker avahi empfohlen wird, aber mehr Konfiguration in Docker benötigt wird. Ich bin mir nicht sicher, ob die Migration für alle bestehenden Gladys-Instanzen möglich ist. Der Bonjour-Anbieter sollte für alle Konfigurationen funktionieren und wenn Benutzer ihre Konfiguration optimieren möchten, können sie das tun.
Ja, ich habe eine korrekte Stoppfunktion in diesem Bild hinzugefügt, die die Homekit-Integration sofort stoppt, danke, du hast gerade bestätigt, dass es funktioniert!
Ja, die neue Version ist im bertrandda/gladys:homekit-mdns-Bild enthalten