Votre avis les experts sur mes plantages

Bonsoir à tous,
Je ne sais pas dans quelle catégorie mettre mon message.
Je galère depuis ma migration en 4.3.12 (venant de 4.1.28)
J’ai installé un Buster, fais les upgrades, installé jeedom en 4.3.12, remis mon backup 4.1.28 et fais la migration en 4.3.12.
Depuis rien n’est stable, j’ai des ralentissements énorme, des plantages complets.
Ayant par la même occasion installé et migré des équipements avec jmqtt, j’ai un temps soupçonné un pb de ce coté là. Soit une erreur de ma part, soit une cohabitation avec un autre plugin, bref je doutais de tout.
Bad a regardé un soir, réinstallé les dépendances et celle d’openzwave qui par une malheureuse mise à jour de l’os de ma part ne démarrait plus.
Le système ayant retrouvé une charge acceptable, j’ai installé mqtt manager et zwavejs et j’ai fais ma migration d’openzwave vers zwavejs.
Laborieusement, mais c’est fait et j’ai supprimé openzwave de mon installation.
Ayant toujours la mémoire suffisante dans santé qui passe en rouge et qui grimpe inexorablement et plante, j’ai hier installé Bulleyes sur une Emmc neuve et remis la sauvegarde de la 4.3.12 en me disant je repars sur un Os récent, sans python2 et tourné vers l’avenir contrairement à Buster.
Et c’est pareil, la mémoire suffisante grimpe sans cesse en quelques heures et ça fini par planter Jeedom et l’Os, plus d’accès en ssh. Seul un reboot physique redonne de la vie.
Bad soupçonne un pb de base de données, sauf que moi je n’y connait rien.
La page vérification BD de jeedom, tout est en vert, le nettoyage de la bd passe bien et ne change rien.
Je vous mets les derniers logs je pense qui doivent être ceux des derniers événements avant plantage si ça vous parle.
Si on a ici des experts bd ou système qui peuvent m’aider ou intervenir sur mon jeedom ce serait sympathique.
Je suis sur Odroid N2+ 2GO sur une EMMC neuve et j’en ai testé 3.
Après un reboot :


Dans les packages système j’ai des packages incompatibles avec l’Os, grave ou pas grave je ne sais pas mais mais rien pour corriger.

Et la bd tout est vert.

listener_execution.txt (7,2 Ko)
http-2.error.txt (15,8 Ko)

Bien cordialement

Peux tu aussi regarder la taille de tes tables en BD ?
Reglages >> systeme >> config >> _OS/BD >> admin base de données >> Taille

Norbert

et un

select cmd_id, count(*) as count from historyArch group by cmd_id order by count desc 

tu sais ce qu’il y a dans conso_teleinfo_save, tu as essayé d’arrêter le plugin teleinfo ?

Edit : erreur sur la commande !

select cmd_id, count(*) from historyArch

Je pense que c’est le plugin suivi conso, je n’ai pas teleinfo installé.
Dans le doute j’ai désactivé suiviconso depuis 2 jours ayant lu sur le forum qu’il était gourmand en bd
Je peux d’ailleurs vider la table si nécessaire, je m’en fou de l’historique de mes consommations.

Que donne la commande que je t’ai transmise (et que j’ai modifié ensuite)?

La table historyarch me semble assez grosse …tu as bcp de commandes historisees ? Et si oui la purge se fait a quelle frequence?
Des que je suis sur un pc je peux te fournir un scenario qui liste toutes les commandes historisees et affiche la duree de rentention

Update
Avec ce bloc code tu peux lister toutes les commandes de ton jeedom qui sont historisées et combien de temps … regarde le soucis vient peut etre de là (moi c’était le cas)

foreach(jeeObject::all() as $jeeobj) {
  $scenario->setLog('Obj :' . $jeeobj->getName());
  foreach($jeeobj->getEqLogic() as $eqLogic) {
  //foreach(eqLogic::byType($nomPlugin, true) as $eqLogic) {
      $aCmd=$eqLogic->getCmd();
      foreach($aCmd as $cmd) {
          if ($cmd->getIsHistorized()) {
            	$scenario->setLog('  - ' .$eqLogic->getName());
              	$scenario->setLog(' 	-> ' . $cmd->getName() . '| historized : ' . $cmd->getIsHistorized(). '|'. $cmd->getConfiguration('historyPurge'));
                //$cmd->setIsHistorized(0);
                /*
                if ($cmd->getConfiguration('historyPurge') == '') {
                  $cmd->setConfiguration('historyPurge','-6 month');
                  $cmd->save();
                  $scenario->setLog('    -> MAJ durée de purge a 6 mois ');
                }
                */
          }
      }
  }
}

Bonjour à tous,
Ce matin au réveil.

Bonjour,
Voilà le résultat du scénario.
scenario306.log (13,0 Ko)

il y a trop de résultat la log est tronqué… j’ai modifié le script pour ne rien perdre

$nb=0;
$aresp=array();
foreach(jeeObject::all() as $jeeobj) {
  $scenario->setLog('Obj :' . $jeeobj->getName());
  foreach($jeeobj->getEqLogic() as $eqLogic) {
  //foreach(eqLogic::byType($nomPlugin, true) as $eqLogic) {
      $aCmd=$eqLogic->getCmd();
      foreach($aCmd as $cmd) {
          if ($cmd->getIsHistorized()) {
            	array_push($aresp,array('eqName' =>$eqLogic->getName() , 'cmd'=> $cmd->getName(), 'isHistorize' => $cmd->getIsHistorized(), 'historyPurge'=> $cmd->getConfiguration('historyPurge')));
            	$nb++;
                //$cmd->setIsHistorized(0);
                /*
                if ($cmd->getConfiguration('historyPurge') == '') {
                  $cmd->setConfiguration('historyPurge','-6 month');
                  $cmd->save();
                  $scenario->setLog('    -> MAJ durée de purge a 6 mois ');
                }
                */
          }
      }
  }
}
$scenario->setLog('Nb : ' . $nb);
$scenario->setLog('Response : ' . json_encode($aresp));

Normalement dans la log on doit voir

nom de la commande |historisé ou non | délai de purge

dans ta log on voit qu’il n’y a pas de délai de purge (tu dois être en illimité)… le problème vient peut etre de là

	-> 502000015276-2 Tension| historized : 1|

Avec la requete de @ngrataloup on voit que 3 commandes sortent du lot > 1 500 000 enregistrements


tu peux passer cette commande pour savoir a quoi elle correspondent

$scenario->setLog('Cmd : ' . cmd::byId(14152)->getHumanName());
$scenario->setLog('Cmd : ' . cmd::byId(3196)->getHumanName());
$scenario->setLog('Cmd : ' . cmd::byId(16455)->getHumanName());

Regarde leur partie historisation, réduit là et purge … ou purge directement dans la base historyArch et regarde comment se comporte ton OS apres

1 « J'aime »

Tu peux déjà regarder la gestion de l’historique pour les 4 ou 5 premières commandes
Pour avoir la commande correspondante : outils >> recherche >> rechercher par ID

Ensuite, verifier pour les commandes les paramètres suivant :

→ et attendre l’archivage qui a lieu a nuit pour voir l’impact sur le nb de lignes de la base

EDIT : je n’avais pas vu que @chris94440 te proposait peu ou prou la meme chose :wink:

1 « J'aime »

scenario306-2.log (64,0 Ko)

Toutes te commandes historisées ne semble pas avoir de purge …
en décommentant le bloc


                if ($cmd->getConfiguration('historyPurge') == '') {
                  $cmd->setConfiguration('historyPurge','-6 month');
                  $cmd->save();
                  $scenario->setLog('    -> MAJ durée de purge a 6 mois ');
                }

Tu vas forcer une purge à 6 mois pour toutes les commandes … cela est a mon avis suffisant … ou pas à toi de voir.
Tiens nous au courant demain une fois la purge des 3/4 premières commandes effectuées

Ok, désolé du temps de réponse, j’ai du rebooter c’était infernal de lenteur.
J’ai identifié les 5 premiers id et ils étaient sans raison valable à Purge Jamais, j’ai passé à 1 mois.
Par contre la taille n’a toujours pas baissé, il faut attendre cette nuit ou j’ai une action manuelle pour forcer la purge ?

… Oui, l’archivage passe dans la nuit.
Tu dois pouvoir forcer le lancement via le moteur de tache (tache history/archive)

Effectivement c’était 5h du mat, je viens de la lancer manuellement, c’est En cours …

Fait :


Je vais continuer de vérifier et modifier la dizaine d’Id en tête du classement et donc suivre si ça améliore le système, de toute façon ç’était stupide de conserver cet historique de données.
En fait l’historique est mis à Jamais par défaut et surement comme beaucoup je ne vais jamais modifier la valeur par défaut. Quelque soit l’impact su mon pb actuel, à l’avenir je ferais cette vérification à chaque inclusion.

J’ai passé un coup de ton code pour limiter le max à 6 mois, c’est effectivement surement suffisant et devrait être sans doute par défaut.

Merci à vous 2, je vous tiendrais au courant si ça reste stable aujourd’hui, en espérant une bonne nouvelle. Je part en déplacement la semaine prochaine et je voudrais bien laisser une jeedom stable à mon épouse. Même si tout est pilotable manuellement et qu’on peut s’en passer de l’automatisme.

Salut tous,

Juste en passant, rien a voir avec la solution, mais parce que je suis tombé une fois dessus par hasard,

Pour visualiser toutes les commandes historisées avec le type de lissage et le temps de purge, modifiable in situ :

=> Menu Analyse => Historique.
Dans l’onglet historique en face de commande, cliquer sur configuration.

Ca ouvre une modale avec la conf de toutes les commande, c’est filtrable et sortable en plus de modifiable.

1 « J'aime »

Bonjour et merci,
Je n’avais jamais été voir là dedans :slight_smile:
Pratique, je mets dans ma Note : Astuces