Donnerstag, den 08. März 2012 22:48 Alter: 6 Monat(e)
Kategorie: Tools
Submitting your vote...
Rating: 5.0 von 5. 1 Stimme(n).
Artikel bewerten.

Seitenaufbau aller Unterseiten messen und auswerten

Durch die Simulation und Auswertung von realen Besucherströmen lassen sich langsame Unterseiten finden und Performanceengpässe aufdecken.


Für einen Kurztest der Geschwindigkeit einer Webseite, oder für einem Belastungstest für ein Setup wird häufig, auch in meinem Alltag, einfach der Apache Benchmark zum Beispiel mit folgendem Befehl

  1. ab -c5 -n1000 hllp://www.domain.tld/


auf die zu testende Seite losgelassen.

Mit dem Parameter -g lassen sich sogar Statistiken erstellen, und mit gnuplot graphisch auswerten.

Die Methode hat aber den Nachteil, dass alle tausend Anfragen auf eine Seite, zum Beispiel die Startseite, losgelassen werden. Das entspricht natürlich nicht dem den alltäglichen Besucherströmen. Einzelnen Unterseiten, die zum Beispiel wegen eingebundenen Erweiterungen langsam sind, ist so schwer auf die Spur zu kommen.

Das Programm Siege stellt Möglichkeiten bereit Besucheranfragen auf Webseiten zu simulieren und auszuwerten. Besonders nützlich ist die Fähigkeit Seitenaufrufe aus einer Liste von URLs zufällig auszuwählen und so Besucherströme auf unterschiedliche Seiten und Unterseiten gleichzeitig simulieren zu können.

Zusammen mit dem Programm wget und ein paar Zeilen Shell-Script lässt sich eine Webseite voll automatisierten Tests unterziehen.

  1. ./siege.sh <domain.tld> <Zeit> <Concurrency>"
  2. fi
  3. ## Zeit auslesen, falls keine uebergeben, wird für 30 Sekunden gemessen
  4. TMP=${#2}
  5. if [ $TMP -eq 0 ]; then
  6.     TIME=30
  7. else
  8.     TIME=$2
  9. fi
  10.  
  11. ## Concurrency auslesen, falls keine uebergeben, werden 15 gleichzeitige Anfragen verwendet
  12. TMP=${#3}
  13. if [ $TMP -eq 0 ]; then
  14.     Concurrency=15
  15. else
  16.     Concurrency=$3
  17. fi
  18.  
  19. ##Liste der Unterseiten erstellen
  20. /usr/bin/wget -r -l7 -nd --spider $1 -o $1_tmp.txt
  21. cat $1_tmp.txt | grep $1 | cut -d " " -f 4 | grep http | sort | uniq > $1.txt
  22. rm $1_tmp.txt
  23.  
  24. ##siege Seiten aufrufen lassen
  25. siege -b -i -t$TIME -c$Concurrency -f $1.txt > $1.log
  26. cat $1.log | awk '{ $3 = $3*100; print $3 }' > $1.log.temp
  27. rm $1.txt
  28.  
  29. ##Ergebnis per Gnuplot visualisieren
  30. echo "set terminal png
  31. set output \"$1.png\"
  32. set xlabel \"Request\"
  33. set ylabel \"ms\"
  34. plot \"$1.log.temp\" with lines title \"Response time\"" | gnuplot
  35.  
  36. ##Logfile erstellen
  37. cat $1.log | awk '{print $3,$8}' | grep '\.' | sort -r > $1.log.temp
  38. mv $1.log.temp $1.log


Unser Script veranschaulicht die Möglichkeiten, indem es:

  1. mit Hilfe von wget eine Liste der Unterseiten einer beliebigen Webseite erstellt

  2. mit Hilfe von Siege einen Lasttest auf die Seite startet,

  3. die Informationen auswertet

  4. und mit Gnuplot eine grafische Auswertung erstellt.

Aus der erhaltenen Informationen lässt sich ablesen, wie schnell im Durchschnitt eine Seite ausgebaut wird, welche Seiten besonders schnell und welche besonders langsam erzeugt werden, und wie stark die Geschwindigkeit beim Seitenaufbau schwankt.

Das kleine Script findet sich unter Downloads, oder am Ende des Artikels.

Zum Beispiel habe ich es verwendet, um einen möglichst praxisnahen Performancevergleich zwischen TYPO3 und Wordpress durchzuführen.

 


Dateien:
siege_01.sh1.1 K
Reiner, 18-09-12 18:28:
Was bedeutet in der Zeile 30 das Kommando siege ?????
Tobias, 18-09-12 18:52:
Hallo Reiner,

siege ist ein Programm für Lasttests über http
http://packages.debian.org/unstable/web/siege
Kommentar schreiben

* Bitte ausfüllen

*

*