Probleme de swap qui diminue au fil des jours jusqu'au plantage de jeedom

Bonjour, je sais qu’il y a deja pas mal de sujet sur ce probleme mais je n’arrive pas à le corriger.
Ma memoire Swap diminue de jour en jour jusqu’au plantage de jeedom. j’ai essayé d’arreter les demon un par un, mais je n’arrive pas à revenir à 100%. la seul solution est de redémarer jeedom tout les 2 jours.
Mon jeedom est instalé sur un raspberry pi 3 B.

la commande « Htop » donne en premiere conssomation « mariadb »


Ma liste de pluging

Est ce que le RPI3 B n’est pas trop juste ? Sinon je suis preneur de conseils pour solutionner le probleme.

Bonjour

Je suppose que la page santé a été donnée après un redémarrage.

Avez vous appliqué les recommandations concernant les log système?
Regarder en faisant les tri sur SystemMaxUse=20M ou journalctl sur le forum.

IL est difficile de donner une réponse c’est fonction de tellement de paramètres.

Je me suis trouvé un jour devant le même problème et j’ai demandé à mon homonyme :wink: un code pour surveiller le swap:

//from claude.ai

$swap = shell_exec("LC_ALL=C free | awk '/Swap:/ { print( $3*100/$2) }'");
$swap = intval(trim($swap));
$scenario->setLog("swap= ".$swap);

$cmdEtat = cmd::byString("#[Tableau domotique][Etat du swap][etat]#");
$prev = $cmdEtat->execCmd(); 
$scenario->setLog("prev= ".$prev);

$cmdEtat->event($swap); // mise à jour de la valeur

$cmd = cmd::byString("#Ma commande telegram pour m'informer du swap.Voir ci-dessous#");

if ($swap > $prev) {
    $message = "L'occupation swap est passée de $prev% à $swap %";
    $cmd->execCmd($options=array('title'=>'Jeedom', 'message'=> $message), $cache=0);
    
    // === EXTRACTION DU SYSLOG ===
    $logOutputFile = '/var/www/html/log/swap_syslog_changes.log';
    
    // Créer l'en-tête du log
    $log_message = "\n" . str_repeat("=", 80) . "\n";
    $log_message .= "=== Changement de swap détecté le " . date('Y-m-d H:i:s') . " ===\n";
    $log_message .= "Swap précédent: " . $prev . " %\n";
    $log_message .= "Swap actuel: " . $swap . " %\n";
    $log_message .= "Différence: " . ($swap - $prev) . " %\n";
    $log_message .= str_repeat("=", 80) . "\n\n";
    
    // Extraire les 5 dernières minutes du syslog

    $syslogExtract = shell_exec("sudo journalctl --since '6 minutes ago' 2>/dev/null");
    $scenario->setLog("syslogextract=".$syslogExtract);
  
    $log_message .= $syslogExtract;
    $log_message .= "\n" . str_repeat("=", 80) . "\n\n";
    
    // Écrire dans le fichier de log
    if (file_put_contents($logOutputFile, $log_message, FILE_APPEND) === false) {
        $scenario->setLog("ERREUR: Impossible d'écrire dans le fichier de log");
    } else {
        $scenario->setLog("Logs syslog sauvegardés dans " . $logOutputFile);
    }
}


Salut,

On a vraiment pas la même configuration mais j’ai passé pas mal de temps sur le sujet, chez moi ça plantait entre quelques heures et 20 jours (à la louche).

Il faut commencer par régler le problème des plugins dont le demon est en python et a été identifiés comme ayant une fuite mémoire.

A première vue tu n’en a pas.

Comme je le disais, on est pas du tout sur la même configuration.

Je suis sur une VM, encore sous Debian 11.x, un swapiness de 10% une DB de 1.8 Go et j’avais alloué 2 Go de RAM à la VM.

Au final, après pleins d’essais, c’est en passant la RAM allouée à la VM à 3 Go que j’ai éliminé le problème.

Ta DB est toute petite par rapport à moi mais je pense que certains plugins sollicitent énormément la DB donc mysql/mariadb et qu’à certains moments il faut plus de mémoire pour faire certains traitements à certains moments et il est possible que 1 Go de RAM + 1 Go de swap ne suffisent pas…

Bonjour,
Je ne suis qu’un utilisateur, mais avoir le swap toujours à 100% n’est pas une obligation.
Mais le swap qui baisse régulièrement indiquerait qu’un ou des plugins génèrent des fuites mémoire ( je ne sais pas comment identifier un plugin qui utilise ou pas Python !).

Dans le sujet suivant, il y a des informations pour optimiser le RPI et comment retrouver le(s) process Python [et donc plugin(s)] qui consomme du swap:

Il restera à faire un script qui relance quotidiennement le ou les plugins concernées.

Le redémarage de jeedom date d’hier à 9h20.
j’ai passé mon swap de 512Mo à 1024Mo mais je sais que ça ne va pas resoudre mon pb juste espacer les reboot.
j’ai pu observer aussi que la conssommation du swap augmentée pendant la nuit, le journée ça reste stable.

Bonjour micheld, oui je sais mon objectif n’est pas d’avoir un swap à 100%, mais qu’il soit stable pour ne pas planter mon serveur.
J ai essayer la methode de loic dans ce forum, mais meme en arretant les demons un par un jusqu’a les arreter tous mais le swap ne revient pas à 100%.

Bonjour Leglaude, je suis désolé mais je ne suis pas un expert, ou je doit mettre ce code et comment m’en servire?

Je viens de faire la modif sur SystemmaxUse=20 avec les codes suivant:

sudo sed -i.bak ‹ s/^#SystemMaxUse=./SystemMaxUse=20M/’ /etc/systemd/journald.conf
sudo sed 's/^#MaxRetentionSec=.
/MaxRetentionSec=1w/ › /etc/systemd/journald.conf
sudo systemctl restart systemd-journald

grep -E « SystemMaxUse|MaxRetentionSec » /etc/systemd/journald.conf

Effectivement, si tous les plugins sont arrêtés et que le swap baisse, le problème serait autre.

Perso, le swap n’est jamais à 100% mais oscille entre 85%-95% avec une base de données de 95Mb (je suis très loin de celle de @Bison :wink:.<)

Avec une augmentation pendant la nuit, aurais-tu des infos sur les activités dans les logs ou la vision en temps réel (en augmentant le nombre de message) ?

Sinon pour être certain que ce n’est pas un plugin, as-tu la possibilité de faire une édition de la page Santé, arrêter tous les plugins sur une nuit et voir ce qui a changé le lendemain ?

Comme l’écrit @Bison, l’augmentation de la mémoire lui a réglé ce problème de plantage.

Perso, j’ai un RPI 3b+ avec un swap de 2048 et un swappiness de 10. Mais il faut obligatoirement être sur un SSD.
Et tous les jours, un script relance plusieurs plugins.

Dans le bloc code d’un scénario qui s’exécuterait toutes les 5 minutes.
Tu peux mettre en commentaire dans un premier temps toutes les lignes commençant par $cmd. Il te suffira de lire les logs de ton scénario et/ou de $logOutputFile . Plus tard et si nécessaire, les lignes échappées peuvent être rétablies et t’avertir par mail (sms, telegram, …) que le swap a été modifié

Bonjour leglaude, merci pour les explications, je vais tester ça. :slightly_smiling_face:

Les logs me donne ça:


J’ai du louper quelque chose.

Non, c’est pas toi. C’est ma faute,j’ai été trop vite. Il manque un virtuel pour stocker la valeur du swap (nom: etat,type:info):

#[Tableau domotique][Etat du swap][etat]#"

Si ça va pas, je t’envoie des saisies d’écran demain, quand je serai sur mon PC

Voilà le virtuel en question qui va stocker le dernier swap lu:


Bonjour, je viens de faire la modif.
image
Maintenant les logs me remonte bien le « prev »

Bonjour Echo, depuis que j’ai fait la modif sur les Log mon swap semble stabilisé, ça fonctionne depuis 7jours. Pour le swappiness, il vaut mieu le regler à 5% ou 10%?

1 « J'aime »

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.