Vielen Dank an alle meine treuen Leser, Kommentatoren und Verlinker ;) Ohne Euch hätte ich nie so lange durchgehalten. Doch jetzt ist Schluss mit dem WWWorker:

Sascha A. Carlin pflegt diese Website nicht mehr aktiv.

Apache und MySql über die Schulter gesehen

Profiling ist zwar wichtig, doch erst im Praxiseinsatz zeigt sich, was eine Applikation wirklich taugt. Da ist es nützlich, zur Laufzeit ein Auge auf den Webserver zu haben, hier an Apache und MySql dargestellt.

Apache Dank der CustomLog-Direktive kann man ein Log erstellen, das die Anfrage und die Antwortzeit des Webservers beinhaltet:

LogFormat “%U %T” Zeitfresser CustomLog /foo/bar Zeitfresser

Aus der Logformate-Dokumentation: %T: The time taken to serve the request, in seconds. %U: The URL path requested, not including any query string.

Das Log wird in eine MySql-Datenbank importiert (möglichst nicht auf dem Produktionsserver) und ausgewertet. Dazu benötigt man lediglich eine simple SQL-Abfrage:

SELECT url, (SUM(time) / COUNT(url)) AS koeff FROM bots WHERE time >3 GROUP BY url HAVING COUNT(url) >1000 ORDER BY koeff DESC

Zu deutsch: berechne die Zeit, die pro Anfrage benötigt wird. Betrachtet werden dabei nur Anfragen, die länger als 3 Sekunden benötigen und nur solche, die öfter als 1000 mal gestellt wurden. Das Ergebnis ist der Preis, den man pro Anfrage zahlen muss. Je höher desto teurer und schmerzhafter. Jetzt weiß man exakt, welche Dateien Optimierungsbedarf haben.

MySql Was das Zeitfresser-Log für Apache, ist das Slow Query Log für MySql - mit dem Unterschied, das MySql dies sozusagen mitliefert. Per Konfigurationsdatei oder auf der Kommandozeile übergeben, listet das Slow Query Log alle Anfragen an den MySql-Server, länger als per longquerytime definiert laufen. Das Log lässt sich per mysqldumpslow auf der Kommandozeile auswerten - oder im Editor lesen ;)

Mit dem Zeitfresser- und dem Slow Query Log bekommt man widerspenstige Webapplikationen recht schnell in den Griff. Zu beachten ist allerdings, das jede Messung das System ebenfalls belastet. Man sollte nur messen, wenn man bemerkt, das das System träge ist.

One Response to “Apache und MySql über die Schulter gesehen”

  1. WebhostingTech Says:
    September 30th, 2004 at 14:56

    Apache und MySQL über die Schulter gesehen

    (via WWWorker) Profiling ist zwar wichtig, doch erst im Praxiseinsatz zeigt sich, was eine Applikation wirklich taugt. Da ist es nützlich, zur Laufzeit ein Auge auf den Webserver zu haben, hier an Apache und MySql dargestellt.

    Mehr dazu in diesem A…