IT-Übungen

Performance & Last

Kennzahlen, Perzentile, Lastarten, Engpässe. Rechenaufgaben per Programm geprüft.

Lesestand

  1. Antwortzeit und Durchsatz ★☆☆ Grundbegriffe

    Ein Lasttest liefert zwei Kennzahlen: 0,3 Sekunden und 400 pro Sekunde.

    Was beschreiben die beiden Werte?

    Lösung anzeigen

    Richtig: Antwortzeit (wie lange eine Anfrage dauert) und Durchsatz (wie viele Anfragen pro Sekunde verarbeitet werden)

    Antwortzeit ist die Sicht des einzelnen Nutzers, Durchsatz die Sicht des Systems. Beide hängen zusammen: Steigt die Last über einen Punkt hinaus, wächst die Antwortzeit stark, während der Durchsatz stagniert.

  2. 90. Perzentil ★★☆ Perzentile

    Zehn gemessene Antwortzeiten in Millisekunden: 120, 95, 130, 110, 2500, 105, 140, 100, 115, 980

    Wie hoch ist das 90. Perzentil (Rangmethode: der Wert, unter dem 90 % der sortierten Messungen liegen)?

    Lösung anzeigen

    Richtig: 980 ms

    Sortiert: 95, 100, 105, 110, 115, 120, 130, 140, 980, 2500. 90 % von 10 Werten sind 9, also der 9. Wert: 980 ms. Perzentile zeigen, wie es den langsamsten Nutzern geht, und sind deshalb aussagekräftiger als der Durchschnitt. (449,5 ms wäre der Mittelwert.)

  3. Der irreführende Durchschnitt ★★☆ Statistik · Perzentile

    Neun Anfragen dauern je 100 ms, eine dauert 5000 ms.

    Welche Aussage stimmt?

    Lösung anzeigen

    Richtig: Durchschnitt 590 ms, Median 100 ms; der Durchschnitt beschreibt keine einzige echte Anfrage

    Der Durchschnitt liegt bei 590 ms, aber keine Anfrage dauerte so lange: 9 waren schnell, eine sehr langsam. Der Median (100 ms) zeigt den typischen Fall, ein hohes Perzentil den Ausreißer. Ausreißer einfach zu streichen, versteckt oft das eigentliche Problem.

  4. Little's Law ★★★ Kapazität · Formeln

    Ein System verarbeitet 50 Anfragen pro Sekunde, jede dauert im Schnitt 0,2 Sekunden.

    Wie viele Anfragen sind im Durchschnitt gleichzeitig in Bearbeitung?

    Lösung anzeigen

    Richtig: 10

    Little's Law: gleichzeitige Anfragen = Durchsatz × Verweildauer = 50 × 0,2 = 10. Damit kann man prüfen, ob Lasttests plausibel sind oder wie groß Thread- und Verbindungspools mindestens sein müssen.

  5. Speicherlecks finden ★★☆ Lastarten

    Ein Speicherleck macht sich erst nach vielen Stunden Betrieb bemerkbar.

    Welche Testart deckt es am ehesten auf?

    Lösung anzeigen

    Richtig: Dauertest (Soak-Test): normale Last über viele Stunden

    Lecks, volllaufende Logs oder sich füllende Caches brauchen Zeit. Ein Dauertest mit gleichmäßiger Last zeigt sie an einem langsam steigenden Speicherverbrauch. Kurze Tests sind dafür blind.

  6. Black Friday ★★☆ Lastarten

    Ein Shop erwartet, dass um 0:00 Uhr am Black Friday innerhalb einer Minute zehnmal so viele Nutzer kommen wie sonst.

    Welche Testart bildet das am besten ab?

    Lösung anzeigen

    Richtig: Spitzentest (Spike-Test)

    Ein Spitzentest prüft, ob das System plötzliche Sprünge verkraftet: Skaliert es schnell genug? Laufen Warteschlangen über? Erholt es sich danach? Ein langsam ansteigender Lasttest würde genau diese Probleme nicht zeigen.

  7. Denkzeit ★★☆ Lastmodell

    In einem Lastskript schicken 100 virtuelle Nutzer ihre Anfragen ohne jede Pause hintereinander.

    Was ist daran unrealistisch?

    Lösung anzeigen

    Richtig: Echte Nutzer lesen und überlegen zwischen den Klicks; ohne Denkzeit erzeugen 100 virtuelle Nutzer viel mehr Last als 100 echte

    Ein virtueller Nutzer ohne Pausen entspricht oft zehn oder mehr echten. Ohne realistische Denkzeit sind die Ergebnisse entweder zu pessimistisch, oder man zieht falsche Schlüsse über die tatsächliche Nutzerzahl.

  8. Aufwärmphase ★★☆ Messmethodik · Java

    In den ersten zwei Minuten eines Lasttests auf einer Java-Anwendung sind die Antwortzeiten deutlich höher als danach.

    Was ist die wahrscheinlichste Erklärung?

    Lösung anzeigen

    Richtig: Die JVM optimiert häufig genutzten Code erst zur Laufzeit (JIT), Caches und Verbindungspools füllen sich

    Java-Anwendungen werden „warm“: Der JIT-Compiler übersetzt heißen Code in Maschinencode, Klassen werden geladen, Caches gefüllt. Messungen trennt man deshalb in Aufwärmphase und Messphase, sonst verfälscht der Kaltstart die Werte.

  9. Der Engpass ★★☆ Engpassanalyse

    Unter Last: CPU 20 %, Arbeitsspeicher 40 %, Netzwerk 10 %, Datenbank-Verbindungspool 100 % belegt, viele Anfragen warten auf eine Verbindung.

    Wo liegt der Engpass?

    Lösung anzeigen

    Richtig: Beim Datenbank-Verbindungspool

    Die Ressource, die voll ausgelastet ist und vor der sich Warteschlangen bilden, begrenzt das ganze System. Mehr CPU würde hier nichts bringen. Ob der Pool zu klein ist oder Verbindungen zu lange gehalten werden, zeigt die nächste Untersuchung.

  10. Mehr Server, nicht schneller ★★★ Skalierung

    Die Anwendung wird von 2 auf 4 Server verdoppelt. Der Durchsatz steigt trotzdem kaum.

    Was ist die wahrscheinlichste Ursache?

    Lösung anzeigen

    Richtig: Ein gemeinsam genutzter Engpass, z. B. die eine Datenbank, die alle Server verwenden

    Horizontale Skalierung hilft nur, wenn der Engpass auf den Anwendungsservern liegt. Teilen sich alle dieselbe Datenbank, dieselbe Warteschlange oder dieselbe Sperre, verschiebt sich das Problem nur.

  11. Wie viele Server ★☆☆ Kapazitätsplanung

    Ein Server schafft 200 Anfragen pro Sekunde bei 80 % CPU-Last. Benötigt werden 1000 Anfragen pro Sekunde, ebenfalls bei höchstens 80 % CPU.

    Wie viele Server braucht man mindestens, wenn die Leistung linear mit der Serveranzahl wächst?

    Lösung anzeigen

    Richtig: 5

    1000 / 200 = 5. In der Praxis plant man Reserve ein, z. B. einen Server mehr, damit der Ausfall eines Servers nicht sofort zur Überlast führt. Ob die Annahme „linear“ stimmt, muss ein Test zeigen (siehe Aufgabe zur Skalierung).

  12. Kleine Testdatenbank ★★☆ Testumgebung

    Der Lasttest läuft gegen eine Datenbank mit 1.000 Kunden. In Produktion sind es 4 Millionen.

    Was ist das Problem?

    Lösung anzeigen

    Richtig: Abfragen ohne passenden Index oder mit großen Ergebnismengen fallen bei 1.000 Einträgen nicht auf

    Viele Performanceprobleme wachsen mit der Datenmenge, nicht mit der Nutzerzahl: fehlende Indizes, Sortierungen, N+1-Abfragen. Ein Lasttest ist nur so aussagekräftig wie die Ähnlichkeit seiner Umgebung zur Produktion.

  13. Immer derselbe Kunde ★★☆ Testdaten · Caching

    Alle virtuellen Nutzer im Lasttest rufen dieselbe Kundennummer und dasselbe Produkt ab.

    Warum sind die Ergebnisse vermutlich zu gut?

    Lösung anzeigen

    Richtig: Die Daten landen im Cache, echte Nutzer fragen dagegen viele verschiedene Daten ab

    Datenbank-, Anwendungs- und Betriebssystem-Caches liefern wiederholte Daten aus dem Speicher. In Produktion streuen die Zugriffe. Testdaten sollten deshalb aus einer großen, realistischen Menge gezogen werden.

  14. Der wartende Lastgenerator ★★★ Messmethodik

    Ein Lastwerkzeug soll alle 100 ms eine Anfrage senden. Es wartet aber immer erst auf die Antwort. Bei einer Störung hängt eine Antwort 10 Sekunden.

    Welcher Messfehler entsteht?

    Lösung anzeigen

    Richtig: Die etwa 100 Anfragen, die während der Störung hätten starten sollen, werden nie gemessen; die Messung wirkt zu gut

    Dieser Effekt heißt „Coordinated Omission“. Echte Nutzer warten nicht aufeinander, sie kommen weiter. Das Werkzeug misst eine langsame Anfrage, statt 100 betroffener Nutzer. Gute Werkzeuge senden nach festem Zeitplan oder korrigieren das rechnerisch.

  15. Langsame Suche nach E-Mail ★☆☆ Datenbank

    SELECT * FROM kunde WHERE email = ? dauert bei 4 Millionen Kunden 3 Sekunden. Die Tabelle hat nur einen Index auf id.

    Was ist die naheliegendste Verbesserung?

    Lösung anzeigen

    Richtig: Einen Index auf die Spalte email anlegen

    Ohne Index muss die Datenbank alle 4 Millionen Zeilen lesen. Mit Index findet sie den Eintrag in wenigen Schritten (ähnlich der Binärsuche). Der Ausführungsplan (EXPLAIN) zeigt, ob ein Index genutzt wird.

  16. Blättern ganz hinten ★★★ Datenbank · Pagination

    Seite 1 einer Liste lädt in 20 ms. Seite 50.000 mit OFFSET 1.000.000 LIMIT 20 braucht 4 Sekunden.

    Warum?

    Lösung anzeigen

    Richtig: Die Datenbank muss die übersprungenen Zeilen trotzdem durchgehen

    OFFSET heißt „überspringe“, aber überspringen kostet Arbeit: Eine Million Zeilen werden gelesen und verworfen. Cursor-basiertes Blättern (WHERE id > letzte_id) ist dagegen für jede Seite gleich schnell.

  17. Langsame Startseite ★☆☆ Frontend

    Eine Startseite lädt auf dem Handy 9 Sekunden. Die Messung im Browser zeigt: Das Titelbild ist 8 MB groß.

    Was bringt am meisten?

    Lösung anzeigen

    Richtig: Das Bild verkleinern und komprimieren, z. B. in passender Größe als WebP

    8 MB über eine mobile Verbindung dauern Sekunden, egal wie schnell der Server ist. Ein Titelbild braucht meist unter 300 KB. Die Entwicklerwerkzeuge des Browsers (Netzwerk-Tab) zeigen solche Brocken sofort.

  18. Regelmäßige Ausschläge ★★★ Java · Garbage Collection

    Eine Java-Anwendung antwortet meist in 50 ms. Etwa alle drei Minuten dauern alle Anfragen gleichzeitig kurz 2 Sekunden.

    Was ist eine naheliegende Ursache?

    Lösung anzeigen

    Richtig: Pausen der Garbage Collection, bei denen die JVM kurz anhält

    Ein regelmäßiges Muster, das alle Anfragen gleichzeitig trifft, passt gut zu GC-Pausen. Die GC-Logs zeigen es eindeutig. Abhilfen: weniger Objekte erzeugen, Heap passend wählen, einen Collector mit kurzen Pausen nutzen (G1, ZGC). Ein Backup wäre ebenfalls denkbar, deshalb Logs prüfen statt raten.

  19. Gute Performance-Anforderung ★★☆ Abnahmekriterien

    Für die Abnahme eines Lasttests soll ein Kriterium formuliert werden.

    Welches ist vollständig?

    Lösung anzeigen

    Richtig: Bei 500 gleichzeitigen Nutzern: 95 % der Anfragen unter 1 s, Fehlerquote unter 0,1 %

    Zu einem prüfbaren Kriterium gehören Last, Antwortzeit als Perzentil und Fehlerquote. Ein System, das unter Last die Hälfte der Anfragen mit Fehler ablehnt, antwortet sehr schnell, besteht aber trotzdem nicht.

  20. Apdex ★★★ Kennzahlen · Formeln

    Apdex bewertet die Zufriedenheit mit Antwortzeiten: zufrieden (bis T), toleriert (bis 4T), frustriert (darüber). Formel: (zufrieden + toleriert/2) / alle. Von 100 Anfragen: 60 zufrieden, 30 toleriert, 10 frustriert.

    Wie hoch ist der Apdex-Wert?

    Lösung anzeigen

    Richtig: 0,75

    (60 + 30/2) / 100 = 75 / 100 = 0,75. 1,0 wäre perfekt, unter 0,5 gilt als inakzeptabel. Der Wert fasst Perzentile in eine Zahl zusammen, die sich auch Nicht-Technikern gut erklären lässt.