Massive Probleme mit dem Archivjob/Löschvorgang

Hallo zusammen,

einmal jährlich löschen wir alle alten Berichte und Statistiken. Dieses Jahr ist damit das komplette Jahr 2010 dran. Wir haben aktuell massive Probleme mit dem Löschvorgang. Der Job läuft sehr lange. Ich muss ihn jeden Morgen wieder anhalten, weil der load auf dem Server auf über 100 steigt und unsere Internetauftritte damit nur sehr langsam aufgerufen werden können. Nach dem abbrechen des Löschvorgangs sind dann immer die Tabellen piwik_log_link_visit_action und piwik_log_action als crashed markiert. Ein “myisamchk” behebt das dann wieder, aber am nächsten Tag wiederholt sich dann das ganze Spiel.

Datenbankgröße: ca. 40GB
Piwik: 1.9.2
Auftritte: ca. 150

Was kann ich tun?

Markus

Der Löschvorgang von so vielen Datensätzen ist für die Datenbank recht aufwendig. Bitte versuchen Sie, kleinere “Häppchen” zu löschen bzw. nicht das ganze Jahr auf einmal anzugehen.

Ich habe jetzt versucht lediglich 10 Tage zu löschen. Der Vorgang lief mehrere Stunden “problemlos”. Dann hatte ich über 600 Einträge in der MYSQL Prozessliste. Ich musste wieder abbrechen, weil die Auftritte dadurch extrem langsam wurden. Irgendwie komme ich nicht weiter. MYSQL Connections steht auf 1000.

1000 ist wahrscheinlich zu viel. Läuft vielleicht irgendwo der Speicher über, sodass der Server das swappen anfängt? Dann geht gar nichts mehr. Bitte das mal zu überprüfen mit z.B. “htop”. Was für eine Version von MySQL ist im Einsatz?

Interessant wäre noch zu wissen, welche Abfragen (von Piwik) in der Prozessliste stehen. Sind das DELETEs, oder SELECTs?

Aktuell hab ich wieder das gleiche Problem. Im Moment läuft “scheduling tasks”. Screenshots habe ich angehängt. Die Datenbank antwortet praktisch nicht mehr. Ich musste “scheduling tasks” abbrechen.

MySQL-Version: 5.1.49

Soll ich die mysql connections runtersetzen?
Mysql-slow.log hat keine Einträge zu dieser Zeit. Geswappt hat er nicht, aber die MySQL-Prozessliste war voll. Siehe Anlage.

Im Screenshot tauchen nur die normalen Abfragen auf, die Piwik während des Trackens verursacht. Die “bösen” Abfragen müssten noch irgendwo anders laufen.
Weitere Möglichkeiten:

  • Während des (initialen) Löschvorgangs das Tracking deaktivieren (per Konfig)
  • die log_visit-Tabelle testweise auf InnoDB umstellen; Das löscht zwar nicht sehr schnell, aber sperrt nicht die ganze Tabelle dabei. Eventuell hilft es auch, den “innodb_buffer_pool” zu erhöhen.

Bitte um Feedback, wie das gelaufen ist! - Viel Erfolg :slight_smile:

Grüße
Peter

Die “böse” Abfrage konnte jetzt identifiziert werden. Es war “optimize table”.
Siehe http://dev.piwik.org/trac/changeset/7738

Den Patch muss ich allerdings erst noch testen.

Gruß

Markus