Tipps und Tricks zur Durchsatzberechnung
Immer wieder stoßen wir in Projekten, in denen wir Kundensysteme auf Funktionsfähigkeit bei hohen Lastanforderungen überprüfen, auf die gleichen Fragen. Zwei konkrete Fragen, mit deren Beantwortung wir beauftragt waren:
- Ist eines der größten deutschen Onlineshop-Systeme mit den zu erwartenden Vorbestellungen bei Einführung eines neuen Gerätes überfordert?
- Kann ein Backendsystem eines Logistiksystems mit der erwarteten Zustellmenge vor Weihnachten umgehen?
Dabei gibt es häufig Verständnisprobleme bezüglich der Unterscheidung zwischen technischem und fachlichem Durchsatz. Der technische Durchsatz ist die Anzahl der tatsächlich durchgeführten HTTP-Requests pro Zeiteinheit. Der fachliche Durchsatz ist die Anzahl der pro Zeiteinheit komplett durchgeführten Geschäftsprozesse. Diese bestehen im Normalfall aus mehr als einem HTTP-Request. Die Unterscheidung ist daher sehr wichtig, da man von den Fachseiten Aussagen zum gewünschten fachlichen Durchsatz erhält, von den Entwicklern und Betreibern die Aussagen zum möglichen technischen Durchsatz erhält.
Nehmen wir an, ein fachlicher Prozess auf einer Website besteht aus folgenden einzelnen HTTP-Requests:
1. Schritt: Anmeldung2. Schritt: Klick auf ein Produkt im Shop.
3. Schritt: Übernahme des Produkts in den Warenkorb.
4. Schritt: Einkauf abschließen.
Nach jedem einzelnen HTTP-Request macht der durchschnittliche Benutzer eine Klickpause von 5 Sekunden. Aus dem Betrieb haben wir die Mitteilung erhalten, dass der Produktivserver ab einer Last von 50 gleichzeitigen Verbindungen Performanceprobleme zeigt. Wir wollen jetzt mit 100 parallelen virtuellen Benutzern und einer Stunde Laufzeit immer wieder den Prozess, bestehend aus den vier oben aufgezählten Schritten und den 5-Sekunden-Pausen dazwischen, durchführen.
Erstaunlicherweise können wir das Problem so nicht nachstellen. Woran liegt das? Während unserer Messung sehen wir, dass die HTTP-Requests mit durchschnittlich 500 ms Dauer verarbeitet werden. Die Durchführung eines fachlichen Prozesses dauert also ungefähr 4 × 0,5 Sek. + 4 × 5 Sek = 22 Sek. Dabei entfallen jeweils 2 Sek. auf die Verarbeitung der HTTP-Requests, 20 Sek. sind reine Wartezeiten des Benutzers. Das bedeutet 9 % eines fachlichen Durchlaufs sind Verarbeitungszeiten, 91 % sind Wartezeiten des Simulators, in diesen 91 % werden also keine Serverressourcen verbraucht (*).
Damit ist mit den 100 parallelen virtuellen Benutzern zu erwarten, dass im Durchschnitt über die gesamte Testzeit 9 gleichzeitige Verbindungen am Server anliegen. Dieser Wert kann natürlich, insbesondere zum Teststart, schwanken, illustriert aber gut die Notwendigkeit, zwischen fachlichem Durchsatz und technischem Durchsatz zu unterscheiden.
Wir freuen uns auf Ihre Rückfragen!
(*) Dies entspricht dem idealisierten Fall, durch Verwendung von beispielsweise keep-alive, SSL, gepoolten DB-Verbindungen, können selbstverständlich auch über die Lebenszeit eines HTTP-Requests hinaus Ressourcen gebunden werden.
Autor: Carsten Negrini
Bild: Technology photo created by pressfoto - www.freepik.com