Loadtesting
oder
Was ist Performance?
Wer bist du ???
- Bastian Widmer
- Informatiker
- Liip AG
- Web Operations Team
Agenda
- Wieso dieser Vortrag?
- Was ist Performance?
- Performance - Fallbeispiele
- Klassischer Ablauf bei "Performance Problemen"
- Tools
- Lasttests schreiben
- Ziele definieren
- "Lasttest-Dienstleistung" einkaufen
- Lasttest ausführen und skalieren
- Auswerten der Resultate
Wieso dieser Vortrag?
- Jmeter, Grinder, ApacheBench anyone?
- Diskussionen über Lasttesting/Perfromance Probleme/
- Der Spassfaktor an Lasttests ist etwa gleich hoch wie IE6 CSS optimierung.
- Grundlagenvermittlung
- Optimierungsmöglichkeiten
- "Ein Test hätte gereicht..."
User : "Das Backend der Webseite ist fürchterlich langsam!"
User sind mühsahm!
- Userfeedback ist gefühlte Performance
- Stützt sich in 99.9999999999999987% der Fälle auf Annahmen
- selten / nicht reproduzierbar
- User sind voreingenommen
- +"*ç%(/)=?!
- User-Performance = Hangelenk * 3.14 * sqrt(2.718 / 9.81) * |Stimmung|*-1
Aber wie ...
...erhalten wir etwas Aussagekräftiges?
Startsituation — "Baseline"
input => {magie} => output
Endsituation (nach Optimierungen)
ca. 2/3 Schneller... belegbar und reproduzierbar
Hey Bastian ich habe etwas zum knobeln für dich!
Du hast einen neuen ungetesteten Serververbund mit 2 Frontend-Servern. Wir beginnen mit 7 Webseiten und skalieren bis 40. Jede dieser Seiten hat ca. 90k - 220k Hits Pro Monat Pro seite.
Funktioniert das?
Gib mir Zeit zum rechnen...
- Sites : avg(7,40) = ~23
- Hits/Month/Site: avg(90k, 220k) = ~155k
(23 Sites * (155 * 10^3 Hits/Month))
(30days * 24hours * 60minutes)
Kritik an dieser Rechnung?
- Tag / Nacht Schwankung nicht einbezogen
- Minima-Maxima der Webseiten nur sehr grob kalkuliert
- Auf längere Zeit nicht Praktikabel... (skalierung)
- Aber : solider Startpunkt...
Klassischer Ablauf bei "Performance Problemen"
- negatives Kundenfeedback
- Tests (von Hand)
- Beheben von 2-3 Bugs
- Performance immer noch im Keller (Kunde leicht säuerlich)
- AwesomeDoWhatImeanHotfix-Einspielen
- Traffic auf CDN's auslagern
- Kosten und Aufwand verhält sich derzeit reziprok zur Kundenzufriedenheit
- Optimieren des Client-Side Caches
- Cache Server hinstellen -> Varnish, TrafficServer
- Andere Optimierungen: Frontend Performance Considerations
Wieso es Sinn macht von Beginn an zu testen
keine weniger böse Überraschungen
- Reproduzierbare Testfälle
- Optimierungen sind ersichtlich
- Kein nachträgliches Bugfixing (das Kosten verursacht)
- Bessere Schlafqualität...
- Valide Argumente
The Tools
The Tools
- Apache Bench
- The Grinder
- Jmeter
many more like FunkLoad, Hammerhead2, Siege, curl-loader
simple, stupid: ApacheBench
~ > ab -n150 http://bastianwidmer.ch
the Grinder
- komplexer Start -> scripting Javagedöns
- Proxy basierte Aufzeichnung von Tests
- komplexer Aufbau
- http://grinder.sourceforge.net/
the Grinder
Demo : the Grinder
- Oberfläche
- Aufzeichnung
- Agents/Threads/Worker
Apache Jakarta Jmeter
- schöne Ausgaben =)
- Proxy basierte Aufzeichnung von Tests
- Einfacher Aufbau
- Hansdampf in allen Gassen (WEB, SOAP, Datenbanken, LDAP
- http://jakarta.apache.org/jmeter/
Demo : Jakarta Jmeter
- Oberfläche
- Aufzeichnung
- Testruns
Ablauf
- Lasttests schreiben
- Ziele definieren
- Lasttest ausführen und skalieren
- Auswerten der Resultate
Lasttests "schreiben"
- Denke wie ein Benutzer
- Zeichne verschiedene 'User Stories' auf
- Johny Awesome — Blättert die News der Seite vor und zurück
- Lilly Dontknowhere — Sie nutzt die Suche der Webseite
- und so weiter... sei kreativ!
Ziele definieren
- Definiere die Dauer/Iterationen der Tests
- Definiere die Anzahl paralleler Benutzer
- Definiere die Zeit um die Peak Last zu erreichen
- Definiere Ziele (Response Zeiten)
Lasttests durchführen
- Zuerst: Tests mit lokalen Resourcen durchführen und verbessern
- Danach: Last multiplizieren mit AWS EC2 als Lastgenerator
Fire!
Halt halt halt, eine Bitte :
Informiert eure Hoster, bevor Ihr beginnt die Server zu belasten. Sie werden es euch danken!
Infrastruktur? Cloud? Skalieren?
Hää?
Kann ich die Dienstleistung auch einkaufen?
Kyte from Keynote
- Sehr schönes Test Planning Tool
- Weltweit 240 Test Standorte
- Reale Browser Tests
Kosten: 20k - 40k $ wenn die Tests durch einen Consultant erstellt werden (Load Pro Plan)
IT Dienstleister aus Bern
- Infrastruktur: AWS EC2 Instanzen
- Tool: Jmeter
Kosten : 60k - 80k SFR
Selfmade Solution
- Infrastruktur: AWS EC2 Instanzen
- Tool: Grinder
Kosten : 120 SFR
Und wie das?
Grinder in the Cloud
Loadgenerators : 10 Hosts with 3 Workers on 5 Threads = 150 parallel users at the same time
the Grinder / Jmeter in the Cloud
- Schnelle skalierbarkeit
- "günstig"
- Kontrolle über Zeitpunkt und Umfang der Tests
Links
Daten Auswerten
- Baseline mit Gesehenem und den Zielen quervergleichen
- Server Daten auswerten:
- hohe CPU Last — htop, sar, sysstat-package
- hobe RAM auslastung — htop, sysstat-package
- Error Logs — Splunk,syslog oder cat,tail,grep
Danke für die Aufmerksamkeit!
Liip is hiring!
liip.ch/jobs