La integración de Nuki se estaba suscribiendo al tema MQTT comodín homeassistant/# al iniciar, incluso cuando la integración de Nuki no se estaba utilizando
Además, el manejo en el lado de Nuki era bastante pesado para cada mensaje de descubrimiento de Home Assistant, por lo que estaba consumiendo CPU sin razón.
Lo que cambié:
Solo suscribirse durante un escaneo de Nuki y dejar de escuchar automáticamente después de un tiempo de espera de 1 minuto
Optimizar el controlador MQTT devolviendo temprano si el dispositivo descubierto no es un dispositivo Nuki
@ProtZ ¿Podrías echar un vistazo a este PR para asegurarte de que no rompí nada en la integración de Nuki?
Si es necesario, he construido una imagen Docker para pruebas:
He probado la imagen de corrección gladysassistant/gladys:fix-nuki-home-assistant-wildcard-listen pero, lamentablemente, el uso de la CPU sigue estando en ~60-70%.
Ya no hay errores NotFoundError en los registros (la condición de carrera de mensajes retenidos parece resuelta), pero el alto uso de la CPU persiste.
También me he dado cuenta de que el escáner de presencia del administrador LAN sigue llamando a ip neigh show incluso cuando se establece en « desactivado » en la interfaz de usuario, pero eso probablemente no sea la causa principal, ya que la frecuencia de las llamadas es baja.
¿Alguna otra idea sobre qué podría estar causando un uso constante de la CPU alta con solo ~0.8 msg/s de rendimiento de MQTT?
Al menos logramos solucionar un error en la integración de Nuki en el camino.
La versión 4.67.0 solo incluye tres cambios:
Integración de Nuki
Mejora de la copia de seguridad de Gladys Plus
Actualización de la dependencia HAP
Para descartar cualquier problema relacionado con la actualización de la dependencia de HomeKit, ¿podrías intentar deshabilitar la integración de HomeKit por completo y luego reiniciar Gladys?
Puedes hacerlo en Configuración → Servicios, desactivando el servicio Apple HomeKit y luego reiniciando Gladys.
Esto nos ayudará a confirmar si el problema está relacionado con la actualización de HAP
¡Eso es! Cuando desactivo Apple HomeKit en dashboard/configuración/servicio y reinicio el contenedor de gladys (el de fix_nuki Y latest, hasta ahora, v4.71.0), el tiempo de CPU disminuye drásticamente, el CPU del contenedor 0.3%
Tengo dispositivos Apple, pero no uso dispositivos Apple Home Kit de todos modos, así que PARA MÍ el problema está resuelto.
Asumo que esto te deja a ti descubrir la causa para tus otros usuarios. Si puedo proporcionar algo que te pueda ayudar, lo haré con gusto.
De nuevo, GRACIAS por todo tu trabajo. Es increíble.
Hola, me alegra que hayas podido resolver tu problema. Si está relacionado con la integración de HomeKit, lo investigaré. Estoy bastante seguro de que es un problema relacionado con mdns, ya lo mencioné aquí: Installer Gladys sur NAS Qnap - #13 par bertrandda. La última versión de la dependencia que estamos utilizando realiza muchos cambios en ella, y parece estar causando problemas con Docker.
No pude reproducir el problema en mi Mac, pero he conseguido un PC con Linux para investigar. ¡Estoy en ello!
Disculpa, no me di cuenta de que podía ser un problema. Tu PR está bien, gracias, y es un buen método para futuras exploraciones de MQTT. Me gustaría añadir otra corrección en la PR, pero no sé cómo hacerlo.
Acabo de darme cuenta de que ‘device.get’ no toma ‘service_id’ como parámetro, tiene que ser ‘device.get({ service: ‹ nuki ›, });’ en nuki.mqtt.connect.js y nuki.mqtt.disconnect.js
He probado de todo, pero no he podido reproducir lo que causa el pico de CPU. He intentado agregar un selector en la página de configuración de la integración de Homekit para cambiar el mDNS (que es lo que hace Homebridge). Si, como sospecho, es un problema de mDNS, eso debería solucionarlo.
Una imagen de Docker está disponible: bertrandda/gladys:homekit-mdns. Normalmente, el valor predeterminado es CIAO. ¿Podrías probar cada mDNS disponible y verificar el uso de la CPU? Una vez guardada la configuración, deberás esperar unos segundos para que el servicio se recargue.
@bertrandda He notado que hay una nueva versión de @homebridge/hap-nodejs. ¿Has probado a actualizar a la última versión?
Otra idea: los dispositivos MQTT de @bamboleate envían aproximadamente 1 mensaje por segundo. ¿Has probado simular una carga similar publicando mensajes MQTT a ese ritmo en tu instancia? Podría ayudar a confirmar si el escuchador de HomeKit (que reacciona a todos los cambios de estado) se ha vuelto demasiado pesado y está causando el pico de CPU.
Bueno, finalmente tuve tiempo de jugar un poco con el contenedor bertrandda/gladys:homekit-mdns, y aquí está lo que encontré
El % de CPU aumenta inmediatamente cuando inicio el servicio de Apple HomeKit / hago clic en el botón en el panel de control/configuración/servicio
inicialmente estaba configurado en CIAO
Configurado en AVAHI, tuve la sensación de un ligero aumento en el % de CPU en comparación con CIAO, pero podría ser yo
Configurado en BONJOUR, el % de CPU bajó a valores normales!!!
Configurado en RESOLVED, el % de CPU estaba alto como los otros tres
Tenga en cuenta que, desde que jugueteé con la red, un servidor y Pis y demás, me gusta que mis dispositivos de Apple sean visibles y no algún tipo de ocultos de manera oscura por algún “servicio” que Apple proporciona, así que intenté desactivar todo eso, y eso podría ser la causa de este problema. No lo habría creído, pero aquí estamos…
He desactivado la opción ‹ Limit Tracking › de Apple en mis dispositivos (que gira IPs/direcciones MAC), y mi DNS funciona en PiHole. No estoy seguro de si está relacionado, pero podría explicar por qué BONJOUR funciona mejor en mi configuración. Actualmente ejecutando con BONJOUR y la CPU es estable.
Espero que esto ayude
EDICIÓN: Olvidé mencionar que con el contenedor bertrandda/gladys:homekit-mdns, el % de CPU bajó inmediatamente cuando desactivo Apple Home Kit en el panel de control/configuración/servicio, mientras que se mantiene alto hasta que recargo el contenedor cuando es gladysassistant/gladys:latest, podría ser relevante para usted también
¡Muchas gracias @bamboleate! Es exactamente lo que necesitaba saber.
Voy a configurar Bonjour como mDNS predeterminado. Era el anunciador legado que se utilizaba con la versión beta de la biblioteca.
Podemos ver aquí mDNS Options · homebridge/homebridge Wiki · GitHub que para docker, se recomienda avahi pero necesita más configuración en docker, no estoy seguro de que la migración sea posible para todas las instancias existentes de Gladys. El anunciador Bonjour debería funcionar para todas las configuraciones y si los usuarios quieren optimizar su configuración, pueden hacerlo.
Sí, agregué una función de parada correcta en esta imagen que detiene la integración de Homekit inmediatamente, gracias, ¡acabas de confirmar que funciona!
Sí, la nueva versión está en la imagen bertrandda/gladys:homekit-mdns