Internet Briefing. Developer Konferenz. Clientseitige Last- & Performancetesting. Jürg Stuker. CEO. Partner. 8. Dezember 2011
Thema 1 Verstehen was zwischen User Agent und Server geschwatzt wird... 8. Dez. 2011 2
Thema 2 Verhalten der Anwendung unter Last (#User und #Traffic) 8. Dez. 2011 3
Verstehen 8. Dez. 2011 4
Welche Elemente lädt der Browser? - unconditional request - conditional request Browser http/s Website 8. Dez. 2011 5
Unconditional versus conditional à Unconditional (leerer Cache / erster Besuch) Browser GET Website à Conditional (hat das/ein Element lokal) Browser If-Modified- Since? 304 Website 8. Dez. 2011 6
Was lädt der Browser? - Quelle - Grösse - Anzahl Requests - Reihenfolge - Headerdaten / Protkoll Browser http/s Website 8. Dez. 2011 7
Welche Elemente lädt der Browser? - im Vergleich zur alten Website Browser http/s Website 8. Dez. 2011 8
Lesen... must should à http://stevesouders.com/ à Caching verstehen! z.b. http://www.mnot.net/cache_docs/ à http://code.google.com/ speed/articles/ 8. Dez. 2011 9
Tools 8. Dez. 2011 10
Tool 1: Firebug à https://addons.mozilla.org/de/firefox/addon/firebug/ 8. Dez. 2011 11
Tool 2: http://www.webpagetest.org/ 8. Dez. 2011 12
Tool 3: http://www.proxy-sniffer.com/ 8. Dez. 2011 13
Tool 4: http://www.charlesproxy.com/ (USD 50) 8. Dez. 2011 14
Wann welches Tool (Fokus Ladeverhalten)? Firebug Webpagetest Charles Proxy Sniffer Browser nur FFox ausgewählte alle alle Testpunkt lokal remote (unkontrolliert) lokal Details ++ - ++ + Aufzeichnung nein nein ja ja Automatisierung nein nein nein ja lokal / remote (kontrolliert) Kosten gratis gratis USD 50 gratis / Lizenz für Mobile nein nein ja (Proxy) ja (Proxy) Spezialität - Clientcode Analyse - Übersicht - Sicht aus dem Internet - Throttling - Rewrite - FFox Menu - CMD Line - Lasttest Sackmesser Fast Food Rolls Royce Alles drin 8. Dez. 2011 15
Last- und Performancetesting (mit Proxy Sniffer) 8. Dez. 2011 16
Was? à Lastverhalten und Performance Auslieferungszeit der Seiten (Usersicht) Anzahl parallele Users benötigte Bandbreite à Stabilität über Zeit à Memory Leaks & Overflows unter Last à Concurrency & Deadlocks à Fittness der Infrastruktur à Reproduktion von Problemen für Fixing 8. Dez. 2011 17
Wann? Anforderungen Integration / Deployment Proof of Concept Entwicklung Going Live Betrieb Spezifikation der Bedürfnisse gleichzeitigen User Anzahl Requests User Stories Antwortszeit / - verteilung Test eingesetzter Frameworks Test der Anwendung Bei jedem Release / Fix 8. Dez. 2011 18
Vorsicht à Lasttests generieren Last! 8. Dez. 2011 19
Komponenten von Proxy Sniffer à Nur zwei Dateien: prxsniff.jar (16.4 MB) and prxsniff.key à Gute Doku port 7990 WebAdmin / GUI port 7999 HTTP Proxy port 7993 Exec Agent port 7995 Job Controller aufzeichnen ausführen 8. Dez. 2011 20
Ablauf einer Testsequenz Szenario aufzeichnen anpassen (one thing at the time) Validieren (Aufzeichung anpassen) Test auswerten Test generieren (java) Test ausführen Test kompilieren (class) 8. Dez. 2011 21
Test ausführen und auswerten 8. Dez. 2011 22
Demo von Proxy Sniffer à Am Vortrag live gezeigt und sich hier im Überblick: http://www.youtube.com/watch?v=kp7zxgtbync 8. Dez. 2011 23
Interpretation à Viel Lesen à Erfahrung à... 8. Dez. 2011 24
Beispiel 1 Kapazitätsgrenze 12Mb / Sekunde instabil 8. Dez. 2011 25
Beispiel 2 85Mb / Sekunde 8. Dez. 2011 26
Beispiel 3 Problem mit Nebenläufigkeit 8. Dez. 2011 27
Beispiel 4 wunderbar 8. Dez. 2011 28
Wie? à Richtig schwierig ist das Szenario User Stories als Grundlage ( follow the money ) Auftraggeber / Domänenexperte Analytics (zuzüglich Sicherheitsmarge) à Unterschiedliche Testaspekte Bandbreite à ein grosses Element max. wiederholen Anzahl Transaktionen: Kurze Testzyklen mit steigender Nutzerzahl 1, 5, 25, 50, 75, 100... (Asymptote / Crash) Long Runner à Wenig Last aber sehr lange System unter Last stoppen und starten 8. Dez. 2011 29
Wo klemmts (typischerweise)? à Network (Pipe, Router, Firewall) < 1% à Load Balancer 5 % à Reverse Proxy (Produkt) 5 % à Reverse Proxy (Konfiguration) 10 % à OS Konfiguration (TCP/IP Stack) 5 % à Framework 10 % à Konfiguration der Anwendung 20 % à Programmcode der Anwendung 40 % à Datenbankmanagementsystem 5% Quelle: David Fischer 8. Dez. 2011 30
Zusammenfassung 8. Dez. 2011 31
Zusammenfassung à IMMER testen à Produkteigentümer definiert die Anforderungen à früh im Projekt testen (aber spät optimieren) à Möglichst nahe am Produktionssystem testen à 90% der Requests genügen (ausser bei Fehlern) à Guten Szenarien sind die Knacknuss 8. Dez. 2011 32
Internet Briefing. Developer Konferenz. Clientseitige Last- & Performancetests. juerg.stuker@namics.com @jstuker 8. Dezember 2011