Wenn Performancetest-Tools unter ihrer eigenen Last zusammenbrechen

Agenda 📋

  • kurze Vorstellung
  • Testobjekt
  • Performance-Testing
  • Apache JMeter
  • Test Setup & Durchführung
  • Ergebnisse
  • Fazit

Der Sprecher 🙊

Matthias Eggert

Testobjekt 🧫

Demokratischer Prozess 🗽

  • Viele Millionen Menschen, Dienste und Crawler
  • 7-stellige Zahl von Requests pro Minute
  • Und zwar in der Regel genau an einem Tag
  • Auf unterschiedliche Endpunkte
  • Große Responses

Zurück zum Testobjekt 🗽

  • Viele Millionen Menschen, Dienste und Crawler
  • 7-stellige Zahl von Requests pro Minute
  • Und zwar in der Regel genau an einem Tag
  • Auf unterschiedliche Endpunkte
  • Große Responses
  • DDoS
  • Angriffe aus dem Ausland

Performance-Testing ⏱️

Chuck Norris

💩

Performance-Testing Arten 🏋️🧘🚣🏃

Performance-Testing Arten

Auto-Scaling What 🚗🤔❓

Konstante Hochlast ↗️

Performance-Testing Arten

Apache JMeter 🪶

  • Open Source
  • Java basiert
  • GUI und CLI
  • Skalierbar
  • Plugins

JMeter Skalieren ⚖️

⛅ = 😇

⛈️ = 😈🐿️

Testarchitektur I 🏗️

Fehlschlag 🪠

  • RAM, CPU, Netzwerk
  • RAM stieg noch weiter an, wenn man zu wenig Netzwerk hatte
  • Reporterstellung (mindestens x5)
    • Nicht denken, dass es kaputt ist, es dauert nur ewig
  • Grafana konnte nur noch 30 Sekunden Fenster laden
  • Aber Zeitdruck

🪲🐞

Note that while you can execute the JMeterEngine on your application server, you need to be mindful of the fact that this will be adding processing overhead on the application server and thus your testing results will be somewhat tainted. The recommended approach is to have one or more machines on the same Ethernet segment as your application server that you configure to run the JMeter Engine. This will minimize the impact of the network on the test results without impacting the performance of the application server itself.
However, remote mode does use more resources than running the same number of CLI mode tests independently. If many server instances are used, the client JMeter can become overloaded, as can the client network connection. [...] always check that your client is not overloaded.

JMeter Master Config ⚙️

Testarchitektur II 🏛️🛕

First things first

mehr RAM, mehr Netzwerkbandbreite

🆕🆕🆕

StrippedBatch O.M.G. 😱

mode=StrippedBatch
mode=StrippedBatch

Ergebnisse 📉

Grafana 📈

Python 🐍

Lösungsansätze (mittel-/langfristig) ⭐

  • mehrere Systeme für Lastagenten
  • Responses nicht im report speichern (StrippedBatch)
  • Report asynchron laufen lassen
  • Custom Listener der Responses nur im Fehlerfall speichert
  • K6 statt JMeter (Kein Reporting, Kein Master-Slave; Aber ...)

Fazit 🩻

  • Performance-Tests sind essenziell für die Zuverlässigkeit von Anwendungen.
  • Apache JMeter ist ein mächtiges Tool, aber nicht ohne Herausforderungen.
  • Skalierung und Ressourcenmanagement sind kritische Faktoren.
  • Cloud-basierte Lösungen bieten Potenzial, aber auch neue Probleme.
  • Kontinuierliche Optimierung und Anpassung sind notwendig.

Vielen Dank! 🙏