Performance Engineering
Messbare Latenz, Durchsatz, Ressourcennutzung, Lasttests und Kapazitätsplanung. Nutze die Seite für eine konkrete Engineering-Aufgabe: Kläre zuerst Ziel und Risiko und halte danach Ergebnis, Nachweis und nächsten Schritt fest.
Arbeitsauftrag
Wann verwenden?
Wenn Latenz, Durchsatz oder Ressourcenverbrauch ein messbares Ziel verfehlen.
Nicht dafür verwenden
Nicht für Optimierungen ohne Baseline, Lastprofil oder geschäftliche Relevanz.
Definition of Done
Baseline, Budget und Lastmodell stehen fest; Engpass ist belegt; Verbesserung und Regressionstest sind reproduzierbar.
Vom Symptom zur Messung
| Symptom | Erste Evidenz | Typische Hypothese | Gegenprobe |
|---|---|---|---|
| hohe p95-Latenz | Trace und Histogramm | langsamer Downstream | Abhängigkeit isoliert belasten |
| CPU-Sättigung | Profil und Run Queue | Hot Path oder Serialisierung | Flame Graph vor und nach Fix |
| steigender Speicher | Heap-Trend und GC | Retention oder Cache | Heap-Diff unter konstanter Last |
Hypothesenbasiertes Vorgehen
Performancearbeit beginnt mit einem reproduzierbaren Szenario und einer Messgröße. Danach werden Hypothesen priorisiert und einzeln geprüft.
Lokale Microbenchmarks erklären keine verteilte End-to-End-Latenz; Lasttests erklären nicht automatisch die Ursache.
Ziel: p95 unter 250 ms bei 300 Requests/s
Ist: p95 780 ms
Hypothese 1: Connection Pool erschöpft
Messung: active=max, pending>0
Experiment: Pool +20 %, DB-Auslastung beobachten
Ergebnis: keine Verbesserung → Hypothese verworfen
JMH
JMH kontrolliert Warm-up, Forks und Compileroptimierungen. Ergebnisse müssen zusammen mit JVM, Hardware und Parametern dokumentiert werden.
@Benchmark
public Money calculateTotal() {
return pricingPolicy.calculate(orderDraft);
}
Lastprofile
Load, Stress, Spike und Soak Tests beantworten unterschiedliche Fragen. Ein realistisches Profil enthält Verteilung, Think Time, Datenvolumen und Abhängigkeiten.
Praxisartefakt · Performance Budget
- Use Case
-
POST /checkoutbei 120 Requests pro Sekunde. - Budget
- p50 180 ms, p95 450 ms, p99 900 ms.
- Ressourcen
- CPU unter 70 Prozent, Pool-Wartezeit unter 20 ms.
- Lastprofil
- 70 Prozent Standard, 25 Prozent Promotion, 5 Prozent Maximalwarenkorb.
- Regression
- Build stoppt bei mehr als 10 Prozent Verschlechterung zur Baseline.