[Résolu] Plantage de Gladys par moment (table pleine / ER_RECORD_FILE_FULL: The table 'event' is full)


#21

Salut @Retlaw,

Tu peux vérifier (on ne sait jamais…) que tu as assez d’espace sur ta partition ?
df -h
Tu ne devrais pas avoir de “100%” dans la colonne Uti%.

Puis, après s’être connecté à mySql :
SHOW GLOBAL VARIABLES LIKE 'innodb_data_file_path';

Tu devrais avoir ça:
image

En cas de suppression de ligne, ces dernières sont temporairement copiés dans le fichier ibdata1, au cas où tu changes d’avis. avec “autoextend”, il doit grandir tout seul si besoin.

Si tout est ok, il reste cette méthode, un peu plus bourrin :


(https://dev.mysql.com/doc/refman/8.0/en/delete.html)

mais là, ça commence à dépasser mes connaissances sur les conséquences dans Gladys (ne sait-on jamais !)
Si un expert BDD (@Pti_Nico ?) passe par-là :wink:


#22

Salut @Retlaw,

Je pense que le dernier post de @piznel pourrais répondre à ton problème.

Sinon, j’ai trouvé ça qui pourrais t’aider :


#23

Alors, je pense que tu as touché du doigt quelque chose @piznel car j’ai du 100% voilà ce que j’obtiens avec df -h

Et avec SHOW GLOBAL VARIABLES LIKE 'innodb_data_file_path'; j’ai ça :

image

Avant d’aller plus loin, j’attends déjà vos retour sur ces premiers constats histoire de savoir exactement ce que je dois faire : méthode @piznel ou @Pti_Nico (car j’ai pas envie de tout faire planter :slight_smile:)


#24

Salut @Retlaw,
J’ai eu un problème identique où la carte était plaine dû aux events a répétitions.
Les logs sont sauvegardés en 2 fois (enfin la plupart), les events dans la base SQL, mais également en local par pm2.

tape pm2 flush

cela te supprimera tous les logs que pm2 sauvegarde depuis que tu as installé Gladys sur ta carte et ensuite fait un purge également par le biais d’un script comme @piznel ta indiqué, cela devrait te libérer un peut de place.

Mais je pense que cela va être à terme un problème pour beaucoup d’installation et avec les périphériques zwave et autres qui retournent énormément de logs.

A+


#25

Salut @Jap93 !

Alors, j’ai essayé pm2 flush suivi d’un reboot, voici les logs obtenus :

pi@gladys:~ $ pm2 flush
[PM2] Flushing /home/pi/.pm2/pm2.log
[PM2] Flushing
[PM2] /home/pi/.pm2/logs/gladys-out-0.log
[PM2] /home/pi/.pm2/logs/gladys-error-0.log
[PM2] Flushing
[PM2] /home/pi/.pm2/logs/gladys-xiaomi-home-out-1.log
[PM2] /home/pi/.pm2/logs/gladys-xiaomi-home-error-1.log
[PM2] Flushing
[PM2] /home/pi/.pm2/logs/gladys-bluetooth-out-2.log
[PM2] /home/pi/.pm2/logs/gladys-bluetooth-error-2.log
[PM2] Logs flushed

Malheureusement, après ça, le script entraine toujours les mêmes logs d’erreur… :frowning_face:

J’attends donc le retour de @piznel et @Pti_Nico pour savoir exactement quelle méthode appliquer.

Edit :

Ah, ben finalement, après une deuxième tentative de pm2 flush suivi de 2 reboot consécutifs (2ème reboot électrique car le premier via sudo reboot n’avait pas fait avancé les choses, donc je me suis dit qu’en testant la méthode “brute” ça changerait peut être quelque chose…) , le script de @piznel a finalement renvoyé ce log : 0|gladys | number of event lines deleted : 3157242

Nombre d’event après tout ça : 0|gladys | [ RowDataPacket { 'COUNT(id)': 47722 } ] :smiley:

Reste à voir si Gladys ne plantera pas dans la semaine à venir (j’en était arrivé à un plantage par semaine), ce qui confirmera que mon problème venait bien de la table pleine.

En tout cas, merci pour votre aide @Jap93, @piznel et @Pti_Nico !! :+1:

Edit 2 :
Par contre, je pense à un truc : si les logs viennent à terme saturer la mémoire au poins de faire planter Gladys, il faudrait voir avec @pierre-gilles pour instaurer une purge régulière effectuée nativement pour prévenir ça non ?


#26

Yes, on en a parlé lors du meetup dev pour la v4, je pense qu’on va mettre des options native genre “historisation: 1 semaine/1 mois/3 mois/6 mois/tout” avec un default, après à voir si on ajoute ça dans la v3 aussi ou si on garde ce chantier pour la v4.