Benchmarking und Load-Tests von Webservern

Help! My boss wants me to load test our web app titelt die Dokumentation von jMeter, dem vermutlich bekanntlichtesten Werkzeug für die Analyse von Webserverleistung. Ein kurzer Blick offenbart recht schnell, dass man nicht mal eben so nebenbei einen Lasttest eines Webserver bzw. einer Webseite durchführen kann, und sofort aussagekräftige Werte hat.

Wichtigste Frage, bevor überhaupt ein Test stattfinden kann, ist, für wie viele Benutzer ein Server dimensioniert wurde und wie viele Benutzer durchschnittlich erwartet werden. Es gibt bei den Tests einen Unterschied zwischen Benchmarking und Lasttests. Bei einem Benchmark will man herausfinden, wie schnell ein Server antworten kann. Das kennt manch einer aus den Balkendiagrammen, die die Geschwindigkeit neuer Computer gegenüber denen aus dem Vorjahr darstellen. Lasttests hingegen werden häufig auch genutzt um herauszufinden, ab wann ein Server in die Knie geht, wo eine Leistungsgrenze ist. Ähnlich wie beim Sporttest beim Arzt, wenn man mit hochrotem Kopf auf dem Ergometer sitzt und gegenüber der Sprechstundenhilfe nicht zugeben will, dass man eigentlich schon seit 85 Watt Belastung außer Puste war, aber dennoch den Ehrgeiz hat, auch die 185 noch für fünf Minuten zu überstehen.

Die Interpretation der Ergebnisse ist mitunter etwas schwierig, muss man sich vor dem Test doch im Klaren sein, was man eigentlich messen möchte. Einerseits kann es also darum gehen, eine Aussage über die Leistungsfähigkeit eines Systems zu treffen. Das würde in etwa so klingen:

Im Schnitt kann der Server eine Million Anfragen am Tag abarbeiten, vorausgesetzt, dass sie sich exakt gleich über den Tag verteilen und auch keine komplexeren Anfragen, als jene aus dem Test darstellen.

Andererseits kann man aber auch einen Lasttest verwenden, um zu sehen, wo eventuell Fehler in der Programmierung einer Seite oder der Konfiguration von Serverkomponenten sind. Wo liegen die Schwachstellen eines Systems: in der Datenbank, der Anwendungslogik oder am Load-Balancer davor?

Es sollte jedem klar sein, dass ein Leistungstest nur dann sinnvoll ist, wenn ein Server nicht bereits produktiv eingesetzt wird. Führt man im Live-Betrieb einen Lasttest zum Beispiel gegen amazon.de durch, dann heißt das DOS und ist nicht legal (es sei denn natürlich, dass man der Eigentümer von amazon.de wäre, aber dann wäre es tatsächlich hirnverbrannt, seine eigene Seite vorsätzlich abzuschießen).
Ganz abgesehen davon sind die Testergebnisse auch überhaupt nicht aussagekräftig, da ja die anderen Anfragen nicht gesteuert werden und somit der Statistik entkommen.

Anleitungen für das Testen von Webseiten gibt es zuhauf im Internet. Load testing for webservers von Lukas Beeler sei hier stellvertretend genannt. Aber einen Test durchzuführen, ohne sich mit dem zu testenden System zumindest ansatzweise auszukennen, ist wenig zielführend.

Die verfügbaren Werkzeuge sind zahlreich. Neben apache benchmark und siege gibt es natürlich auch noch Programme, die komplexere Testszenarien unterstützen. Hierzu zählt beispielsweise Selenium.

Eine (etwas veraltete) Übersicht über Linux Test Tools bei SourceForge bildet generel einen ganz guten Einstieg ins Thema Testing unter Linux-Systemen.

Prinzipiell ist es mittlerweile nahezu ein Kinderspiel geworden, die verfügbaren Programme zum Test zu nutzen und ein paar Zahlen zu generieren. Allerdings ist die Interpretation der Ergebnisse nicht ganz leicht und abhängig von der Testkonstellation. Mit ein wenig Geduld und Spucke kann man sich aber sehr einfach in das Thema einarbeiten und dann auch aussagekräftige Analysen von Servern und Seiten durchführen.

Softwareliste:

Weiterführende Links:

Author image
Blogging since 2003 about life, tech, yoga. Passionate about the details and eager to know more. Systems theory meets empathy.
Bochum. Germany.
top