Leistungsproblem im Dashboard mit vielen Grafiken

Zur Information arbeite ich heute an diesem Thema. Ich bin heute Morgen gut vorangekommen und habe einen Pull Request erstellt :slight_smile:

Mein Ansatz:

Wenn ein Gerät registriert wird, bei dem mehrere Funktionen das Kontrollkästchen „Ja, Zustände beibehalten“ deaktiviert haben, starte ich Hintergrundjobs, die die vergangenen Zustände auf eine etwas intelligentere Weise bereinigen als bisher.

Der Job zählt in der Datenbank, wie viele Zustände bzw. aggregierte Zustände es für jede Funktion gibt, und bereinigt dann in kleinen Batches von 1000 Zuständen, um die Datenbank nicht zu überlasten. Zwischen jedem Batch wartet Gladys 100 ms, um Gladys etwas Luft zu verschaffen.

Um 5 Millionen Zustände zu bereinigen, sind also 5 Millionen / 1000 = 5.000 Batches erforderlich.

5.000 * 0,1 = 500 Sekunden = 8,3 Minuten Wartezeit zwischen den Batches. Wenn man 100 ms pro Bereinigung hinzufügt, dauert es 16 Minuten, um 5 Millionen Zustände im Hintergrund auf nicht blockierende Weise und sanft zu bereinigen.

Auf Gladys-Seite können alle Hintergrundjobs in der Registerkarte „Hintergrundaufgaben“ in Echtzeit verfolgt werden:

Dadurch können diese Aufgaben nachverfolgt und ihre Ausführung überwacht werden.

Normalerweise sollte die Registrierung eines Geräts nun sofort erfolgen, und Gladys sollte nicht mehr blockieren!

Ich werde meine Tests an größeren Datenbanken fortsetzen und sehen, wie ich mit dem VACUUM umgehe :wink:

Der Pull Request: