Trafficauswertung

  • Verwendete SE: 6-0.395

    Pd-Admin Version: 4.91

    Domains: ~700

    VHosts: ~1600


    Hallo,

    neuerdings lässt sich das Script STATISTIKEN --> Traffic nicht mehr ausführen. Nach ca. 10 Minuten geht es in Gateway Timeout. Die Traffic-tabelle in vadmin hat ca. 1,2mio. Einträge.


    Habt ihr auch solches Verhalten?

  • Meine erste Vermutung ist, dass die DB Query zu lange benötigt, so dass es zu dem Timeout kommt. Während der Ausführung sollte man sich parallel die MySQL Prozessliste anscchauen. Vielleicht findet sich da eine sehr lang laufende Query. Diese kopiert man sich und kann sich die Query separat mit "explain" anschauen und analysieren. Eventuell lässt sich die Query so optimieren.


    Bei mir sind es nur rund 60.000 Einträge in der Tabelle traffic_new. Ich kann ein solches Verhalten nicht reproduzieren.

  • Ich kann keine Query finden die zu lange dauert. Ich vermute die Summe der einzeln abgesetzten Queries dauern zu lange und es kommt zum Gateway Timeout mit dem Webserver.


    Ich habe einen Test gemacht und jeweils die Daten Monat für Monat eingespielt und dann immer die Trafficanzeige geöffnet.


    Bis zum 30.09.2021 enthält die Tabelle 847057 Zeilen und ab da geht die Traffic Anzeige im Pd-Admin in den Gateway Timeout.


    ...


    mysql> TRUNCATE `traffic_new`;

    Query OK, 0 rows affected (0,01 sec)



    mysql> INSERT INTO `traffic_new` (id_user, date, www, ftp, mail) SELECT

    mysql> id_user, date, www, ftp, mail FROM `traffic_new_org` WHERE `date`

    mysql> < '2021-10-01';

    Query OK, 847057 rows affected (2,15 sec)

    Records: 847057 Duplicates: 0 Warnings: 0 ...


    Spiele ich hingegen die Daten nur bis zum 31.08.2021 in die Tabelle ein (742362 Zeilen), dauert das Öffnen der Trafficanzeige im Pd-Admin zwar fast 4 Minuten, aber sie öffnet sich.


    ...


    mysql> TRUNCATE `traffic_new`;

    Query OK, 0 rows affected (0,02 sec)

    mysql> INSERT INTO `traffic_new` (id_user, date, www, ftp, mail) SELECT

    mysql> id_user, date, www, ftp, mail FROM `traffic_new_org` WHERE `date`

    mysql> < '2021-09-01';

    Query OK, 742362 rows affected (1,89 sec)

    Records: 742362 Duplicates: 0 Warnings: 0 ...

  • Ich denke nicht, dass für die Traffic Statistik ein einfaches "SELECT ... date < xxxx-xx-xx" ausgeführt wird. Die Queries werden etwas komplexer sein. Schließlich wird bei Aufruf der Traffic Seite einmal der gesamte Traffic nach Monaten, sowie der Traffic vom aktuellen und letzten Monate, sortiert nach Endkunden, aufgelistet. Beim Top 10 Button wird dies sicher noch komplexer sein.


    Bei xx Endkunden, ~700 Domains, ~1600 vhosts und über 1,2mio Zeilen in der Tabelle traffic_new kann natürlich die Verabreitung bei Seitenaufruf insgesamt einfach sehr lange dauern.

  • Für den Fall, dass das Problem noch andere User betrifft.


    Das Setzen eine Indexes über die Spalten "id_user" und "date" hat die Geschwindigkeit der Abfragen von mehreren Minuten auf ca. 20 Sekunden reduziert, bei ca 1,3 Mio. Zeilen:


    ...

    ALTER TABLE `vadmin`.`traffic_new` ADD INDEX `id_user-date` (`id_user`, `date`);

    ...


    Problem kann somit als gelöst betrachtet werden.

  • Und wer dabei den Error 1067 bekommt:

    Der Defaultwert für Date (0000-00-00) muss durch 1000-01-01 ersetzt werden.

    0000-00-00 wird bei neueren mySQL Versionen nicht mehr als Defaultwert akzeptiert (zumindest wenn der Strict-Mode für Transaktionen gesetzt ist).