Marcel Eichner // Ephigenia

  • Home
  • Illustration
  • Code
  • Kontakt

Aktuelle Projekte

Horrorblog.org
jQuery.slideShow
Franklin
code.marceleichner.de

This Blog-Website is built with Harrison!

Blogs & Freunde

Gimmixx
Martin Fleck
Torsten Bergler
Jens Franke
Robokid
Peter Kröner
Polycoder
Coding Horror
Lotterliebe
CodeBalancer
Pseudocoder
Migrador
Dachdeckermeister Peter Arold in Werda, Plauen, Hof und Umgebung La Petite Provence - Pension und Festsaal in Leisnig Piv-Berlin, Immobilienverwaltung Verwaltung Berlin blogoscoop

#498

04.06.2010 12:39
3 Kommentare
Share
  • code
  • script
  • bash
  • shell
  • apache
  • benchmark
  • ab
In einem aktuellen Projekt steht bald ein signifikanter Server-Wechsel an. Um später genau sagen zu können, was das gebracht hat, wollte ich mehrere Teile der Website (verschiedene URIs) mit dem Apache Tool ab zu verschiedenen Tageszeiten, einmal vor Wechsel des Servers und nach Wechsel des Servers, testen. Da ich nicht viel Zeit verschwenden wollte, hab’ ich ein Shell-Script geschrieben das mir wenigstens die Arbeit abnimmt die verschiedenen URIs abzuchecken:
#!/bin/bash
##############################################################################
# Run ab on a list of URIs
#
# Usage:
#   ab_batch.sh
#
# Author: Marcel Eichner // Ephigenia <love@ephigenia.de>
# Date: 2010-06-03
##############################################################################
URL="http://www.horrorblog.org"
SLEEP=30
URIS=(
  "/"
  "/blog/reca-drei-clips-und-red-band-trailer/"
  "/blog/the-crazies-remake-horrorblog-kritik/"
  "/blog/the-crazies-interview-clips/"
  "/blog/the-devils-playground-erste-bilder/"
  "/blog/a-nightmare-on-elm-street-remake-horrorblog-kritik/"
)
date
echo -e "Batch Apache-Benchmarking on n${URL}"
for URI in ${URIS[@]};
do
  echo "uri: ${URI}"
  ab -c 10 -t 60 "${URL}${URI}" | grep -P "(request|second):"
  sleep ${SLEEP}
done

Das liefert dann zum Beispiel folgendes Ergebnis. Die Werte kann man dann in eine Tabelle übertragen und ein Diagram draus machen. Nach dem Server wechseln dann das ganze noch einmal durchführen und schon hat man einen schönen Beweis was der Umzug denn gebracht hat.
Fr  4 Jun 2010 12:15:54 CEST
Batch Apache-Benchmarking on
http://www.horrorblog.org
uri: /
Finished 349 requests
Requests per second:    5.57 [#/sec] (mean)
Time per request:       1794.754 [ms] (mean)
Time per request:       179.475 [ms] (mean, across all concurrent requests)
uri: /blog/reca-drei-clips-und-red-band-trailer/
Finished 588 requests
Requests per second:    9.79 [#/sec] (mean)
Time per request:       1021.170 [ms] (mean)
Time per request:       102.117 [ms] (mean, across all concurrent requests)
uri: /blog/the-crazies-remake-horrorblog-kritik/
Finished 407 requests
Requests per second:    6.78 [#/sec] (mean)
Time per request:       1474.255 [ms] (mean)
Time per request:       147.425 [ms] (mean, across all concurrent requests)
uri: /blog/the-crazies-interview-clips/
Finished 397 requests
Requests per second:    6.60 [#/sec] (mean)
Time per request:       1514.682 [ms] (mean)
Time per request:       151.468 [ms] (mean, across all concurrent requests)
uri: /blog/the-devils-playground-erste-bilder/
Finished 331 requests
Requests per second:    5.50 [#/sec] (mean)
Time per request:       1816.657 [ms] (mean)
Time per request:       181.666 [ms] (mean, across all concurrent requests)
uri: /blog/a-nightmare-on-elm-street-remake-horrorblog-kritik/
Finished 506 requests
Requests per second:    8.43 [#/sec] (mean)
Time per request:       1185.792 [ms] (mean)
Time per request:       118.579 [ms] (mean, across all concurrent requests)

Für Verbesserungsvorschläge bin ich wie immer offen! Kommentiert einfach!

Kommentare

04.06.2010 23:40
Caspar Clemens Mierau
Hey,

in der Tat ist "ab" nur für den Test einer Adresse geeignet. Möchte man mehrere Adressen testen, bietet sich eher "siege" an, dass folgende Syntax verwendet:

$ siege -f urls.txt

In der Datei "urls.txt" kann einfach eine Liste von URIs stehen.

siege kann zudem mit den üblichen Parametern (gleichzeitige Nutzer, etc) konfiguriert werden und erfreulicher Weise über den Parameter "-i" auch die Aufrufe randomisieren, was für echte Benchmarks sinnvoll ist.

Grüße!
05.06.2010 00:52
Marcel Eichner
hast du noch einen tipp für die chronolische test-abfolge? tests über einen zeitraum hinweg?
05.06.2010 17:37
Caspar Clemens Mierau
Hey,

Du meinst quasi ein permanentes externes Performance-Monitoring? Wirklich "billig" ist die Arbeit mit "munin", das man sehr leicht skripten kann. Damit kannst Du lokale Dienste aber auch externe Sachen prüfen und kriegst zwar nicht hübsche aber aussagekrafätige Verlaufsgrafiken.

Bleeding edge aber komplex ist Reconnoiter: https://labs.omniti.com/trac/reconnoiter - das sehe ich mir in den nächsten Tagen mal genauer an. Das wird für Deine Zwecke aber sicher etwas zu viel sein.

Ansonsten gibt es natürlich auch Dienste wie Serverguard24 und Pingdom, die einem als kommerzielle Anbieter ein externes Monitoring in der Regel mit Auswertungen anbieten.

Wenn Du auf der Konsole etwas basteln willst, kannst Du mit ab/siege/curl/wget und dem beliebten rrdtool arbeiten.

Kommentar hinterlassen

Deine E-Mail Adresse wird nicht veröffentlicht. Wenn Du bei gravatar ein Bild für deine E-Mail Adresse hinterlegt hast, wird dieses neben Deinem Namen angezeigt.

marceleichner HTML5 Harrison Theme (Validate Source), © 2010 by Ephigenia M. Eichner, Impressum