Problème de performance sur dashboard avec beaucoup de graphiques

Pour information je travaille sur ce sujet aujourd’hui, j’ai bien avancé ce matin et j’ai créé une PR :slight_smile:

Mon approche:

Désormais, lorsqu’on enregistre un device où plusieurs fonctionnalités ont a la case « Oui, conserver les états » décochée, je lance des jobs en background qui vont aller nettoyer les états passés, de manière un peu plus smart que ce qui était fait juste que là.

Le job va compter en DB combien il y a d’états / états aggrégés pour chaque feature, puis va nettoyer en petit batch de 1000 les états, afin d’éviter de surcharger la DB. Entre chaque batch, Gladys attend 100ms pour laisser de l’air à Gladys.

Pour cleaner 5 millions d’états, il faut donc 5 millions / 1000 = 5 000 batch.

5 000 * 0.1 = 500 secondes = 8,3 minutes à minima d’attentes entre les batch, si on rajoute 100ms par clean, ça fait 16 minutes pour cleaner 5 millions d’états en arrière plan, de façon non bloquante pour Gladys et en douceur

Côté Gladys, tout job en arrière plan peut-être suivi en direct dans l’onglet « Tâches en arrière plan »:

Ce qui permet de garder une trace de ces tâches, et de suivre leur exécution.

Normalement, l’enregistrement d’un appareil devrait être instantanée, et Gladys ne devrait plus bloquer !

Je vais continuer mes tests sur des plus grosses DB, et voir comment je gère le VACUUM :wink:

La PR:

5 « J'aime »