Fuite memoire - besoin d'aide

Bonjour a tous,

Cela fait un moment que je constate une augmentation constante de la RAM sur mon Jeedom et je ne parviens pas a trouver la cause de ce probleme tres embetant (depuis des mois …).
J’ai bien entendu suivi les conseils en desactivant plugin apres plugin pour voir 'evolution mais ca ne change pas grand chose, en desactivant un plugin ca libere un peu de RAM mais ne corrige pas le fond du probleme.

  • Page sante OK (les plugins pas a jour c’est juste ceux qui sont en preparation pour Jeedom 4.4):

  • Tous les packages sont en OK

  • Voici ce que donne les logs Memory Usage a environ 1 semaine d’intervalle:

SIZE   PID USER     COMMAND
1623188 1624 mysql   /usr/sbin/mysqld
509184 32690 www-data /usr/bin/python3 /var/www/html/plugins/zigbee/resources/zigbeed/zigbeed.py --device /dev/ttyS2 --loglevel error --socketport 8089 --callback http://127.0.0.1:80/plugins/zigbee/core/php/jeeZigbee.php --apikey KLlbJb3WLHyixODbSauxvNNZnURk0Tut --cycle 0.3 --pid /tmp/jeedom/zigbee/deamon_1.pid --data_folder /var/www/html/plugins/zigbee/data/1 --device_folder /var/www/html/plugins/zigbee/data/device --controller ezsp --sub_controller elelabs --channel 15 --folder_OTA /var/www/html/plugins/zigbee/data/ota
231752 9157 www-data /usr/bin/python /var/www/html/plugins/openzwave/core/class/../../resources/openzwaved/openzwaved.py --device /dev/ttyACM0 --loglevel error --port 8083 --config_folder /var/www/html/plugins/openzwave/core/class/../../resources/openzwaved/config --data_folder /var/www/html/plugins/openzwave/core/class/../../data --callback http://127.0.0.1:80/plugins/openzwave/core/php/jeeZwave.php --apikey CV4XZwZnLK3y2ERO7CV4PwlY3lvJPmq5 --suppressRefresh 0 --cycle 0.3 --pid /tmp/jeedom/openzwave/deamon.pid --disabledNodes 57,59,60
132116 8962 www-data php /var/www/html/core/class/../php/jeeCron.php cron_id=226410
114072 8818 www-data node /var/www/html/plugins/alexaapi/resources/alexaapi.js http://192.168.1.15 amazon.fr alexa.amazon.fr UJtpTkkOLf4BWRCPXi9g9QutkBTfVaw0Hy96E65ibDVur0ZeAgKblngc49NHmYY8 400
91616  1495 root     /usr/bin/python3 /usr/bin/fail2ban-server -xf start
85708  9031 www-data /usr/bin/python3 /var/www/html/plugins/xiaomihome/resources/xiaomihomed/xiaomihomed.py --loglevel error --socketport 55019 --callback http://127.0.0.1:80/plugins/xiaomihome/core/php/jeeXiaomiHome.php --apikey mrgINSpN8ldnDiBKqfSqIgNOkc4nSkJt --cycle 0.05 --pid /tmp/jeedom/xiaomihome/deamon.pid
78548  8924 www-data node /var/www/html/plugins/espeasy/resources/espeasy.js 192.168.1.15 http://127.0.0.1:80/plugins/espeasy/core/api/jeeEspeasy.php?apikey=jEVsX1A6Y4JwJR1gPBUhDI67IL38GQQ2 400
56992  8974 www-data /usr/bin/python3 /var/www/html/plugins/teleinfo/ressources/teleinfo.py --type conso --port /dev/serial/by-id/usb-Cartelectronic_Interface_USB_1_TIC_DA17VOZO-if00-port0 --vitesse 9600 --apikey QE4dvL8M8eUAYeLf3EdDxb2vDAgT2Qan --mode standard --socketport 55062 --cycle 0.3 --callback http://127.0.0.1:80/plugins/teleinfo/core/php/jeeTeleinfo.php --loglevel error --cyclesommeil 0.5 --loglevel error
53272  1262 root     /usr/sbin/NetworkManager --no-daemon
43504  8860 root     /usr/bin/python3 /var/www/html/plugins/broadlink/resources/broadlinkd/broadlinkd.py --loglevel error --socketport 55013 --sockethost 127.0.0.1 --callback http://127.0.0.1:80/plugins/broadlink/core/php/jeeBroadlink.php --apikey hLdy4Bpnvpy9799UMyZ4bpDiedivKSIs --cycle 0.3 --pid /tmp/jeedom/broadlink/deamon.pid
30124   745 root     /lib/systemd/systemd-journald
25840  1629 root     /usr/lib/policykit-1/polkitd --no-debug

Puis

 SIZE   PID USER     COMMAND
1661104 1624 mysql   /usr/sbin/mysqld
779208 2922 www-data /usr/bin/python3 /var/www/html/plugins/zigbee/resources/zigbeed/zigbeed.py --device /dev/ttyS2 --loglevel error --socketport 8089 --callback http://127.0.0.1:80/plugins/zigbee/core/php/jeeZigbee.php --apikey KLlbJb3WLHyixODbSauxvNNZnURk0Tut --cycle 0.3 --pid /tmp/jeedom/zigbee/deamon_1.pid --data_folder /var/www/html/plugins/zigbee/data/1 --device_folder /var/www/html/plugins/zigbee/data/device --controller ezsp --sub_controller elelabs --channel 15 --folder_OTA /var/www/html/plugins/zigbee/data/ota
396308 8962 www-data php /var/www/html/core/class/../php/jeeCron.php cron_id=226410
290532 9157 www-data /usr/bin/python /var/www/html/plugins/openzwave/core/class/../../resources/openzwaved/openzwaved.py --device /dev/ttyACM0 --loglevel error --port 8083 --config_folder /var/www/html/plugins/openzwave/core/class/../../resources/openzwaved/config --data_folder /var/www/html/plugins/openzwave/core/class/../../data --callback http://127.0.0.1:80/plugins/openzwave/core/php/jeeZwave.php --apikey CV4XZwZnLK3y2ERO7CV4PwlY3lvJPmq5 --suppressRefresh 0 --cycle 0.3 --pid /tmp/jeedom/openzwave/deamon.pid --disabledNodes 57,59,60
117920 8818 www-data node /var/www/html/plugins/alexaapi/resources/alexaapi.js http://192.168.1.15 amazon.fr alexa.amazon.fr UJtpTkkOLf4BWRCPXi9g9QutkBTfVaw0Hy96E65ibDVur0ZeAgKblngc49NHmYY8 400
91616  1495 root     /usr/bin/python3 /usr/bin/fail2ban-server -xf start
86224  9031 www-data /usr/bin/python3 /var/www/html/plugins/xiaomihome/resources/xiaomihomed/xiaomihomed.py --loglevel error --socketport 55019 --callback http://127.0.0.1:80/plugins/xiaomihome/core/php/jeeXiaomiHome.php --apikey mrgINSpN8ldnDiBKqfSqIgNOkc4nSkJt --cycle 0.05 --pid /tmp/jeedom/xiaomihome/deamon.pid
81156  8924 www-data node /var/www/html/plugins/espeasy/resources/espeasy.js 192.168.1.15 http://127.0.0.1:80/plugins/espeasy/core/api/jeeEspeasy.php?apikey=jEVsX1A6Y4JwJR1gPBUhDI67IL38GQQ2 400
56992  8974 www-data /usr/bin/python3 /var/www/html/plugins/teleinfo/ressources/teleinfo.py --type conso --port /dev/serial/by-id/usb-Cartelectronic_Interface_USB_1_TIC_DA17VOZO-if00-port0 --vitesse 9600 --apikey QE4dvL8M8eUAYeLf3EdDxb2vDAgT2Qan --mode standard --socketport 55062 --cycle 0.3 --callback http://127.0.0.1:80/plugins/teleinfo/core/php/jeeTeleinfo.php --loglevel error --cyclesommeil 0.5 --loglevel error
54784   750 www-data /var/www/html/plugins/jMQTT/resources/jmqttd/venv/bin/python3 /var/www/html/plugins/jMQTT/resources/jmqttd/jmqttd.py
53272  1262 root     /usr/sbin/NetworkManager --no-daemon

Courbe de l’evolution de la memoire sur meme pas 1 mois (je redemarre Jeedom des que la memoire baisse trop avant le crash assure):

Le top 5:

Mysqld : les donnees SQL ne sont-elles pas enregistrees sur l’EMMC ?
Comment identifier ce qui fourni tant de donnees?

Le plugin Zigbee : stopper le deamon et le relancer remet la conso de memoire a beaucoup plus bas mais ca augmente a nouveau dans le temps. Que faire?

Le plugin Zwave : il consomme pas mal de memoire mais n’augmente pas tant que ca dans le temps. Je ne souhaite pas migrer vers le nouveau plugin pour le moment. La cause de mon soucis n’est pas la.

JeeCron.php : la il y a une tres forte augmentation dans le temps… qu’est ce que JeeCron.php gere? Les scenarios? Ceux execute a 1 minutes ou tous? Comment puis-je identifier lequel peu engendrer une telle augmentation / fuite de memoire ?

Le plugin AlexaAPI : il consomme pas mal de memoire mais n’augmente pas dans le temps. N’est donc pas le source du probleme.

Pour moi MySQL, Zigbee et JeeCron sont les causes de l’augmentation constante de la consommation de la memoire.
J’apprecierai vraiment de l’aide pour resoudre ce probleme car je ne sais pas par ou commencer.

Merci,

Sebastien

Bonjour @Sattaz

Swapiness → 100% ???
commencer par le mettre à 10%
Ensuite mettre TOUS tes plugins, certains sont connus pour avoir des fuites memoires

Les bases de données travaillent en memoire et ecrivent de temps en temps sur disque → Normal

Du coup, tu as une explication … Que faire : migrer vers jeezigbee

→ l’augmentation de la mémoire est un phénomène NORMAL, le systeme gère ceci très bien et tant qu’il a de la place en mémoire, il ne decharge pas ce que ne sert pas.
C’est une saturation qui n’est pas normal. En l’état, dans ton graph, pas de saturation

Norbert

Bonjour,
Linux optimise son fonctionnement en utilisant beaucoup ma RAM.
De fait, au bout d’un certain temps, tu as la RAM qui est quasi toute utilisée, mais c’est un fonctionnement normal, c’est la partie cache de la mémoire.
Si un process a besoin de plus de RAM, il va libérer du cache et l’utiliser pour lui.

Merci pour vos reponses mais juste pour info j’ai un second Jeedom qui effectivement a moins de choses qui tournent dessus et la RAM est stable a 75% depuis des mois.
Sur mon Jeedom principal, la RAM continue de descendre jusqu’au plantage (dumoins j’avais remarque ca il y a quelques mois / voir annees)

Je vais donc laisser mon Jeedom principal en l’etat et voir si effectivement il ne crache pas / plus.

Desole, je ne viens pas du monde Linux … sur des serveurs MS si je vois ca je ne suis pas rassure :slight_smile:

Sebastien

Aussi pour le swap, apparement avec une Atlas c’est par defaut 100% :

Du coup je laisse comme indique.

Sebastien

1 « J'aime »

Bonjour,
Je comprends pas trop, as tu des soucis ? Car la le graph est normal la, il y a de la rom libre il s’en sert je vois pas de soucis la dessus c’est le principe de Linux on ne libère que si besoin.

1 « J'aime »

Bonjour Loic,

En fait avant la Atlas j’avais un Odroid qui hergeait Jeedom et j’avais ce probleme de consommation de memoire et arrive a environ 30% j’avais un plantage de Jeedom, plus rien d’accessible.
J’ai migre vers la Atlas depuis des mois deja (depuis sa sortie en fait) et je constate toujours ce probleme de consommation de memoire … et desormais je reboot Jeedom avant d’atteindre ces 30% juste par crainte.
Comme dis je ne viens pas du monde linux, je ne fais que constater et le dire ici.

Je vais laisser Jeedom sans rebooter meme s’il descend sous les 30%, je verrais bien.

C’est vous les experts, si vous dites que tout semble normal et qu’une telle courbe est normale alors ok pas de soucis je vous crois bien entendu :slight_smile:

Desole si j’ai cree de la confusion.

Merci,

Sebastien

Salut a tous,

Je reviens avec cette histoire de memoire juste pour que vous confirmiez que tout est encore OK a ce jour sur mon Jeedom (Atlas)

Je remets simplement les captures d’ecran des performances systeme et logs:


On voit maintenant que le swap est usilise en parti.

La consommation de la memoire augmente toujours:

Log ‹ Memory Usage › :

SIZE   PID USER     COMMAND
1786360 1624 mysql   /usr/sbin/mysqld
1406356 2922 www-data /usr/bin/python3 /var/www/html/plugins/zigbee/resources/zigbeed/zigbeed.py --device /dev/ttyS2 --loglevel error --socketport 8089 --callback http://127.0.0.1:80/plugins/zigbee/core/php/jeeZigbee.php --apikey KLlbJb3WLHyixODbSauxvNNZnURk0Tut --cycle 0.3 --pid /tmp/jeedom/zigbee/deamon_1.pid --data_folder /var/www/html/plugins/zigbee/data/1 --device_folder /var/www/html/plugins/zigbee/data/device --controller ezsp --sub_controller elelabs --channel 15 --folder_OTA /var/www/html/plugins/zigbee/data/ota
1055764 8962 www-data php /var/www/html/core/class/../php/jeeCron.php cron_id=226410
374284 9157 www-data /usr/bin/python /var/www/html/plugins/openzwave/core/class/../../resources/openzwaved/openzwaved.py --device /dev/ttyACM0 --loglevel error --port 8083 --config_folder /var/www/html/plugins/openzwave/core/class/../../resources/openzwaved/config --data_folder /var/www/html/plugins/openzwave/core/class/../../data --callback http://127.0.0.1:80/plugins/openzwave/core/php/jeeZwave.php --apikey CV4XZwZnLK3y2ERO7CV4PwlY3lvJPmq5 --suppressRefresh 0 --cycle 0.3 --pid /tmp/jeedom/openzwave/deamon.pid --disabledNodes 57,59,60
113568 12416 www-data node /var/www/html/plugins/alexaapi/resources/alexaapi.js http://192.168.1.15 amazon.fr alexa.amazon.fr UJtpTkkOLf4BWRCPXi9g9QutkBTfVaw0Hy96E65ibDVur0ZeAgKblngc49NHmYY8 400
91620  1495 root     /usr/bin/python3 /usr/bin/fail2ban-server -xf start
86356  9031 www-data /usr/bin/python3 /var/www/html/plugins/xiaomihome/resources/xiaomihomed/xiaomihomed.py --loglevel error --socketport 55019 --callback http://127.0.0.1:80/plugins/xiaomihome/core/php/jeeXiaomiHome.php --apikey mrgINSpN8ldnDiBKqfSqIgNOkc4nSkJt --cycle 0.05 --pid /tmp/jeedom/xiaomihome/deamon.pid
83708  8924 www-data node /var/www/html/plugins/espeasy/resources/espeasy.js 192.168.1.15 http://127.0.0.1:80/plugins/espeasy/core/api/jeeEspeasy.php?apikey=jEVsX1A6Y4JwJR1gPBUhDI67IL38GQQ2 400
56992  8974 www-data /usr/bin/python3 /var/www/html/plugins/teleinfo/ressources/teleinfo.py --type conso --port /dev/serial/by-id/usb-Cartelectronic_Interface_USB_1_TIC_DA17VOZO-if00-port0 --vitesse 9600 --apikey QE4dvL8M8eUAYeLf3EdDxb2vDAgT2Qan --mode standard --socketport 55062 --cycle 0.3 --callback http://127.0.0.1:80/plugins/teleinfo/core/php/jeeTeleinfo.php --loglevel error --cyclesommeil 0.5 --loglevel error
54812   750 www-data /var/www/html/plugins/jMQTT/resources/jmqttd/venv/bin/python3 /var/www/html/plugins/jMQTT/resources/jmqttd/jmqttd.py
53396  1262 root     /usr/sbin/NetworkManager --no-daemon

Toujours et encore ces memes process qui consomme autant sans rien liberer …

Je laisse tout comme tel? (ou je reboot avant un crash?)

Sebastien

Bonjour
C’est toujours normal pour la mémoire moins pour la swap. Ce qui consomme beaucoup c’est mariadb ça tu ne peux rien y faire ça dépend de ce que tu demandes à ton jeedom et le plugin zigbee qui est obsolète migrer sur jeezigbee serait pas mal.

Merci Loic.
Je desactive le plugin ZigBee pour l’instant afin de voir l’evolution de la conso de memoire / swap.

Sebastien

Bon, meme avec le plugin ZigBee désactivé ça continue …
Je récupère un peu de mémoire suite à la désactivation du plugin mais la chute se poursuit et le swap est toujours autant utilisé.

Dans ce cas essaye de désactiver les plugins jusqu’à trouver le coupable et si tu en trouve pas c’est que tu demande trop de truc à la box pour sa capacité

Ok … pas cool mais bon va falloir que je passe du temp pour voir comme tu dis ce que je lui demande de trop.
Je ne sais pas comment évaluer ça dans Linux…
Bref je retourne à la case départ.

Rien à faire dans Linux tu coupes tous les plugins redémarre attend si la mémoire augmente c’est une une utilisation trop grosse de jeedom pour la capacité hardware sinon tu réactive les plugin a un un en regardant la mémoire au bout de quelques heures jusqu’à trouver le coupable

Ok merci, je m’y mets…
Ça va prendre du temps cet histoire mais je dois le faire.

Ça commence à faire beaucoups de sujets sur la perte mémoire… :face_with_monocle:

Effectivement j’en vois beaucoup aussi des sujets à ce propos…
Le problème c’est de savoir comment identifier la cause et ça c’est juste très difficile !
Surveillance processus, mémoire, etc … ça ne suffit pas à déterminer où sont les limites hardware de ces box hébergeant Jeedom.
Linux ne gère-t-il finalement pas si bien que ça les resources système ?
Moi j’y comprends plus rien… alors j’arrête processus / plugins / scénarios les un après les autres mais rien n’indique un lien spécifique à ce problème de performance et je crois que c’est comme le dis Loïc que le système est peut être simplement surchargé.
Bref c’est pas gagné.

Bonjour
Regarde ta charge CPU, elle est absolument phénoménale !


En comparaison, j’ai une Atlas avec 42 plugins, 194 scénarios, 4776 commandes et….
Je suis entre 0,28 et 0,33 sur une journée !
Sur une smart avec JeeZigbee et quelque appareils + JeeLink, je dépasse jamais les 0,15, et la moyenne sur une journée est à 0,08 …

Bref avoir un CPU a 2/3/4 c’est gigantesque !
(Sachant que 2 veut dire 200% = processeur sous l’eau / il est utilisé au double de ses capacités)

Bref 2 : ton pb n’est peut être pas la mémoire, mais un truc qui utilise le processeur bien plus qu’il ne peut !

Comme dit loic, tu desactives tout.
Tu redémarres, attends 15 minutes (le processeur 15 minutes doit rester en desous de 0,1), tu actives UN plugin, attends 15 min, etc, et tu va trouver le coupable car il y en a un….
Tu pourrais noter dans quel ordre tu actives quoi, puis comparer avec l’historique.

ta charge CPU
pas CPU, juste charge (système) => une valeur haute peut être due à la mémoire, le stockage, réseau … c’est juste un signe que des process attentent une ressource

Ha…
J’en apprends une bonne ! :pray:
(Comme quoi, c’est tout les jours)
On reste d’accord que c’est énorme
:slight_smile: