Christian Kücherer, Georg Molter:
Java
Performance Engineering
Performanceprobleme haben viele Symptome
- schlechte Antwortzeiten
- geringer Durchsatz
- langsame GUI-Raaktivität
- Hänger im Programmablauf
- geringe Verfügbarkeit
- indeterministisches Systemverhalten
- Instabilität des Systems
- usw.
Folge
Nicherfüllung nicht-funktionaler Anforderungen
Das System kann nicht so genutzt werden
wie geplant.
Prävention
Performance als nichtfunktionale Anforderung
(NFA)
in den Requirements systematisch berücksichtigen
konkrete, messbare Vorgaben
Performance ist Teil der Software-Qualität
und muss entsprechend gesichert werden
Adressieren von Performance während
der Integration und der Entwicklung
Automatisiertes Testen nicht nur auf
Funktion, sondern auch auf Performance
Schlechte Systemperformance:
Erste Hilfe:
- schnellere Hardware kaufen
- Verbesserung der Performance (Hotfix oder nächste Version)
- Schadensbegrenzung: ggf. Rollback
"Performance-Probleme sind schwer zu finden und meist leicht zu lösen" (wenn die Architektur gut ist)
Mögliche Ursachen - Technische Gründe
- Organisatorische Gründe
- Architektonische Gründe
Systematisches Vorgehen - Überblick verschaffen
- Initiale Identifikation kritischer Komponenten
- kritischste Komponente wählen
- Analyse
- Verbesserungen
- Test
- weiter bei der nächsten Komponente
Typische Performance-Fallen - I/O (ist teuer, mit mark und reset kann es sein, dass man die gleichen Daten mehrfach liest.)
- Datenstrukturen und Algorithmen
- Caches
- Singletons
- Transaktionen (häufige Rollbacks)
- JMS und Flow Control
- Clustering und Singletons
Sicherung und Monitoring
Zusammenfassung
Identifikation der Ursachen von Performance-Problemen - Schnelle Ergebnise durch systematisches Vorgehen
- Kontrolle der Auswirkungen auf das System
Prävention - Performance ist ein Aspekt von Software-Qualität und muss entsprechend gesichert werden
- Adressieren von Performance während der Integration - und Entwicklung!
- Augen auf vor Performance-Anti-Patterns!