Titre : Utilisation élevée du CPU (~60%) avec v


Environnement :

  • Gladys v4.70.0 (mise à jour automatique via Watchtower)

  • Docker sur Linux (Ubuntu), network_mode: host

  • Intégration MQTT avec plusieurs appareils (Raspberry Pis)


Problème :

Après que Watchtower a automatiquement mis à jour Gladys de v4.66.8 vers v4.70.0, le conteneur a commencé à consommer ~60% du CPU en permanence – pas seulement au démarrage, mais en continu.

gladys    59.72%

Les logs montraient une avalanche d’erreurs au démarrage :

NotFoundError: DeviceFeature mqtt:xxx not found

Cela semble être un problème de synchronisation où des messages MQTT conservés arrivent avant que Gladys n’ait chargé son cache de device features. Cependant, même après que les erreurs de démarrage ont cessé et que les logs étaient propres, le CPU est resté à ~60%.


Solution :

Rétrogradé vers v4.66.8 et épinglé la version pour empêcher Watchtower de mettre à jour automatiquement :

yaml

gladys:
  image: gladysassistant/gladys:v4.66.8
  labels:
    com.centurylinklabs.watchtower.enable: "false"

Après la rétrogradation, le CPU a chuté immédiatement à ~4%.

gladys    3.90%

Question :

Est-ce un problème connu avec la v4.70.0 ? Y a-t-il des plans pour corriger cette régression de CPU ? J’aimerais mettre à jour éventuellement, mais pas si cela plombe à nouveau les performances.

Salut @bamboleate et bienvenue sur le forum !
tu dois avoir quelque chose qui ne va pas car de mon côté je n’ai pas de soucis de CPU qui s’emballe depuis la version 4.70 (ni même avant) :


Et j’ai du zigbee, du node-red, du zwave et des scènes qui tournent sur Gladys.

Quelle est ton architecture hardware pour faire tourner Gladys ? (cpu, ram, hdd/sdd, etc.)

Salut @mutmut, merci d’avoir vérifié !

Mon matériel:

  • Machine: Minisforum UM350 (AMD Ryzen 5 3550H)

  • RAM: 32 GB

  • Storage: several HDDs and SSDs connected

  • OS: Ubuntu 24.04

  • Docker, network_mode: host

Le pic d’utilisation CPU est très reproductible de mon côté. Voici l’avant/après :

v4.70.0:

gladys    59.72%

v4.66.8 (same machine, same config, same moment):

gladys    3.90%

J’utilise l’intégration MQTT avec 3 Raspberry Pi (cartes relais + capteurs). Pas de Zigbee, pas de Z-Wave, j’utilise Node-RED.

Une chose que j’ai remarquée dans les logs au démarrage avec la v4.70.0 :

NotFoundError: DeviceFeature mqtt:xxx not found

Cela se répète pour chaque DeviceFeature MQTT à chaque démarrage — on dirait que les messages conservés (retained messages) arrivent avant que le cache des appareils ne soit prêt. Cette avalanche d’erreurs pourrait-elle provoquer le pic d’utilisation du CPU ? Peut-être que c’est spécifique aux configurations MQTT ?

Ton matériel est clairement bien, de mon côté je suis sur un cluster proxmox et Gladys est sur un LXE (équivalent VM pour faire simple) avec 6Go de RAM et 2 vCPU.

Je ne suis pas un expert pour une analyse poussée malheureusement.
Néanmoins côté intégration MQTT de Gladys, utilises-tu l’intégration interne ?

Ensuite, que dit la page de debug ?

Si tu utilises MQTT Explorer (par exemple) pour te connecter au broker MQTT, as-tu des informations de tes RPi qui apparaissent ?

Autre point, comment as-tu configuré tes appareils dans l’intégration MQTT ?


De ce que je vois du message d’erreur, un (ou plusieurs ?) appareil n’est pas trouvé/reconnu, il faudrait voir avec MQTT Explorer si il est bien visible et si sa configuration est toujours bonne dans l’intégration MQTT de Gladys.

Salut @mutmut, merci pour les questions détaillées !

Oui, j’utilise l’intégration MQTT interne dans Gladys.

Concernant les messages NotFoundError : j’ai déjà étudié cela en profondeur. Les erreurs apparaissent seulement au démarrage et sont un problème de synchronisation — le broker MQTT livre des messages conservés avant que Gladys ait fini de charger son cache de device features. Après le démarrage, les logs sont complètement propres et tous les appareils fonctionnent correctement. Les RPis publient correctement, les topics sont corrects, et tout est visible dans MQTT Explorer.

Ces erreurs ne sont pas la cause de mes problèmes — elles sont un symptôme du timing au démarrage. Et plus important : le CPU reste à ~60 % en permanence, pas seulement pendant la pluie d’erreurs au démarrage.

Le point clé est la comparaison directe :

  • v4.70.0 → 60 % CPU en permanence, mêmes erreurs au démarrage

  • v4.66.8 → 4 % CPU en permanence, mêmes erreurs au démarrage (le problème de temporisation existe dans les deux versions)

Donc quelque chose a changé entre v4.66.8 et v4.70.0 qui provoque une régression CPU, du moins sur ma configuration avec MQTT. Les erreurs au démarrage sont un problème distinct (plus ancien).

@bamboleate Merci beaucoup pour le rapport, et désolé pour le désagrément.

Avez-vous essayé d’installer d’autres versions de Gladys entre-temps ?

Voici le journal des modifications complet :

Pourriez-vous procéder à une mise à jour version par version jusqu’à trouver quelle version a introduit le problème ?

Cela nous aiderait à identifier exactement quelle version a causé le problème, ce qui facilitera grandement notre enquête.