Internet Briefing. Developer Konferenz.
Clientseitige Last- & Performancetesting. Namics.




Jürg Stuker. CEO. Partner.
8. Dezember 2011
Thema 1




Verstehen was zwischen
User Agent und Server
geschwatzt wird...


8. Dez. 2011   2   Last. Performance. Im Griff. Namics.
Thema 2




Verhalten der Anwendung
unter Last (#User und
#Traffic)


8. Dez. 2011   3   Last. Performance. Im Griff. Namics.
Verstehen




8. Dez. 2011   4   Last. Performance. Im Griff. Namics.
Welche Elemente lädt der Browser?
                        - unconditional request
                         - conditional request




    Browser                         http/s
                                                  Website




8. Dez. 2011   5                                       Last. Performance. Im Griff. Namics.
Unconditional versus conditional
 Unconditional (leerer Cache / erster Besuch)

                                GET
                   Browser                  Website




 Conditional (hat das/ein Element lokal)
                             If-Modified-
                                Since?
                   Browser                  Website
                                 304




8. Dez. 2011   6                                 Last. Performance. Im Griff. Namics.
Was lädt der Browser?
                           - Quelle
                          - Grösse
                     - Anzahl Requests
                       - Reihenfolge
                   - Headerdaten / Protkoll



    Browser                     http/s
                                              Website




8. Dez. 2011   7                               Last. Performance. Im Griff. Namics.
Welche Elemente lädt der Browser?
                    - im Vergleich zur alten Website




    Browser                         http/s
                                                  Website




8. Dez. 2011   8                                       Last. Performance. Im Griff. Namics.
Lesen...

must                                should
                                     http://stevesouders.com/




                                     http://code.google.com/sp
 Caching verstehen!                  eed/articles/

         z.B. http://www.mnot.net/cache_docs/
8. Dez. 2011   9                                 Last. Performance. Im Griff. Namics.
Tools




8. Dez. 2011   10   Last. Performance. Im Griff. Namics.
Tool 1: Firebug
 https://addons.mozilla.org/de/firefox/addon/firebug/




8. Dez. 2011   11                           Last. Performance. Im Griff. Namics.
Tool 2: http://www.webpagetest.org/




8. Dez. 2011   12                     Last. Performance. Im Griff. Namics.
Tool 3: http://www.proxy-sniffer.com/




8. Dez. 2011   13                       Last. Performance. Im Griff. Namics.
Tool 4: http://www.charlesproxy.com/ (USD 50)




8. Dez. 2011   14                   Last. Performance. Im Griff. Namics.
Wann welches Tool (Fokus Ladeverhalten)?

                    Firebug        Webpagetest      Charles             Proxy Sniffer
 Browser            nur FFox       ausgewählte      alle                alle
 Testpunkt          lokal          remote           lokal               lokal / remote
                                   (unkontrolliert)                     (kontrolliert)
 Details            ++             -                ++                  +
 Aufzeichnung nein                 nein             ja                  ja
 Automati-          nein           nein             nein                ja
 sierung
 Kosten             gratis         gratis           USD 50              gratis / Lizenz
 für Mobile         nein           nein             ja (Proxy)          ja (Proxy)
 Spezialität        - Clientcode   - Sicht “aus     - Throttling        - CMD Line
                      Analyse      dem Internet”    - Rewrite           - Lasttest
                    - Übersicht                     - FFox Menu
                    Sackmesser     Fast Food        Rolls Royce         Alles drin
8. Dez. 2011   15                                           Last. Performance. Im Griff. Namics.
Last- und Performancetesting (mit Proxy Sniffer)




8. Dez. 2011   16                    Last. Performance. Im Griff. Namics.
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                                   Last. Performance. Im Griff. Namics.
Wann?


                                                              Integration /
                                                              Deployment
                                    Proof of
        Anforderungen               Concept     Entwicklung       Going Live        Betrieb




                    Spezifikation der       Test              Test der
                    Bedürfnisse             eingesetzter      Anwendung
                    • gleichzeitigen User   Frameworks
                    • Anzahl Requests                                           Bei jedem
                    • User Stories                                              Release / Fix
                    • Antwortszeit / -
                    verteilung

8. Dez. 2011   18                                                 Last. Performance. Im Griff. Namics.
Vorsicht
 Lasttests generieren Last!




8. Dez. 2011   19              Last. Performance. Im Griff. Namics.
Komponenten von Proxy Sniffer
 Nur zwei Dateien: prxsniff.jar (16.4 MB) and prxsniff.key
 Gute Doku



                                     port 7999         aufzeichnen
                                     HTTP Proxy
                    port 7990
                    WebAdmin / GUI
                                     port 7993
                                     Exec Agent        ausführen

                                      port 7995
                                      Job Controller


8. Dez. 2011   20                                         Last. Performance. Im Griff. Namics.
Ablauf einer Testsequenz

         Szenario                                               anpassen (one
         aufzeichnen                                            thing at the time)


                    Validieren
                    (Aufzeichung                      Test auswerten
                    anpassen)


                          Test generieren
                                            Test ausführen
                          (java)



                                   Test kompilieren
                                   (class)
8. Dez. 2011   21                                        Last. Performance. Im Griff. Namics.
Test ausführen und auswerten




8. Dez. 2011   22              Last. Performance. Im Griff. Namics.
Demo von Proxy Sniffer




 Am Vortrag live gezeigt und sich hier im Überblick:

       http://www.youtube.com/watch?v=kP7ZxGTBync




8. Dez. 2011   23                           Last. Performance. Im Griff. Namics.
Interpretation
 Viel Lesen
 Erfahrung
 ...




8. Dez. 2011   24   Last. Performance. Im Griff. Namics.
Beispiel 1


                    Kapazitätsgrenze




                                       12Mb / Sekunde



                     instabil




8. Dez. 2011   25                            Last. Performance. Im Griff. Namics.
Beispiel 2




                    85Mb / Sekunde




8. Dez. 2011   26              Last. Performance. Im Griff. Namics.
Beispiel 3




                    Problem mit
                    Nebenläufigkeit




8. Dez. 2011   27                     Last. Performance. Im Griff. Namics.
Beispiel 4
                                   wunderbar




8. Dez. 2011   28   Last. Performance. Im Griff. Namics.
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                                   Last. Performance. Im Griff. Namics.
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                    Last. Performance. Im Griff. Namics.
Zusammenfassung




8. Dez. 2011   31   Last. Performance. Im Griff. Namics.
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                           Last. Performance. Im Griff. Namics.
Internet Briefing. Developer Konferenz.
Clientseitige Last- & Performancetests. Namics.




juerg.stuker@namics.com
@jstuker
8. Dezember 2011

Last- und Performancetesting

  • 1.
    Internet Briefing. DeveloperKonferenz. Clientseitige Last- & Performancetesting. Namics. Jürg Stuker. CEO. Partner. 8. Dezember 2011
  • 2.
    Thema 1 Verstehen waszwischen User Agent und Server geschwatzt wird... 8. Dez. 2011 2 Last. Performance. Im Griff. Namics.
  • 3.
    Thema 2 Verhalten derAnwendung unter Last (#User und #Traffic) 8. Dez. 2011 3 Last. Performance. Im Griff. Namics.
  • 4.
    Verstehen 8. Dez. 2011 4 Last. Performance. Im Griff. Namics.
  • 5.
    Welche Elemente lädtder Browser? - unconditional request - conditional request Browser http/s Website 8. Dez. 2011 5 Last. Performance. Im Griff. Namics.
  • 6.
    Unconditional versus conditional Unconditional (leerer Cache / erster Besuch) GET Browser Website  Conditional (hat das/ein Element lokal) If-Modified- Since? Browser Website 304 8. Dez. 2011 6 Last. Performance. Im Griff. Namics.
  • 7.
    Was lädt derBrowser? - Quelle - Grösse - Anzahl Requests - Reihenfolge - Headerdaten / Protkoll Browser http/s Website 8. Dez. 2011 7 Last. Performance. Im Griff. Namics.
  • 8.
    Welche Elemente lädtder Browser? - im Vergleich zur alten Website Browser http/s Website 8. Dez. 2011 8 Last. Performance. Im Griff. Namics.
  • 9.
    Lesen... must should  http://stevesouders.com/  http://code.google.com/sp  Caching verstehen! eed/articles/  z.B. http://www.mnot.net/cache_docs/ 8. Dez. 2011 9 Last. Performance. Im Griff. Namics.
  • 10.
    Tools 8. Dez. 2011 10 Last. Performance. Im Griff. Namics.
  • 11.
    Tool 1: Firebug https://addons.mozilla.org/de/firefox/addon/firebug/ 8. Dez. 2011 11 Last. Performance. Im Griff. Namics.
  • 12.
    Tool 2: http://www.webpagetest.org/ 8.Dez. 2011 12 Last. Performance. Im Griff. Namics.
  • 13.
    Tool 3: http://www.proxy-sniffer.com/ 8.Dez. 2011 13 Last. Performance. Im Griff. Namics.
  • 14.
    Tool 4: http://www.charlesproxy.com/(USD 50) 8. Dez. 2011 14 Last. Performance. Im Griff. Namics.
  • 15.
    Wann welches Tool(Fokus Ladeverhalten)? Firebug Webpagetest Charles Proxy Sniffer Browser nur FFox ausgewählte alle alle Testpunkt lokal remote lokal lokal / remote (unkontrolliert) (kontrolliert) Details ++ - ++ + Aufzeichnung nein nein ja ja Automati- nein nein nein ja sierung Kosten gratis gratis USD 50 gratis / Lizenz für Mobile nein nein ja (Proxy) ja (Proxy) Spezialität - Clientcode - Sicht “aus - Throttling - CMD Line Analyse dem Internet” - Rewrite - Lasttest - Übersicht - FFox Menu Sackmesser Fast Food Rolls Royce Alles drin 8. Dez. 2011 15 Last. Performance. Im Griff. Namics.
  • 16.
    Last- und Performancetesting(mit Proxy Sniffer) 8. Dez. 2011 16 Last. Performance. Im Griff. Namics.
  • 17.
    Was?  Lastverhalten undPerformance  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 Last. Performance. Im Griff. Namics.
  • 18.
    Wann? Integration / Deployment Proof of Anforderungen Concept Entwicklung Going Live Betrieb Spezifikation der Test Test der Bedürfnisse eingesetzter Anwendung • gleichzeitigen User Frameworks • Anzahl Requests Bei jedem • User Stories Release / Fix • Antwortszeit / - verteilung 8. Dez. 2011 18 Last. Performance. Im Griff. Namics.
  • 19.
    Vorsicht  Lasttests generierenLast! 8. Dez. 2011 19 Last. Performance. Im Griff. Namics.
  • 20.
    Komponenten von ProxySniffer  Nur zwei Dateien: prxsniff.jar (16.4 MB) and prxsniff.key  Gute Doku port 7999 aufzeichnen HTTP Proxy port 7990 WebAdmin / GUI port 7993 Exec Agent ausführen port 7995 Job Controller 8. Dez. 2011 20 Last. Performance. Im Griff. Namics.
  • 21.
    Ablauf einer Testsequenz Szenario anpassen (one aufzeichnen thing at the time) Validieren (Aufzeichung Test auswerten anpassen) Test generieren Test ausführen (java) Test kompilieren (class) 8. Dez. 2011 21 Last. Performance. Im Griff. Namics.
  • 22.
    Test ausführen undauswerten 8. Dez. 2011 22 Last. Performance. Im Griff. Namics.
  • 23.
    Demo von ProxySniffer  Am Vortrag live gezeigt und sich hier im Überblick: http://www.youtube.com/watch?v=kP7ZxGTBync 8. Dez. 2011 23 Last. Performance. Im Griff. Namics.
  • 24.
    Interpretation  Viel Lesen Erfahrung  ... 8. Dez. 2011 24 Last. Performance. Im Griff. Namics.
  • 25.
    Beispiel 1 Kapazitätsgrenze 12Mb / Sekunde instabil 8. Dez. 2011 25 Last. Performance. Im Griff. Namics.
  • 26.
    Beispiel 2 85Mb / Sekunde 8. Dez. 2011 26 Last. Performance. Im Griff. Namics.
  • 27.
    Beispiel 3 Problem mit Nebenläufigkeit 8. Dez. 2011 27 Last. Performance. Im Griff. Namics.
  • 28.
    Beispiel 4 wunderbar 8. Dez. 2011 28 Last. Performance. Im Griff. Namics.
  • 29.
    Wie?  Richtig schwierigist 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 Last. Performance. Im Griff. Namics.
  • 30.
    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 Last. Performance. Im Griff. Namics.
  • 31.
    Zusammenfassung 8. Dez. 2011 31 Last. Performance. Im Griff. Namics.
  • 32.
    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 Last. Performance. Im Griff. Namics.
  • 33.
    Internet Briefing. DeveloperKonferenz. Clientseitige Last- & Performancetests. Namics. juerg.stuker@namics.com @jstuker 8. Dezember 2011