Skip to content

Testcenter Lasttest 2026

Einleitung

Titel: Bewertung der Skalierbarkeit und Leistung des Testcenters unter hoher Benutzerlast bei unterschiedlichen Testheftgrößen und gleichzeitigen Zugriffen.
Datum: 12. Februar 2025
Tester: Kompetenztest.de

Der Fokus liegt auf der Analyse der Antwortzeiten, Fehlerraten und Serverauslastung bei verschiedenen Hardware-Konfigurationen (VM1, VM2, VM3) und der Untersuchung der Auswirkungen von 100, 200 und 500 gleichzeitigen Benutzern auf die Systemleistung.

1. Testumgebung

Hardware

Server:

  • VM1: 1 Kern mit 2 Threads, 8 GB RAM
  • VM2: 2 Kerne mit 4 Threads, 8 GB RAM
  • VM3: 8 Kerne mit 16 Threads, 8 GB RAM

Client:

  • Lenovo ThinkPad T16 Gen 2, AMD Ryzen 7 PRO 7840U (8 Kerne, 16 Threads), 32 GB RAM
  • Symmetrischer Gigabit Netzwerkanschluss im Netzwerk der Friedrich Schiller Universität Jena (fast.com Speedtest: 900 Mbps Download, 930 Mbps Upload, Latenz: 8ms)

Software

  • Betriebssystem: Oracle Linux 8
  • Datenbank: MySQL 8
  • Anwendungsframework: Slim 4
  • Frontendframework: Angular 16

Tools

  • Node Exporter, Prometheus, Grafana (Monitoring Tool)

2. Teststrategie

Testarten

  • Lasttest: Überprüfung der Performance bei 100, 200 und 500 gleichzeitigen Benutzern.
  • Spitzentest: Überprüfung der Reaktion des Systems auf plötzliche Lastspitzen und hohe gleichzeitige Benutzerzahlen.

Testmethoden

  • Nutzung von Go-Skript: Um die gleichzeitigen Benutzeranfragen zu simulieren, wird das GO-Scripts des IQBs verwendet (https://github.com/iqb-berlin/load-test). Dabei wird die Anzahl der gleichzeitigen Benutzer (100, 200, 500) dynamisch gesteuert und die Antwortzeiten sowie die Fehlerhäufigkeit überwacht.

  • Testheftgrößen: Zwei verschiedene Testheftgrößen werden getestet, um die Systemleistung bei unterschiedlichen Datenmengen zu messen.

  • Überwachung mit Prometheus und Grafana: Während der Tests wird das Monitoring-Tool Prometheus und Grafana verwendet, um die Serverauslastung (CPU, Arbeitsspeicher, Netzwerk), Antwortzeiten und Fehlerraten in Echtzeit zu überwachen und zu analysieren.

  • Durchführung bei unterschiedlichen Hardwarekonfigurationen: Die Tests werden auf verschiedenen Hardwarekonfigurationen durchgeführt (VM1, VM2, VM3).

3. Testszenarien

1. Szenario: Aufruf der Startseite

Beschreibung:
Simuliert die Szenarien von der Authentifizierung bis hin zum Laden des Testes und deren Inhalte. Es wird überprüft, wie das System mit verschiedenen Lastbedingungen umgeht und wie die Antwortzeiten sowie die Serverauslastung sind.

Ziele:

  • Messen der Antwortzeit bei Authentifizierung und Laden der Testinhalte.
  • Überprüfung der Fehlerhäufigkeit (z. B. 404 Fehler).
  • Analyse der Serverauslastung (CPU, Speicher, Netzwerk).

Gleichzeitige Benutzer:

  • 100, 200, 500 Benutzer

4. Testkonfiguration

Zugriffsanzahl

  • Test bei 100 gleichzeitigen Zugriffen
  • Test bei 200 gleichzeitigen Zugriffen
  • Test bei 500 gleichzeitigen Zugriffen

Hardwarekonfigurationen

  • VM1: 1 Kern mit 2 Threads, 8 GB RAM
  • VM2: 2 Kerne mit 4 Threads, 8 GB RAM
  • VM3: 8 Kerne mit 16 Threads, 8 GB RAM

Testgrößen

  • Kleine Testgröße: Pilotierungstestheft Basiskompetenztest Lesen (18 MB)
  • Große Testgröße: VERA3 Deutsch Lesen 2024 (30,4 MB)

5. Metriken

  • Antwortzeiten: Durchschnitt, 95. Perzentil
  • Fehlerraten: HTTP-Fehler, Timeouts
  • Serverauslastung: CPU, Arbeitsspeicher, Netzwerk

6. Ergebnisse

6.1 Ergebnisse bei VM1 und kleiner Testheftgröße

Verteilung der Antwortzeiten

Metrik100 Benutzer200 Benutzer500 Benutzer
Gesamtzeit36,62 s71,42 s206,70 s
Durchschnittliche Antwortzeit35,43 s62,64 s144,08 s
90. Perzentil36.51 s70,83 s205,43 s

Fehlerarten

Fehlerart100 Benutzer200 Benutzer500 Benutzer
HTTP 500000
Timeout000

Grafana Grafiken

Antwortzeiten-GrafikAbbildung 1: Antwortzeiten bei VM1 mit kleiner Testheftgröße und 100 gleichzeitigen Zugriffen

Antwortzeiten-GrafikAbbildung 2: Antwortzeiten bei VM1 mit kleiner Testheftgröße und 200 gleichzeitigen Zugriffen

Antwortzeiten-GrafikAbbildung 3: Antwortzeiten bei VM1 mit kleiner Testheftgröße und 500 gleichzeitigen Zugriffen

6.2 Ergebnisse bei VM1 und großer Testheftgröße

Verteilung der Antwortzeiten

Metrik100 Benutzer200 Benutzer500 Benutzer
Gesamtzeit63,91 s127,86 s314,31 s
Durchschnittliche Antwortzeit62,32 s115,60 s258,18 s
90. Perzentil63,83 s127,46 s310,46 s

Fehlerarten

Fehlerart100 Benutzer200 Benutzer500 Benutzer
HTTP 500000
Timeout000

Grafana Grafiken

Antwortzeiten-GrafikAbbildung 1: Antwortzeiten bei VM1 mit großer Testheftgröße und 100 gleichzeitigen Zugriffen

Antwortzeiten-GrafikAbbildung 2: Antwortzeiten bei VM1 mit großer Testheftgröße und 200 gleichzeitigen Zugriffen

Antwortzeiten-GrafikAbbildung 3: Antwortzeiten bei VM1 mit großer Testheftgröße und 500 gleichzeitigen Zugriffen

6.3 Ergebnisse bei VM2 und kleiner Testheftgröße

Verteilung der Antwortzeiten

Metrik100 Benutzer200 Benutzer500 Benutzer
Gesamtzeit22,29 s40,69 s107,09 s
Durchschnittliche Antwortzeit19,40 s31,28 s97,40 s
90. Perzentil22,19 s40,56 s106,39 s

Fehlerarten

Fehlerart100 Benutzer200 Benutzer500 Benutzer
HTTP 500000
Timeout000

Grafana Grafiken

Antwortzeiten-GrafikAbbildung 1: Antwortzeiten bei VM2 mit kleiner Testheftgröße und 100 gleichzeitigen Zugriffen

Antwortzeiten-GrafikAbbildung 2: Antwortzeiten bei VM2 mit kleiner Testheftgröße und 200 gleichzeitigen Zugriffen

Antwortzeiten-GrafikAbbildung 3: Antwortzeiten bei VM2 mit kleiner Testheftgröße und 500 gleichzeitigen Zugriffen

6.4 Ergebnisse bei VM2 und großer Testheftgröße

Verteilung der Antwortzeiten

Metrik100 Benutzer200 Benutzer500 Benutzer
Gesamtzeit39,42 s77,89 s186,50 s
Durchschnittliche Antwortzeit38,62 s74,08 s161,51 s
90. Perzentil39,27 s76,45 s184,05 s

Fehlerarten

Fehlerart100 Benutzer200 Benutzer500 Benutzer
HTTP 500000
Timeout000

Grafana Grafiken

Antwortzeiten-GrafikAbbildung 1: Antwortzeiten bei VM2 mit großer Testheftgröße und 100 gleichzeitigen Zugriffen

Antwortzeiten-GrafikAbbildung 2: Antwortzeiten bei VM2 mit großer Testheftgröße und 200 gleichzeitigen Zugriffen

Antwortzeiten-GrafikAbbildung 3: Antwortzeiten bei VM2 mit großer Testheftgröße und 500 gleichzeitigen Zugriffen

6.5 Ergebnisse bei VM3 und kleiner Testheftgröße

Verteilung der Antwortzeiten

Metrik100 Benutzer200 Benutzer500 Benutzer
Gesamtzeit18,10 s30,63 s72,20 s
Durchschnittliche Antwortzeit15,31 s26,50 s65,94 s
90. Perzentil16,98 s29,49 s70,89 s

Fehlerarten

Fehlerart100 Benutzer200 Benutzer500 Benutzer
HTTP 500000
Timeout000

Grafana Grafiken

Antwortzeiten-GrafikAbbildung 1: Antwortzeiten bei VM3 mit kleiner Testheftgröße und 100 gleichzeitigen Zugriffen

Antwortzeiten-GrafikAbbildung 2: Antwortzeiten bei VM3 mit kleiner Testheftgröße und 200 gleichzeitigen Zugriffen

Antwortzeiten-GrafikAbbildung 3: Antwortzeiten bei VM3 mit kleiner Testheftgröße und 500 gleichzeitigen Zugriffen

6.6 Ergebnisse bei VM3 und großer Testheftgröße

Verteilung der Antwortzeiten

Metrik100 Benutzer200 Benutzer500 Benutzer
Gesamtzeit31,87 s52,63 s128,46 s
Durchschnittliche Antwortzeit25,17 s48,69 s118,82 s
90. Perzentil29,04 s51,69 s127,44 s

Fehlerarten

Fehlerart100 Benutzer200 Benutzer500 Benutzer
HTTP 500000
Timeout000

Grafana Grafiken

Antwortzeiten-GrafikAbbildung 1: Antwortzeiten bei VM3 mit großer Testheftgröße und 100 gleichzeitigen Zugriffen

Antwortzeiten-GrafikAbbildung 2: Antwortzeiten bei VM3 mit großer Testheftgröße und 200 gleichzeitigen Zugriffen

Antwortzeiten-GrafikAbbildung 3: Antwortzeiten bei VM3 mit großer Testheftgröße und 500 gleichzeitigen Zugriffen

7. Analyse

Infrastruktur & Reverse Proxy

Die Standardkonfiguration unserer Oracle Cloud beinhaltet einen Loadbalancer. Ursprünglich wurde das Testcenter mit dieser Konfiguration getestet, wobei ein zusätzlicher Reverse Proxy vorgeschaltet war. Allerdings traten hierbei Probleme auf.

Da wir unsere Server nicht horizontal skalieren, war der Nutzen des Loadbalancers gering. Der einzige Vorteil bestand in der TLS-Terminierung außerhalb des Testcenters, was minimale Verbesserungen der Antwortzeiten brachte. Aufgrund der erhöhten Komplexität und der aufgetretenen Probleme haben wir uns jedoch entschieden, die Konfiguration erstmal ohne Loadbalancer weiter zu testen.

Beobachtungen aus den Lasttestgrafiken

  • Hohe CPU-Auslastung bei niedriger Netzwerkauslastung bei kleinen Maschinen:

    • Ursache: Login-Prozesse laufen sequentiell ab.
    • PHP öffnet für jeden Request einen neuen Thread, was ressourcenintensiv ist.
    • Die CPU wird stark belastet, während das Netzwerk erst nach Abschluss der Backend-Verarbeitung genutzt wird.
  • Zielsetzung für gleichzeitige Requests:

    • Unser Ziel war es, dass 200 gleichzeitige Requests zu Retries führen dürfen, aber nicht zu Fehlern.
    • Mit einer Maschine mit 8 Kernen und 8 GB RAM erreichten wir ein gutes Ergebnis.
    • Wir werden zunächst mit dieser Konfiguration arbeiten und während der Tests die Systemauslastung weiter überwachen, um ggf. die Anzahl der Kerne zu reduzieren.