Webseiten und Online-Shop sollen präsent sein. Allem voran sollen sie präsent bleiben erreichbar und bedienbar sein. Ob ein System den Zugriffen standhalten wird oder nicht ist dabei mitunter nicht nur eine Frage der Webanwendung.
Ein adäquates und bewährtes Mittel, um die Belastbarkeit von Webanwendungen zu prüfen sind sogenannte Last- oder Performance-Tests. Dabei wird die Webanwendung mit einer Vielzahl von Anfragen “beschossen”. Die daraus gewonnenen Daten wie Ladezeit oder Fehlerquote geben Aufschluss über die Performance der Webanwendung.
Wir verwenden für diese Tests gerne den Dienst loader.io. Er besticht durch seine Einfachheit: Domain verifizieren, URL eintragen und los testen. Je nach Paket lassen sich 10.000 bis hin zu 100.000 Anfragen ausführen und das über Zeitspannen von 15 Sekunden bis hin zu einigen Minuten.
Das Ergebnis solcher Tests wird dann übersichtlich mit interaktiven Kurven und Info-Boxen dargestellt:
Soweit ein zufriedenstellendes Ergebnis. Die Antwortzeit des Servers lag im Mittel bei 127 ms und es ab keine Fehler. Es wurden 1.09 MB an den Server geschickt und 3.93 MB wurden empfangen.
Doch was sagt diese Grafik nun über die Webanwendung aus? Ich kann vorweg nehmen, es bedeutet nicht, dass mit der Webanwendung 10.000 Besucher bedient werden können.
Bei diesem Last-Test wurde lediglich eine einzige Seite aufgerufen und das insgesamt 10.000 Mal. Dabei gab es 800 Anfragen zur selben Zeit. Das bedeutet also, dass die Webanwendung zusammen mit dem Server in der Lage ist, 800 gleichzeitige Anfragen zu bedienen.
Eine Webseite besteht allerdings nicht aus einer einzigen Anfrage. Webseiten sind oft bunt und interaktiv. Wird eine Webseite im Browser aufgerufen, werden neben dem HTML auch CSS Dateien, JavaScripte und Bilder geladen.
ein Rechenbeispiel
Der Einfachheit halber ist es stark vereinfacht und ich nehme bewusst keine Rücksicht auf mögliche Ladezeiten einzelner Elementen.
Bei unserem Test mit 10.000 Anfragen über einen Zeitraum von 15 Sekunden liegt die Anzahl der gleichzeitigen Verbindungen bei rund 800. Die Webseite besteht allerdings neben dem HTML aus einigen JavaScripten, ein paar CSS Dateien und vielen Bildern, die dargestellt werden sollen. Zusammengenommen 49 Elemente die ein Besucher laden muss, ehe er die Seite in vollständig sehen und benutzen kann.
Dabei stellt jedes dieser Elemente eine Anfrage dar. So stellt ein einzelner Besucher für die vollständige Seite 50 einzelne Anfragen.
800 mögliche Anfragen / 50 Anfragen pro Besucher = 16 Besucher
Wir sehen also, das aus unserem Test nur hervorgeht, dass 16 gleichzeitige Besucher prima bedient werden können.
Es ist demnach ein Irrglaube, wenn man aus diesem Test nun ableiten möchte, dass das System 10.000 gleichzeitigen Besuchern standhalten könnte. Wenn man mit seiner Webanwendung tatsächlich 10.000 Besucher bedienen möchte, geht es für unser Beispiel um 500.000 Anfragen. Hierfür ist nun der Zeitraum entscheidend:
Möchte man die Besucher gleichzeitig, also in der selben Sekunden bedienen? Dann sind es stattliche 30.000.000 Anfragen pro Minute.
Legt man den Zeitraum für der Zugriffe auf 30 Sekunden, entspannt sich alles ein wenig. Es sind bei rund 17.000 gleichzeitigen Zugriffen noch etwa 340 gleichzeitige Besucher.
Möchte man diese Anzahl von Besuchern über einen Zeitraum von einer Minute bedienen, sprechen wir nur noch von rund 150-170 gleichzeitigen Besuchern und damit von etwa 800 gleichzeitigen Anfragen.
Ein Beispiel das man kennt
Um ein Gefühl für die Zahlen zu bekommen, Amazon.de hatte im Juni 2020 insgesamt 458.000.000 Zugriffe, wenn wir eine gleichmäßige Verteilung annehmen (30 Tage á 24h) und uns die Startseite anschauen, die in meinem Test 300 Anfragen stellte, landen wir bei ca. 3.180.555 gleichzeitigen Anfragen pro Minute oder aber etwa 53.000 Anfragen in einer Sekunde
Natürlich werden die meisten dieser Anfragen hoffentlich aus dem Cache bedient, was beim Surfen durch die Seite die Anzahl der Anfragen für jede weitere Seite reduziert. Doch es wird hoffentlich deutlich, dass unser Last-Test zwar verifiziert das 10.000 Anfragen über einen Zeitraum von 15 Sekunden möglich sind, aber diese Aussage nicht mit der Anzahl der Besucher auf der Webseite gleichzusetzen ist.