Continuous Performance Testing
Kommentare

Weihnachten steht vor der Tür und sämtliche Online-Shops werden bald ihre Server ins Schwitzen bringen. Damit der 504-Error nicht auch Hochkonjunktur hat, klärten Kore Nordmann und Manuel Pichler (Qafoo)

Weihnachten steht vor der Tür und sämtliche Online-Shops werden bald ihre Server ins Schwitzen bringen. Damit der 504-Error nicht auch Hochkonjunktur hat, klärten Kore Nordmann und Manuel Pichler (Qafoo) die Zuschauer der IPC-Session „Continuous Performance Testing“ darüber auf, wie sie die Website ihrer Kunden auf großen Besucher-Ansturm vorbereiten.

Die Architektur hinter einer Website besteht aus etlichen Komponenten (Datenbank, Webserver, Frontend-Engine, uvm.), und jede für sich kann unter großer Last zum Flaschenhals geraten. Nordmann und Pichler machten klar, dass Benchmarks alleine nicht ausreichen, um herauszufinden, wie wir unsere gesamte Anwendung optimieren können. Realistische Test-Szenarien müssen her. Doch wie erstellen wir diese und womit setzen wir sie um?

Manuel Pichler (qafoo) erklärt, wie man Performance-Optimierung von komplexen Webservices richtig umsetzt…

Der Auftraggeber liefert uns oft nur vage Zahlen wie „eine Million PIs pro Monat“ oder „30.000 Registrierungen pro Monat“. Diese Daten alleine sind nahezu wertlos, wenn wir unser Testszenario realistisch gestalten wollen. Die beiden Speaker berichteten aus Ihrer Praxis, dass die typischen Peak-Hours oft abends nach Feierabend liegen — sofern der Shop nur national aufgesucht wird. In dieser Zeit liegt der Besucheransturm achtmal über dem Durchschnitt.

Simulierte Besuchermassen mit JMeter

Wir wissen also nun, wie wir mit dem Zahlen umzugehen haben, die uns unser Auftraggeber gibt. Doch ist noch immer nicht geklärt, wo wir so viele Tester hernehmen sollen. Diese müssen wir einfach simulieren. Pichler und Nordmann machen das am liebsten mit JMeter. Es automatisiert Benutzereingaben wie Logins, Klickpfade, Einkäufe, Kommentare und noch viel mehr. Das Tool ist zwar ziemlich aufwändig einzurichten, dafür kann es „einfach alles“, und es ist die einzige Art, realistische Szenarien automatisiert abzuarbeiten.

Doch Nadelöhre finden sich nicht nur auf Software-Seite. Auch die Komponenten der Server Hardware stoßen ab und an an ihre Grenzen, Caches laufen voll, Switches blockieren den Zugriff… der Sys-Admin sollte also vor Eurem Benchmark informiert werden. Seid Ihr bei einem Host-Anbieter, solltet Ihr ihn ebenfalls vorwarnen. Wenn er sich nicht kooperativ zeigt, „dann führt Euren Test einfach einmal aus. Spätestens dann werden sie Euch helfen“, sagt Nordmann.

Daten auswerten mit vmstat

Die Daten aus einem Test, den wir am besten 24 Stunden laufen lassen, können wir mit JMeter-Plug-ins und (unter Linux) mit vmstat auswerten. Läuft der RAM allmählich voll? Wie sehr beeinträchtigt Swapping die Wartezeit für die Besucher? Welches Teilsystem (DB-Server, PHP-Server, Login-Service) frisst die meiste CPU-Zeit und ist am frühesten ausgelastet?

Mit den ermittelten Daten wissen wir, wo wir unsere Anwendung optimieren müssen. Kleine JMeter-Parcours à 30 Minuten könnte man dann theoretisch in die Continuous Integration (ANT, Phing, ABC) integrieren und so nach jedem Build erkennen, ob unsere Änderungen fruchten. Und wenn wir damit fertig sind, und dennoch die Server nicht mithalten, heißt es laut Pichler und Nordmann: „fail gracefully“. Das bedeutet, dass wir uns überlegen müssen, welche Features wir in Lastspitzen deaktivieren können, ohne die Usability unseres Dienstes unter Einbußen zu beschränken. Drosseln wir kontrolliert das Tempo der Seiten, oder weisen wir neue Logins ab?

Lessons learned

In Zeiten von Second Screen Apps, in denen Fernsehwerbung und -Sendungen die Last auf einzelne Websites gerne um das Fünfzigfache steigern, sollte man sich mit Lasttests befassen. Das Know-how bleibt selbst dann relevant, wenn Cloud-Infrastrukturen uns suggerieren, dass sie unendlich viel Power haben. Denn die viel gespriesenen Clouds werden unter Hochlast gegebenenfalls teuer – und bescheren uns zu Weihnachten im Zweifel nichts als eine hohe Rechnung.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -