FreifunkFranken / fff-monitoring

Freifunk Franken Monitoring
https://monitoring.freifunk-franken.de/
9 stars 12 forks source link

Löschen der Statistik blockiert DB, wenn nicht im Cache #97

Closed adschm closed 6 years ago

adschm commented 6 years ago

Ich habe nachts einen restart gemacht. und um 4:02 löscht die VM die alte statistik. die war nicht mehr im cache und dadurch musste der die komplette db von der hdd lesen. Das hat ca. 20 min gedauert und solange war die db gelockt, sodass nicht geschrieben werden konnte und manche Router dupliziert wurden (interessanterweise nur V2 und auch nur einzelne).

Exceptions wurden geloggt, aber die Router sollten sich nicht multiplizieren.

Sollte im Code abgefangen werden!

adschm commented 6 years ago

Runtimes wenn Frisch gelöscht (keine Daten zu Löschen): --- Delete stats: 3.9459452629089355 seconds --- --- Delete neighbor-stats: 5.37498927116394 seconds --- --- Delete netif stats: 25.54477071762085 seconds --- --- Delete events: 0.06570601463317871 seconds --- --- Total duration: 34.93512797355652 seconds ---

Runtimes mit Daten von 12 Stunden: --- Delete stats: 5.213935613632202 seconds --- --- Delete neighbor-stats: 8.972987413406372 seconds --- --- Delete netif stats: 92.83474469184875 seconds --- --- Delete events: 0.02640223503112793 seconds --- --- Total duration: 107.28229260444641 seconds ---

Schlussfolgerungen:

Ursache des Problems:

Maßnahmen (umgesetzt):

Weitere Ideen:

adschm commented 6 years ago

Weitere Maßnahmen: Umstellung der stats von DATETIME auf INT (timestamp, Konvertierung in python) https://github.com/FreifunkFranken/fff-monitoring/commit/f07757014743c6b0ea5bdf099f7ceeef5962a106 Verringerung der Wartezeit zwischen DELETE und INSERT INTO (Router-Verdoppelung): https://github.com/FreifunkFranken/fff-monitoring/commit/ecf7002f51f39f24cc5e519576962f69de727064

adschm commented 6 years ago

Die Neuordnung der Primary Keys scheint die Lösung für die Deadlocks zu sein. Beobachte ...

adschm commented 6 years ago

Deadlocks treten nicht mehr auf. Die Lösung war die Änderung der Primärschlüssel, sodass 'time' jeweils das ERSTE Feld im Primärschlüssel ist: https://github.com/FreifunkFranken/fff-monitoring/commit/3b41a6765af71646c6265f432cc341b835bddd1e

Zusätzlich müssen noch Keys für die router-id gesetzt werden, damit die Routerdetailseite schnell lädt: https://github.com/FreifunkFranken/fff-monitoring/commit/ded12db357f4e319b30ad2d2acd72511530fe8a3