Gerade bei Saisonspitzen können sich Ausfallzeiten verheerend auf den Umsatz eines Onlineshops auswirken. Gleichzeitig steigt das Risiko durch den starken Anstieg der Nutzerzahlen. In diesem Gastbeitrag erklärt Damijan Ćavar von der Technologieagentur Turbine Kreuzberg, wie Lasttests helfen können, die Gefahr von Shopausfällen zu verringern.
Lasttests spielen eine entscheidende Rolle, wenn es darum geht, den Ausfall eines Onlineshops während Spitzenlastzeiten zu verhindern. Sie helfen dabei, Leistungsengpässe und Schwachstellen in der Infrastruktur zu erkennen und zu entschärfen, bevor sie zu Ausfällen und damit zu Umsatzeinbußen führen.
Es gibt nichts Schlimmeres als eine Website, die nach einer erfolgreichen Kampagne aufgrund zu vieler Besucher zusammenbricht.

© IMAGO / YAY Images
Leistungsengpässe wie langsame Datenbankabfragen oder begrenzte Serverkapazitäten können in Spitzenlastzeiten zu Systemproblemen führen.
So können Lasttests helfen, ein solches Szenario zu vermeiden:
- Einteilung der Kapazitäten: Durch die Durchführung von Lasttests im Vorfeld von geschäftigen Zeiten wie der Weihnachtszeit können Unternehmen die notwendige Skalierung ihrer Infrastruktur besser planen, z. B. das Hinzufügen weiterer Server, Datenbanken, Reverse Proxies oder Content Delivery Networks (CDNs), um den zu erwartenden Anstieg des Datenverkehrs zu bewältigen.
- Identifizierung von Leistungsengpässen (Bottlenecks): Lasttests helfen dabei, Leistungsengpässe, sogenannte Bottlenecks, im System zu erkennen, wie etwa langsame Datenbankabfragen, ineffizienter Code oder begrenzte Serverkapazitäten. Wenn diese Probleme im Voraus erkannt werden, können die Teams sie bereits im Vorfeld beseitigen.
- Bessere Skalierbarkeit: Zu den Lasttests gehören auch Skalierungstests, bei denen die Fähigkeit des Systems zur Skalierung bei erhöhter Last geprüft wird. Es gibt nichts Schlimmeres, als während der Spitzenlast herauszufinden, dass bpsw. die automatische Skalierung bei AWS nicht funktioniert.
- Ressourcenplanung: Lasttests helfen auch dabei, Ressourcen effizienter zuzuweisen. Wenn man versteht, wie sich das System unter verschiedenen Laststufen verhält, kann man die Ressourcenzuweisung optimieren, z. B. Serverkonfigurationen oder die Speicher- und CPU-Nutzung anpassen.
- Datenbank-Performance: Im E-Commerce ist häufig die Performance der Datenbank ein Problemfeld. Oft gibt es keine optimierten Datenbankabfragen, es fehlen Indizes und Limits oder gar Ressourcen für viele gleichzeitige Anfragen, die während der Spitzenzeit ausgeführt werden sollen. Lasttests helfen, solche Probleme bereits im Voraus zu erkennen.
Wege zu höherer Robustheit
Aus der Sicht eines Entwicklers unterscheidet sich der Betrieb eines Webshops bei Spitzenlasten nicht sehr vom Betrieb bei normaler Last, der Unterschied liegt lediglich in der Anzahl der Nutzer und folglich in der Anzahl der Anfragen, die die Server verarbeiten müssen.
Gerade hier kommen deswegen bewährte Standardprinzipien zum Tragen, die bei normaler Auslastung manchmal folgenlos bleiben. Wenn der Aufbau und Code der Plattform diesen Prinzipien folgt, ist eine E-Commerce-Plattform nicht nur meist flexibler und effizienter, sondern dadurch auch robuster gegenüber Lastspitzen. Hier sind einige Möglichkeiten eine höhere Robustheit zu schaffen:
- Skalierbare Infrastruktur: Richtig konfigurierte Load Balancer und eine skalierbare Serverinfrastruktur sind unerlässlich, um eingehenden Datenverkehr effizient zu verteilen. Man muss sicherstellen, dass kein einzelner Server überlastet wird und somit bei Lastspitzen zum Bottleneck wird. Bezüglich des Speichers kann eine horizontale Skalierung den erhöhten Datenverkehr in Spitzenzeiten regeln.
- Caching: Durch die Implementierung von Caching-Mechanismen für Daten, auf die häufig zugegriffen wird, wie z. B. Produktlisten, kann die Belastung der Datenspeicher effektiv verringert werden.
- Content Delivery Networks (CDNs): CDNs helfen bei der Verteilung statischer Inhalte (Bilder, CSS, JavaScript) und verringern so die Belastung der Webserver und verbessern die Ladezeiten der Seiten. Bei CDNs muss sichergestellt werden, dass die richtigen Cache-Header gesetzt wurden, damit die Benutzer nicht denselben Inhalt immer wieder neu laden müssen.
- Optimierung von Bildern und Videos: Bilder und andere Mediendateien müssen optimiert und komprimiert werden, um die Bandbreitennutzung zu minimieren und die Seitenladezeiten zu verbessern. Dies ist sehr wichtig, da Nutzer möglicherweise mit mobilen Geräten auf die Website zugreifen.
- Datenbank-Optimierung: Datenbankabfragen können optimiert werden, bspw. durch Indizes oder Sharding, damit vermehrte Lese- und Schreibvorgänge effizient bewältigt werden können.
- Background Processing: Alles, was nicht sofort beantwortet werden muss, wie z. B. die Bearbeitung von Bestellungen oder E-Mail-Benachrichtigungen, sollte in Hintergrundprozesse ausgelagert werden, um Webserver-Ressourcen zu schonen.
- Monitoring und Alerts: Die Infrastruktur sollte über Echtzeit-Überwachungs- und Warnsysteme verfügen, um Leistungsprobleme schnell zu erkennen und sofortige Maßnahmen einleiten zu können.

© Turbine Kreuzberg
Application-Performance-Index (Apdex) des Tools Artilery: Hier sieht man, wie viele Anfragen im zufriedenen/tolerierten Bereich liegen. Dabei wird meist standardmäßig 500 ms als Antwortzeit festgelegt.
Werden sie berücksichtigt und effektiv umgesetzt, können diese Maßnahmen die Robustheit eines Webshops in Spitzenzeiten des Datenverkehrs erheblich verbessern. Das gewährleistet ein reibungsloses Benutzererlebnis sowie die Fähigkeit, große Mengen gleichzeitiger Benutzer ohne größere Probleme zu verarbeiten.
So funktioniert ein Lasttest
Aber wie führt man einen umfassenden Lasttest durch? Wichtig sind zunächst eine gute Planung und das Festlegen konkreter Ziele. Die Ziele des Lasttests müssen klar definiert sein, etwa Aspekte, die die Leistung und Skalierbarkeit betreffen, wie Response Time, Gleichzeitigkeit, Ressourcenauslastung oder maximal mögliche Kapazitäten. Darüber hinaus muss das Nutzerverhalten klar sein. Wie agieren die User mit dem Shop? Es sollten häufige Benutzerabläufe, Transaktionen und Nutzungsmuster ermittelt werden.
Für den Test werden bestimmte Schlüsselszenarien festgelegt, die getestet werden sollen. Diese sollten die reale Nutzung des Shops widerspiegeln, einschließlich Spitzenlast und verschiedene Arten von Benutzerinteraktionen. Die dafür genutzten Testdaten sollten repräsentativ für die Produktionsdaten sein, um die tatsächliche Nutzung genau nachbilden zu können.
Um eine Vergleichsgrundlage zu haben, muss außerdem zunächst eine Basislinie festgelegt werden – sprich: die aktuelle Leistung des Systems vor dem Lasttest.

© Turbine Kreuzberg
Übersicht von Locust über die Anzahl der erfolgreichen und fehlgeschlagenen Requests pro Sekunde
Daraufhin müssen die gewünschten Leistungskennzahlen wie Response Time und Ressourcennutzung definiert werden. Es gibt viele Tools für Lasttests. Die Wahl des richtigen ist entscheidend, und das genutzte Tool sollte entsprechend den Anforderungen und Zielen des Lasttests ausgewählt werden.
Der eigentliche Test sollte die identifizierten Benutzerszenarien simulieren. Zum Beispiel eine Customer-Journey von Suche, Produktseite, Einkaufswagen und Check-out. Je näher man am tatsächlichen Nutzerverhalten ist, desto besser. Wenn es nicht möglich ist, in der tatsächlichen Produktionsumgebung zu testen (z. B. außerhalb der Geschäftszeiten), sollte eine geeignete Testumgebung eingerichtet werden, die der Produktionsumgebung so nahe wie möglich kommt.
Beim Testen sollte langsam begonnen und die Belastung schrittweise erhöht werden, um Leistungsschwellen und Systemgrenzen zu erkennen. Das genaue Monitoring der wichtigsten Leistungsindikatoren und Systemressourcen (CPU, Speicher, Festplatte usw.) während des Tests ist entscheidend, um Engpässe und Leistungsprobleme zu erkennen.
Teil des Entwicklungsprozesses
Mit Lasttests können Onlinehändler sicherstellen, dass ihre Plattform die entscheidenden Tage zwischen Black Friday und Weihnachten übersteht.
Idealerweise sollten Lasttests aber bereits Teil des Entwicklungsprozesses sein und in regelmäßigen Abständen durchgeführt werden, vor allem, wenn wesentliche Änderungen am System vorgenommen werden. Einige Beispiele für beliebte Lasttest-Tools und Technologien, die in Unternehmensumgebungen eingesetzt werden, sind Apache JMeter, Gatling, BlazeMeter, NeoLoad, WebLOAD, Artillery, oder Tsung.