AndiLeni / statistics

Statistik Addon zur Erfassung von Seitenaufrufen. Für das CMS Redaxo.
MIT License
32 stars 5 forks source link

Performance-Probleme #115

Open iceman-fx opened 7 months ago

iceman-fx commented 7 months ago

Hi, aktuell braucht der Aufruf der Statistiken im BE (Statistiken oder Seitenaufrufe) bei Webseiten mit vielen Besucher sehr sehr lange (> 15sek.).

Grund liegt wahrscheinlich an den massigen Einträgen, welche in den Tabellen immer komplett geladen werden. Bsp: ~1500 Einträge bei den Seitenaufrufen ~90000 Einträge bei den Statistiken > Ausstiegsseiten Und das nur bei Ansicht der letzten 30 Tage.

Wäre es daher nicht sinnvoller, wirklich nur die Anzahl der Daten zu laden, welche auch angezeigt werden, also z.B. 20 Stk. ? Die anderen kann man dann ja per Ajax oder URL-Aufruf (nach)laden.

Klar ist es aktuell bequem, die Tabelle so schnell neu sortieren und durchschalten zu können (es ist ja alles schon geladen). Aber bis dahin dauert es gefühlt eine Ewigkeit - erst recht, wenn man dann noch bei den Seitenaufrufe einzelnen URLs entfernen möchten.

AndiLeni commented 7 months ago

@iceman-fx Kannst du mit dem debug addon testen, wie lange die datenbank abfragen dauern wenn die seiten aufgerufen werden?

iceman-fx commented 7 months ago

Sagt Dir dies etwas: 1

AndiLeni commented 7 months ago

Ja, danke! Wie viele Tabellenzeilen hat denn rex_pagestats_visits_per_url bei dir?

iceman-fx commented 7 months ago

32 241 (~9 MB)

AndiLeni commented 7 months ago

Mhmm, ich habe gerade bei meiner Seite nachgesehen. Die hat dort knapp 25.000 Einträge, benötigt für die datenbankabfrage aber nur einen Bruchteil der Zeit die bei dir benötigt wird.

image

Eventuell liegt das Problem eher an der Verbindung zu deiner Datenbank. Ansonsten kann ich mir das Verhalten auf die schnelle nicht erklären ohne tiefere Analyse.

iceman-fx commented 7 months ago

Andere Installationen auf dem gleichen Server, aber mit wesentlich weniger Daten, laden ruckzuck. Nur bei diesen massiven Daten braucht es lange.

iceman-fx commented 7 months ago

Wo finde ich denn im Code die Stellen, an denen die Menge ausgelesen wird? Dann könnte ich es mal auf 20 begrenzen und schauen, ob es dann schneller lädt.

AndiLeni commented 7 months ago

Das passiert einmal hier: https://github.com/AndiLeni/statistics/blob/cbb25d956b686090dbca9cd508109eb6b890f6f4/lib/Pages.php#L46 in der Funktion und hier. https://github.com/AndiLeni/statistics/blob/cbb25d956b686090dbca9cd508109eb6b890f6f4/lib/Pages.php#L105

Wobei vermutlich der erste Link relevant sein dürfte für dich.

iceman-fx commented 3 months ago

Moin. Für was wird eigentlich die Tabelle rex_pagestats_sessionstats genutzt?

Diese ist bei mir innerhalb von 8 Monaten bereits auf 160 MB angestiegen und scheint den Aufruf teilweise mit zu bremsen.

AndiLeni commented 3 months ago

@iceman-fx die Tabelle pagestats_sessionstats wird genutzt um die "letzte besuchte Seite", "Anzahl besuchter Seiten" und "Besuchsdauer" pro Sitzung des Besuchers zu erfassen.

iceman-fx commented 3 months ago

Also schon sehr wichtig.

Habe jetzt erst einmal alle Daten die älter sind als 3 Monate aus der DB gelöscht, damit man wieder ins Addon rein kommt. Vorher gab es einen Abbruch, weil weniger als 270MB memory_limit verfügbar ist und damit die immensen Daten nicht ausgelesen werden können.

alxndr-w commented 1 week ago

Hierzu aus #126

Folgende Optimierungen sind auf Datenbankebene möglich: