PerformancemessungJetzt
 in
 Echt!
Guten morgen!Guten morgen zusammen! Wie immer bin ich mit einem weinenden Auge in Berlin, und nocheinem weinenden. Eigent...
KekseIch werde heute abend wieder lecker italienisch Essen. Aber ich habe Euch ein paar Keksemitgebrachte, bitte einfach ...
Dieser Talk istKeine Copy  Paste AnleitungGrundlagen  Ideen FTW!Wer etwas besser/mehr weiß:Willkommen!Präambel
Ihr?Wer von Euch hat schon Erfahrungen mit Performancemessung gemacht?
ab(2), siege, httperf?Welche Tools habt Ihr eingesetzt? Das sind die drei Klassiker, die praktisch jeder schoneinmal ange...
Loadrunner, Webload,OpenSTA, Jmeter, Grinder?Daneben gibt es die dicken Tools, die erheblich mehr können und mehr für Sze...
OpenSource FTW!JmeterIch beschränke mich hier auf OpenSource, konkret auf Jmeter. Warum?Weil es ok ist, kostenlos - nicht...
?Warum der Talk?Aber warum mache ich diesen Talk. Das hat eigentlich einen ganz einfachen Grund.
We suckat load testing.Wir sind echt schlecht in Load Testing, meistens sind unsere Vorraussagen echtunzuverlässig, und g...
But we suckedeven moresome years ago.Aber früher waren wir noch deutlich schlechter. Inzwischen haben wir gelegentliche T...
LearningsEs geht also darum, was wir gelernt haben, neudeutsch learnings. Und da haben wir eineganze Menge gelernt.
Wir, das sind Mayflower, und das ist unser Logo in Bacon. Wir machen mit ca 70 EntwicklernWebapplikationen, ein paar bekann...
1 Werbeblock4 WebsitesWir haben es schon erlebt dass in einem einzigen Werbeblock auf Pro7 4 Werbungen fürWebseiten kamen...
Genau.Das gibt Traffic.Jepp, das gibt in der Tat Traffic.
Live-EventsEinmal-AktionenHeise-DDOSLaunchesBeratend sind wir auch häufig mit dabei, etwa wenn ein eine neue populäre Platt...
5000Nutzer parallel?Wenn es gut läuft und wir vor den Problemen gefragt werden, oder wir selber mitbestimmendürfen, dann w...
?„Werden wirProblemehaben?“Und er will wissen, ob es Probleme gibt oder nicht.
„Vermutlich nicht?“Und, wenn wir als Entwickler ehrlich sind, können wir nur sagen:Vermutlich nicht. Oder am besten ist je...
„ Es könnte schon klappen.“Wir schliessen aber auch nicht aus, dass die Seite funktioniert.
„Wir können ja malLoad -Testen“.Am Ende kommt man dann auf die Idee, Load Testing zu machen.Oder alles an Daten anschauen,...
• ab• siege• httperfab -n 100 -c 50 http://mayflower.de/Also nimmt man sich die Tools, mit denen man an einem Tag vorranko...
?„Werden wirProblemehaben?“Und er will wissen, ob es Probleme gibt oder nicht.
„Vermutlich nicht.“Wenn 50 Leute jeweils zweimalauf die Homepage klicken ist alles gut.Und wir sind ein bischen sicherer g...
Abandon thetransaction,try later on computer43 %Go directly to acompetitor 12 %Become more likely toprefer a competitor 16...
„Vermutlich nicht.“Vermutlich nicht reicht ihm also nicht als Aussage.
„Wo liegen unsere Limits?“Schauen wir doch mal, wie wir ihm den Gefallen tun können, und grössere Sicherheitbekommen können.
?„Werden die Ressourcenreichen?“Die Frage die dahinter steht ist eigentlich: „Werden die Ressourcen reichen?“Wird das, was...
RessourcenWebserverRessourcen: das sind erst mal alle Komponenten, die in so einer Webapplikation eine Rollespielen, also...
RessourcenWebserverDatenbankserverRessourcen: das sind erst mal alle Komponenten, die in so einer Webapplikation eine Rol...
RessourcenWebserverDatenbankserverCachesRessourcen: das sind erst mal alle Komponenten, die in so einer Webapplikation ei...
RessourcenWebserverDatenbankserverCachesMessage QueuesRessourcen: das sind erst mal alle Komponenten, die in so einer Web...
RessourcenWebserverDatenbankserverCachesMessage QueuesProxiesRessourcen: das sind erst mal alle Komponenten, die in so ei...
RessourcenWebserverDatenbankserverCachesMessage QueuesProxiesStorageRessourcen: das sind erst mal alle Komponenten, die i...
RessourcenCPU Request:30-2000 ms CPU-ZeitUnd eigentlich finden diese Ressourcen innerhalb der Server statt. Die offensicht...
RessourcenCPU Request:30-2000 ms CPU-ZeitRAM Request:ca 20 MB Resident SizeAn zweiter Stelle kommt RAM. Da sind wir weder...
RessourcenCPU Request:30-2000 ms CPU-ZeitRAM Request:ca 20 MB Resident SizeStorage Request:0-X0.000 OpsAn dritter Stelle ...
RessourcenCPU Request:30-2000 ms CPU-ZeitRAM Request:ca 20 MB Resident SizeStorage Request:0-X0.000 OpsNetzwerk Request:0...
Ressourcen500 msCPU-Zeit100 MBRam im Peak1000Filesystem-Ops2 MBNetwork TrafficRegistrationSchauen wir uns doch mal einen Re...
Ressourcen0%1,75%3,5%5,25%7%CPU RAM DISK NETWORK2%5%0,7%6,25%RegistrationDie Registration ist ein dicker Schritt im Regel...
ab -n 1000 .../register0%1,75%3,5%5,25%7%CPU RAM DISK NETWORK2%5%0,7%6,25%RegistrationSchauen wir uns doch mal vor diesem...
ab -n 1000 .../registerErwartung:15 Requests/secMessung:2 Requests/secondWas bekomme ich heraus, wenn ich das mache?Der T...
Ressourcen0%25%50%75%100%CPU RAM DISK NETWORKRegistration Video Streams Community LoginPraktisch ist der Traffic sehr vie...
0%25%50%75%100%CPU RAM DISK NETWORKRegistration Video Stream Community LoginRessourcen sindSchweineWas wir hier aber geler...
0%25%50%75%100%CPU RAM DISK NETWORKRegistration Video Stream Community LoginCPUwirdRAMCPU wird zB zu RAM. Wenn die CPU nic...
0%25%50%75%100%CPU RAM DISK NETWORKRegistration Video Stream Community LoginRAMwirdStorageDas gleiche gilt auch noch weite...
0%25%50%75%100%CPU RAM DISK NETWORKRegistration Video Stream Community LoginUnd auch das Verhalten der Nutzer ändert sich...
Langsamer Login?Reload ... Reload ... Reload ... Reload ...Reload ... Reload ... Reload ... Reload ...Und was passiert, w...
Langsamer Login!... weniger Nutzer in der CommunityAber nicht nur die Anzahl der Nutzer im Ressourcennutzungsprofil Login w...
Fazit: DasSystemverhaltenbeeinflusst dasNutzerverhaltenbeeinflusst dasSystemverhaltenIm Fazit beeinflussen sich also die Plat...
Ressourcen sindSchweineO(n)Und nicht nur in der Beziehung sind die Ressourcen Schweine - sie verhalten sich nämlichalles a...
KomplexitätO(n)Genau, Komplexität. Wofür gibt es Komplexität?CPU, und weniger oft genannt: Speicher.In der Praxis gilt das...
O(n)Konstant 100% CachingLogarithmisch Gutes CachingLinear BilduploadQuadratisch Friend of a FriendExponentiell Optimales ...
O(n)051015201 2 3 4 5 6 7 8 9 10Konstant Logarithmisch Linear QuadratischExponentiell100 Nutzer != 2 * 50 NutzerUnd genau ...
Fazit:Ressourcen sind nonlinearRessourcen beeinflussen sichund das NutzerverhaltenDamit haben wir die klassischen Eigensch...
Wie man trotzdem gewinnt.Die Rahmenbedingungen hören sich ja erst mal nicht gut an. Wer ist ebenfalls der Meinung,dass di...
Die Plattformexistiert schon.Wenn die Plattform schon existiert: Hervorragend. Das macht es einfacher.
Die Plattformexistiert schon.99,99%Und das ist auch genau die Stelle, an der wir die 99,99% Sicherheit bekommen können.
1 Top Seitennach Hitscut -d  -f6,7 access.log |sort |uniq -c |sort -rnZunächst einmal muss ich die aktuelle Nutzung analys...
1 Top Seitennach HitsAnalyse in ExcelIch will das gleiche Verhalten in meiner Simulation - also schaue ich mir an, wie vie...
1 Top Seitennach HitsAnalyse in ExcelIch will das gleiche Verhalten in meiner Simulation - also schaue ich mir an, wie vie...
1 Top Seitennach HitsAnalyse in ExcelIch will das gleiche Verhalten in meiner Simulation - also schaue ich mir an, wie vie...
2Click StreamAnalyseAber diese Requests alleine machen ja nicht das Nutzerverhalten aus - manche Requests, imobigen Beispi...
2Click StreamAnalysewrite writeread writeread readwrite readread readread readAuch spielt bei der Nutzung von Ressourcen d...
2Click StreamAnalysewrite writeread writeread readwrite readread readread readAuch spielt bei der Nutzung von Ressourcen d...
2Click StreamAnalysewrite writeread writeread readwrite readread readread readAuch spielt bei der Nutzung von Ressourcen d...
2Google AnalyticsDer einfachste Weg ist wenn ich auf Google Analytics zugreifen kann, um an die Klickpfadezu kommen
2Log File AnalysePWUMPython Web Usage Mininghttps://github.com/riivo/pwumDas Python Web Usage Mining braucht sehr lange - ...
3Nutzer mit ähnlichem Verhalten„Personas“ in Agil„Kohorten“ in Lean StartupGemeinsame Klickpfade gehen okPersonasAuf Basi...
3PersonasWenn ich Personas habe ordne ich sie, ebenfalls wieder in Excel, den Requests zu - imkonkreten Fall bekommen die...
3PersonasWenn ich Personas habe ordne ich sie, ebenfalls wieder in Excel, den Requests zu - imkonkreten Fall bekommen die...
3PersonasWenn ich Personas habe ordne ich sie, ebenfalls wieder in Excel, den Requests zu - imkonkreten Fall bekommen die...
3PersonasWenn ich Personas habe ordne ich sie, ebenfalls wieder in Excel, den Requests zu - imkonkreten Fall bekommen die...
3 PersonasUnd was ist, wenn mankeine Logfileshat?„Wirklich, wirklichgut schätzen“Kommen wir noch mal zu dem Problem, wenn w...
3 PersonasUnd was ist, wenn mankeine Logfileshat?Test Pre- undPost-LaunchBesser also, und auch eher im Sinne von Lean Start...
4 JMeterBenötigte RequestsKlickpfadePersonasRequests Pro PersonaJetzt habe ich also die Requests, die ich zu einer guten ...
4 JMeterZunächst lege die die Basics an - für jede Persona eine HTTP Thread Gruppe - hier im BildRegister, Video Stream, C...
4 JMeterZunächst lege die die Basics an - für jede Persona eine HTTP Thread Gruppe - hier im BildRegister, Video Stream, C...
4 JMeterZunächst lege die die Basics an - für jede Persona eine HTTP Thread Gruppe - hier im BildRegister, Video Stream, C...
4 JMeterDann konfiguriere ich den Proxy, und richte ihn mir im lokalen Browser - zum Beispiel überFoxyProxy - für meine Dom...
4 JMeterDann konfiguriere ich den Proxy, und richte ihn mir im lokalen Browser - zum Beispiel überFoxyProxy - für meine Dom...
4 JMeterUnrat gibt es trotzdem, siehe hier die diversen nicht erkannten JS-Files. Wenn sie statischsind können sie im Rege...
4 JMeterUnrat gibt es trotzdem, siehe hier die diversen nicht erkannten JS-Files. Wenn sie statischsind können sie im Rege...
4 JMeterThinktime!Und, weil ich es schon so oft gesehen habe - die Thinktime zwischen den Requests nichtvergessen, niemand...
4 JMeterThinktime!Und, weil ich es schon so oft gesehen habe - die Thinktime zwischen den Requests nichtvergessen, niemand...
4 JMeterThroughput!Alle die Requests, die in meinem Excel nicht mit jedem Lauf durchgeführt werden könnenkann ich über den...
4überhaupt eine Antwortdie richtige AntwortGeschwindigkeitAber was will man wissen und messen - zunächst einmal das offens...
4Summary ReportDie einfachste Variante der Beobachtung der der Summary Report, mit dem man diese Werteerfährt - Fehler in ...
4Summary ReportDiese Informationen helfen uns aber nur begrenzt weiter, weil sie uns nur den Boolean„funktioniert“ oder „f...
5 Munin/CactiZum Warum müssen wir aber wissen, was auf der anderen Seite passiert. Also was der oderdie Server gerade so m...
5JMeter PerfMonhttps://code.google.com/p/jmeter-plugins/Wenn ich das noch nicht habe bietet mir JMeter glücklicherweise da...
5JMeter PerfMonhttps://code.google.com/p/jmeter-plugins/Dazu ist auf der Serverseite der Agent zu starten, der die Daten s...
5JMeter PerfMonhttps://code.google.com/p/jmeter-plugins/gibt es auch das Pendant auf der Client-Seite. Hier gibt es ein Pl...
5JMeter PerfMonhttps://code.google.com/p/jmeter-plugins/Dort kann ich dann nicht nur meine Clients, sondern auch die Daten...
5JMeter PerfMonhttps://code.google.com/p/jmeter-plugins/Dort kann ich dann nicht nur meine Clients, sondern auch die Daten...
5JMeter PerfMonhttps://code.google.com/p/jmeter-plugins/Und da gibt es praktisch alles, was ich so haben möchte - bishin z...
6O(n) Aber eigentlich wollen wir ja wissen, wie sich unsere Ressourcen über Zeit verhalten. Ob sieim Quadrat, Exponenti...
6JMeter PerfMonGraphen sammelnAuch da bieten die JMeter Plugins Hilfe. Ich kann nämlich alle Daten, die ich in Graphendar...
6Composite GraphAn der Stelle knackt die Usability so ein bischen, ich muss nämlich zunächste einmal dieSimulation anstar...
6Composite GraphUnd das sieht dann so aus - und hier habe ich zB genau eine Darstellung, mit der ich arbeitenkann. Rot: A...
6Und genau damit bekomme ich zB solche Graphen, mit denen ich sehe, dass ab ca 300parallelen Nutzern das Antwortverhalten...
1) Relevante Requests2) Klickfolgen3) Personas4) JMeter Testplan5) Serverdaten6) ReportingToDoNoch mal zusammengefasst:.....
GlitchesMit welchen Problemen muss ich dabei rechnen?
JMeterskaliertnicht.Aber es gibt ein paar Pain Points: Jmeter selbst skaliert zB nicht.
https://github.com/oliverlloyd/jmeter-ec2jmeter-ec2EinfachesCommandline Scriptzur Nutzung vonjmeter in der Cloud.Abhilfe ...
jmeter-ec2project=“pro“ percent=“20“count=“3“ ./jmeter-ec2.shEinfach auf der Kommandzeile gestartet kann ich sagen, wie o...
jmeter-ec2project=“pro“ percent=“20“count=“3“ ./jmeter-ec2.shEinfach auf der Kommandzeile gestartet kann ich sagen, wie o...
jmeter-ec2project=“pro“ percent=“20“count=“3“ ./jmeter-ec2.shEinfach auf der Kommandzeile gestartet kann ich sagen, wie o...
jmeter-ec2project=“pro“ percent=“20“count=“3“ ./jmeter-ec2.shEinfach auf der Kommandzeile gestartet kann ich sagen, wie o...
Alternativ gibt es das ganze auch in kommerziell, für die darf man auch Werbung machen,weil bei denen regelmässig OpenSou...
Real != TestUngeteilteZentraleGeteilteRessourcenDas nächste Problem habe ich, wenn ich keine echte Testumgebung habe - al...
Real != TestIdentischeÄhnlicheAndereDatenDas gleiche gilt, wenn ich nicht auf die gleiche Datenbasis zurückgreifen kann, ...
Eigene Limitsmax_childrenmax_connectionsbufferskernel/tcpEigene Erfahrung: manchmal läuft man gegen Limits, ohne dass irg...
Nächste SlideShare
Wird geladen in …5
×

Performancemessung, jetzt in echt

4.095 Aufrufe

Veröffentlicht am

Tools wie JMeter, ab2, WebLOAD oder httperf kennt und nutzt jeder, aber man will nicht die Hand dafür ins Feuer halten, dass es dann auch mit den angestrebten Nutzern produktiv so funktioniert. Mit ein paar Tricks, clever gewählten Use Cases, etwas JMeter und etwas Excel kann man nicht nur eine Aussage über die Performance liefern, sondern auch dafür garantieren, dass es zu 99,99 Prozent so passieren wird.

Veröffentlicht in: Technologie
0 Kommentare
1 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

Keine Downloads
Aufrufe
Aufrufe insgesamt
4.095
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
13
Aktionen
Geteilt
0
Downloads
22
Kommentare
0
Gefällt mir
1
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

Performancemessung, jetzt in echt

  1. 1. PerformancemessungJetzt
  2. 2.  in
  3. 3.  Echt!
  4. 4. Guten morgen!Guten morgen zusammen! Wie immer bin ich mit einem weinenden Auge in Berlin, und nocheinem weinenden. Eigentlich wollte ich gar nicht hier sein, sondern im Urlaub - da stecktmeine Frau mit den Zwillingen auch gerade, ich hab nur 2 Tage Urlaub vom Urlaubbekommen. Mit einer direktverbindung von Florenz nach Berlin. Erstaunlich, dass es sowasgibt. Also nicht die Direktverbindung, sondern funktionierende Flughäfen für Berlin.
  5. 5. KekseIch werde heute abend wieder lecker italienisch Essen. Aber ich habe Euch ein paar Keksemitgebrachte, bitte einfach nehmen und weitergeben :-)
  6. 6. Dieser Talk istKeine Copy Paste AnleitungGrundlagen Ideen FTW!Wer etwas besser/mehr weiß:Willkommen!Präambel
  7. 7. Ihr?Wer von Euch hat schon Erfahrungen mit Performancemessung gemacht?
  8. 8. ab(2), siege, httperf?Welche Tools habt Ihr eingesetzt? Das sind die drei Klassiker, die praktisch jeder schoneinmal angewandt hat
  9. 9. Loadrunner, Webload,OpenSTA, Jmeter, Grinder?Daneben gibt es die dicken Tools, die erheblich mehr können und mehr für Szenarienausgelegt sind. Wer von Euch hat schon mit LoadRunner gearbeitet? Ich noch nicht :-)Wäre es ok, wenn ich Euch nachher noch direkt ein paar Fragen dazu stelle?
  10. 10. OpenSource FTW!JmeterIch beschränke mich hier auf OpenSource, konkret auf Jmeter. Warum?Weil es ok ist, kostenlos - nicht jeder will gleich mehrere tausend Euro Pro Nutzer ausgeben.
  11. 11. ?Warum der Talk?Aber warum mache ich diesen Talk. Das hat eigentlich einen ganz einfachen Grund.
  12. 12. We suckat load testing.Wir sind echt schlecht in Load Testing, meistens sind unsere Vorraussagen echtunzuverlässig, und gerade wenn dann noch das Performance-Benchmarking auf einemTestsystem und nicht auf dem echten Cluster stattfindet, dann kann man es fast vergessen.
  13. 13. But we suckedeven moresome years ago.Aber früher waren wir noch deutlich schlechter. Inzwischen haben wir gelegentliche Treffer,und wenn auf einem echten System mit echtem Wissen über Nutzer testen dürfen, dannkommen wir auch zur Garantie.
  14. 14. LearningsEs geht also darum, was wir gelernt haben, neudeutsch learnings. Und da haben wir eineganze Menge gelernt.
  15. 15. Wir, das sind Mayflower, und das ist unser Logo in Bacon. Wir machen mit ca 70 EntwicklernWebapplikationen, ein paar bekannte grosse Beispiele sind die SevenGames Plattform oderdie Telekom Cloud, aber auch vieles andere.
  16. 16. 1 Werbeblock4 WebsitesWir haben es schon erlebt dass in einem einzigen Werbeblock auf Pro7 4 Werbungen fürWebseiten kamen, an denen wir gebaut oder mitgebaut haben. Wer hat hier schon einmalFernsehwerbung für seine Plattform abbekommen? Gab das Traffic?
  17. 17. Genau.Das gibt Traffic.Jepp, das gibt in der Tat Traffic.
  18. 18. Live-EventsEinmal-AktionenHeise-DDOSLaunchesBeratend sind wir auch häufig mit dabei, etwa wenn ein eine neue populäre Plattform einenRelaunch macht, oder wenn Live-Events passieren, besondere Einmalaktionen oder wenn manüber eine Heise-News geddosst wird. Mit Glück sind wir vorher mit dabei, meist abernachher, um beim Zusammenfegen der Scherben zu helfen.
  19. 19. 5000Nutzer parallel?Wenn es gut läuft und wir vor den Problemen gefragt werden, oder wir selber mitbestimmendürfen, dann weiss der Kunde ungefähr, was kommt.
  20. 20. ?„Werden wirProblemehaben?“Und er will wissen, ob es Probleme gibt oder nicht.
  21. 21. „Vermutlich nicht?“Und, wenn wir als Entwickler ehrlich sind, können wir nur sagen:Vermutlich nicht. Oder am besten ist jemand anders schuld: „Ich glaube, dass die Hardwarereicht.“
  22. 22. „ Es könnte schon klappen.“Wir schliessen aber auch nicht aus, dass die Seite funktioniert.
  23. 23. „Wir können ja malLoad -Testen“.Am Ende kommt man dann auf die Idee, Load Testing zu machen.Oder alles an Daten anschauen, was die Plattform so hergibt.
  24. 24. • ab• siege• httperfab -n 100 -c 50 http://mayflower.de/Also nimmt man sich die Tools, mit denen man an einem Tag vorrankommen kann und gucktnach.
  25. 25. ?„Werden wirProblemehaben?“Und er will wissen, ob es Probleme gibt oder nicht.
  26. 26. „Vermutlich nicht.“Wenn 50 Leute jeweils zweimalauf die Homepage klicken ist alles gut.Und wir sind ein bischen sicherer geworden, dass es keine Probleme gibt, aber noch nichtganz sicher.
  27. 27. Abandon thetransaction,try later on computer43 %Go directly to acompetitor 12 %Become more likely toprefer a competitor 16 %Log a complaint withcustomer service 14 %Der Kunde hat einen guten Grund, diese Aussage nicht zu mögen. Tealeaf, heute IBM, hat dasuntersucht für mobile Apps. Was passiert, wenn die Performance nicht stimmt? 41% kommenspäter wieder - sprich: 60% gehen verloren - und 12% wechseln direkt zu einem Mitbewerber.
  28. 28. „Vermutlich nicht.“Vermutlich nicht reicht ihm also nicht als Aussage.
  29. 29. „Wo liegen unsere Limits?“Schauen wir doch mal, wie wir ihm den Gefallen tun können, und grössere Sicherheitbekommen können.
  30. 30. ?„Werden die Ressourcenreichen?“Die Frage die dahinter steht ist eigentlich: „Werden die Ressourcen reichen?“Wird das, was wir hier an Infrastruktur haben ausreichen?
  31. 31. RessourcenWebserverRessourcen: das sind erst mal alle Komponenten, die in so einer Webapplikation eine Rollespielen, also zB alle Server.
  32. 32. RessourcenWebserverDatenbankserverRessourcen: das sind erst mal alle Komponenten, die in so einer Webapplikation eine Rollespielen, also zB alle Server.
  33. 33. RessourcenWebserverDatenbankserverCachesRessourcen: das sind erst mal alle Komponenten, die in so einer Webapplikation eine Rollespielen, also zB alle Server.
  34. 34. RessourcenWebserverDatenbankserverCachesMessage QueuesRessourcen: das sind erst mal alle Komponenten, die in so einer Webapplikation eine Rollespielen, also zB alle Server.
  35. 35. RessourcenWebserverDatenbankserverCachesMessage QueuesProxiesRessourcen: das sind erst mal alle Komponenten, die in so einer Webapplikation eine Rollespielen, also zB alle Server.
  36. 36. RessourcenWebserverDatenbankserverCachesMessage QueuesProxiesStorageRessourcen: das sind erst mal alle Komponenten, die in so einer Webapplikation eine Rollespielen, also zB alle Server.
  37. 37. RessourcenCPU Request:30-2000 ms CPU-ZeitUnd eigentlich finden diese Ressourcen innerhalb der Server statt. Die offensichtlichste istCPU, klar. CPU macht uns PHPlern im Regelfall nicht so viele Schmerzen, weil wir SharedNothing Architektur können, also einfach mehr kisten mit mehr PHPs drauf danebenstellenkönnen. Cloud wurde für uns erfunden. Eine moderne Applikation benötigt irgendwozwischen 30 und 2000 ms reine CPU-Zeit. Daneben gibt es noch Zeit, die der Kernel braucht,um die CPU-Zeit nutzen zu können - etwa Kernel-Eigene Sys-Zeit, oder Zeit, die durch IOoder IOWait draufgeht.
  38. 38. RessourcenCPU Request:30-2000 ms CPU-ZeitRAM Request:ca 20 MB Resident SizeAn zweiter Stelle kommt RAM. Da sind wir weder so richtig super skalierbar noch so richtigCloud. Ein gutes PHP kommt mit ca 5MB resident size aus - das ist der Speicher, der genaufür diesen PHP-Prozess belegt wird - kann bei Symfony2-Doctrine-Applikationen oder selbsterfundene lustige Logik auch mal bis zu 50MB hochgehen. Dazu kommt natürlich der Ram,der vom Kernel selbst, vom Betriebssystem und von eventuellen Ram-Caches benötigt wird.
  39. 39. RessourcenCPU Request:30-2000 ms CPU-ZeitRAM Request:ca 20 MB Resident SizeStorage Request:0-X0.000 OpsAn dritter Stelle kommt Storage, klassischerweise lokal, zunehmend aber auch über dasNetzwerk. Hier gibt es je nach Caching- und Template-Logik zwischen - im Optimalfall - 0echten Operationen, bishin zu mehreren zehntausend, die pro Request durchgeführt werden.Wir haben schon Netzwerke gesehen, die nur über Metadaten-Abfragen für das Filesystemsaturiert wurden.
  40. 40. RessourcenCPU Request:30-2000 ms CPU-ZeitRAM Request:ca 20 MB Resident SizeStorage Request:0-X0.000 OpsNetzwerk Request:0-500 MbitDas Netzwerk spielt mit den schnellen Netzen, die man heute in Rechenzentren findet meistkeine grosse Rolle. Aber genau deshalb verliert man es schnell aus den Augen, und plötzlichreagiert das Filesystem nicht mehr, die Antwortzeiten der Datenbank werden schlechter, oderdas Caching funktioniert irgendwie nicht - und am Ende stellt sich das Netzwerk als Engpassheraus.
  41. 41. Ressourcen500 msCPU-Zeit100 MBRam im Peak1000Filesystem-Ops2 MBNetwork TrafficRegistrationSchauen wir uns doch mal einen Request auf dem Webserver an - etwa eine Registration. DerServer ist aktueller Standard, 8 Cores, 16 GB RAM, Raid 1. Eine Registration ist ein dickerTask, der bequem mal auf 100MB Ram hochgehen kann.
  42. 42. Ressourcen0%1,75%3,5%5,25%7%CPU RAM DISK NETWORK2%5%0,7%6,25%RegistrationDie Registration ist ein dicker Schritt im Regelfall, und dort fällt dementsprechend imWebserver mehr Aufwand an. 500 ms CPU-Zeit verbrauchen 6,25% der zur Verfügungstehenden Leistung, und da sind Betriebssystem-Kosten, IO-Wait etc noch nichtherausgerechnet. Bei RAM sind die 100 MB zwar sehr viel - aber spielen bei den 16MB keineRolle, zumindest noch nicht.
  43. 43. ab -n 1000 .../register0%1,75%3,5%5,25%7%CPU RAM DISK NETWORK2%5%0,7%6,25%RegistrationSchauen wir uns doch mal vor diesem Hintergrund das Benchmarking an, das mannormalerweise so macht. Was passiert denn, wenn ich hier einen ab mit 1000 Requestsgegenjage? Engpass ist CPU, DISK, Network und RAM sind mehr verfügbar als CPU.
  44. 44. ab -n 1000 .../registerErwartung:15 Requests/secMessung:2 Requests/secondWas bekomme ich heraus, wenn ich das mache?Der Test dauert 10 Minuten, und ich komme bei knappen 2 Requests pro Sekunde raus?Sollten das nicht mindestens 15 oder so sein, wenn CPU der Engpass ist?Die Ursache ist klar: Ich messe hier nur mit 1er Konkurrenz im Default, also werden 7 von 8Cores nicht genutzt, und die Requests finden streng parallel statt.
  45. 45. Ressourcen0%25%50%75%100%CPU RAM DISK NETWORKRegistration Video Streams Community LoginPraktisch ist der Traffic sehr viel durchwachsener. Das ist ein Beispiel aus der Praxis, wennauch vereinfacht dargestellt, wieder nur der Webserver.Der Rechner war voll über CPU saturiert, sprich: die CPU-Load hat ihn getötet.
  46. 46. 0%25%50%75%100%CPU RAM DISK NETWORKRegistration Video Stream Community LoginRessourcen sindSchweineWas wir hier aber gelernt haben ist die Tatsache, dass Ressourcen Schweine sind.
  47. 47. 0%25%50%75%100%CPU RAM DISK NETWORKRegistration Video Stream Community LoginCPUwirdRAMCPU wird zB zu RAM. Wenn die CPU nicht mehr genug Ressourcen hat, um alle Aufträgeparallel zu bearbeiten, dann steigt die Load über die Anzahl Cores, und die Requests werdenlangsamer bearbeitet. Und das heisst auch, dass mehr Apachen nachdenken und solangeRAM belegen. Im Fazit steigt also der RAM-Verbrauch, weil die CPU nicht reicht.
  48. 48. 0%25%50%75%100%CPU RAM DISK NETWORKRegistration Video Stream Community LoginRAMwirdStorageDas gleiche gilt auch noch weiter, wenn nämlich der RAM ausgeht. Was macht ein Rechnerdann? Genau, er beginnt zu Swappen, also Storage, und noch fieser, schreibender Storage.Und wenn der auf den Netzwerk liegt ... klar, dann wird er auch zu Network.
  49. 49. 0%25%50%75%100%CPU RAM DISK NETWORKRegistration Video Stream Community LoginUnd auch das Verhalten der Nutzer ändert sich, wenn sich die Plattform anders verhält.Hier war alle CPU ausgenutzt, mit der Folge, dass auch der Login deutlich langsamer war. Solangsam, dass man zum Teil in den Timeout des Reverse Cachings gelaufen ist.
  50. 50. Langsamer Login?Reload ... Reload ... Reload ... Reload ...Reload ... Reload ... Reload ... Reload ...Und was passiert, wenn der Login langsam ist? Die Leute versuchen es häufiger, es gibt alsoviele viele Klicks auf den Reload Button, aus fiesem Traffic wird also der No Point of Return.
  51. 51. Langsamer Login!... weniger Nutzer in der CommunityAber nicht nur die Anzahl der Nutzer im Ressourcennutzungsprofil Login wird grösser - diein der Community wird parallel kleiner.
  52. 52. Fazit: DasSystemverhaltenbeeinflusst dasNutzerverhaltenbeeinflusst dasSystemverhaltenIm Fazit beeinflussen sich also die Plattform und das Benutzerverhalten gleichmässig. Wiegemein. Das heisst, dass Performancetuning unter Umständen in ganz neuen Problemenresultieren kann - wie zum Beispiel in Nutzern, die auf einmal gerne auf der Plattform sind.
  53. 53. Ressourcen sindSchweineO(n)Und nicht nur in der Beziehung sind die Ressourcen Schweine - sie verhalten sich nämlichalles andere als linear, sondern sie machen bunte Linien. Wer hat hier Informatik studiert oderkennt sich aus irgendeinem sonstigen Grund mit den Symbolen oben aus?
  54. 54. KomplexitätO(n)Genau, Komplexität. Wofür gibt es Komplexität?CPU, und weniger oft genannt: Speicher.In der Praxis gilt das natürlich für jede Ressource, und nicht nur CPU und Speicher - und inunserer Welt häufig nicht entlang von Mengen, sonder entlang von Nutzerzahlen. Undwichtiger: in der Praxis kann man Konstanten auch nicht einfach rauskürzen, weil Faktor1000 mehr oder weniger Server ist konkret dann doch ein Unterschied. Und die Realität agiertauch nach Konkurrenz, und nicht nur nach Datenmenge.
  55. 55. O(n)Konstant 100% CachingLogarithmisch Gutes CachingLinear BilduploadQuadratisch Friend of a FriendExponentiell Optimales RoutingUnd genau so können sich auch die einzelnen Ressourcen verhalten, je nach Art der Anfragendie beim Server ankommen. Kann jemand sagen warum Facebook keine „über welche Wegekann ich X kennen“-Logik anbietet?
  56. 56. O(n)051015201 2 3 4 5 6 7 8 9 10Konstant Logarithmisch Linear QuadratischExponentiell100 Nutzer != 2 * 50 NutzerUnd genau da wirds hakelig mit dem Performance-Messen - weil ich kann eben nichteinfache Multiplikation oder Addition machen. Wenn meine Logik im Schwerpunktlogarithmisch ist, dann macht brauche ich mit 500 Nutzern nicht deutlich mehr Ressourcenals mit 400. Wenn sie Quadratisch ist, dann brauche ich allerdings mit doppelt so vielenNutzern 4 mal so viele Rechner.
  57. 57. Fazit:Ressourcen sind nonlinearRessourcen beeinflussen sichund das NutzerverhaltenDamit haben wir die klassischen Eigenschaften eines komplexen Systems, und können damitnur so mittelgut vorhersagen, was passieren wird.
  58. 58. Wie man trotzdem gewinnt.Die Rahmenbedingungen hören sich ja erst mal nicht gut an. Wer ist ebenfalls der Meinung,dass dieses Verhalten von Plattformen eigentlich eine Unverschämtheit ist?Wer ist der Meinung, dass schlechtes Wetter ebenfalls als Unverschämtheit zu werten ist?Das Problem ist, an beiden Dingen können wir wenig dran ändern. Naja, wir könnten auf eineSüdseeinsel ziehen oder eine Plattform bauen, die niemand nutzen will. Besser ists aber, dasbeste daraus zu machen.
  59. 59. Die Plattformexistiert schon.Wenn die Plattform schon existiert: Hervorragend. Das macht es einfacher.
  60. 60. Die Plattformexistiert schon.99,99%Und das ist auch genau die Stelle, an der wir die 99,99% Sicherheit bekommen können.
  61. 61. 1 Top Seitennach Hitscut -d -f6,7 access.log |sort |uniq -c |sort -rnZunächst einmal muss ich die aktuelle Nutzung analysieren. Ich modelliere meinen Test alsoso, dass er die gleichen Fingerprints im Accesslog hinterlässt wie der originale Traffic.
  62. 62. 1 Top Seitennach HitsAnalyse in ExcelIch will das gleiche Verhalten in meiner Simulation - also schaue ich mir an, wie vieleRequests ich dabei haben muss, um die gewünschte Zahl identischen Traffic zu erzeugen. ImBeispiel habe ich mit der Simulation von 8 Requests nicht nur schon knappe 70%übereinstimmung mit dem Originaltraffic, sondern auch schon 645000 Hits für erzeugt. Ichgehe so weit herunter in meiner Simulation, bis ich bei der von mir gewünschten Prozentzahlankomme.
  63. 63. 1 Top Seitennach HitsAnalyse in ExcelIch will das gleiche Verhalten in meiner Simulation - also schaue ich mir an, wie vieleRequests ich dabei haben muss, um die gewünschte Zahl identischen Traffic zu erzeugen. ImBeispiel habe ich mit der Simulation von 8 Requests nicht nur schon knappe 70%übereinstimmung mit dem Originaltraffic, sondern auch schon 645000 Hits für erzeugt. Ichgehe so weit herunter in meiner Simulation, bis ich bei der von mir gewünschten Prozentzahlankomme.
  64. 64. 1 Top Seitennach HitsAnalyse in ExcelIch will das gleiche Verhalten in meiner Simulation - also schaue ich mir an, wie vieleRequests ich dabei haben muss, um die gewünschte Zahl identischen Traffic zu erzeugen. ImBeispiel habe ich mit der Simulation von 8 Requests nicht nur schon knappe 70%übereinstimmung mit dem Originaltraffic, sondern auch schon 645000 Hits für erzeugt. Ichgehe so weit herunter in meiner Simulation, bis ich bei der von mir gewünschten Prozentzahlankomme.
  65. 65. 2Click StreamAnalyseAber diese Requests alleine machen ja nicht das Nutzerverhalten aus - manche Requests, imobigen Beispiel fast alle, funktionieren zB nur nach einem Login.
  66. 66. 2Click StreamAnalysewrite writeread writeread readwrite readread readread readAuch spielt bei der Nutzung von Ressourcen die Reihenfolge eine Rolle: wenn ich zumBeispiel erst 2 mal Write und danach 4 mal Read auf die gleichen Daten habe, kann ich dieDaten 3 mal aus dem Cache liefern - wenn ich immer abwechseln Read und Write habe kannich nie aus dem Cache schöpfen.
  67. 67. 2Click StreamAnalysewrite writeread writeread readwrite readread readread readAuch spielt bei der Nutzung von Ressourcen die Reihenfolge eine Rolle: wenn ich zumBeispiel erst 2 mal Write und danach 4 mal Read auf die gleichen Daten habe, kann ich dieDaten 3 mal aus dem Cache liefern - wenn ich immer abwechseln Read und Write habe kannich nie aus dem Cache schöpfen.
  68. 68. 2Click StreamAnalysewrite writeread writeread readwrite readread readread readAuch spielt bei der Nutzung von Ressourcen die Reihenfolge eine Rolle: wenn ich zumBeispiel erst 2 mal Write und danach 4 mal Read auf die gleichen Daten habe, kann ich dieDaten 3 mal aus dem Cache liefern - wenn ich immer abwechseln Read und Write habe kannich nie aus dem Cache schöpfen.
  69. 69. 2Google AnalyticsDer einfachste Weg ist wenn ich auf Google Analytics zugreifen kann, um an die Klickpfadezu kommen
  70. 70. 2Log File AnalysePWUMPython Web Usage Mininghttps://github.com/riivo/pwumDas Python Web Usage Mining braucht sehr lange - und sehr viel Ram - für die Analyse vonClickpfaden, ermöglicht dafür aber aber eine Automatische Erkennung von Mustern imNutzerverhalten
  71. 71. 3Nutzer mit ähnlichem Verhalten„Personas“ in Agil„Kohorten“ in Lean StartupGemeinsame Klickpfade gehen okPersonasAuf Basis der Clickstream baue ich Personas: Personas sind gedachte Nutzergruppen, die sichjeweils ähnlich verhalten. Diese Personas teilen sich durchaus gemeinsame Klickpfade, undergeben in der Summe die Requests, die wir eben auf der Liste der Top-Requests gesehenhaben.
  72. 72. 3PersonasWenn ich Personas habe ordne ich sie, ebenfalls wieder in Excel, den Requests zu - imkonkreten Fall bekommen die Nutzer, die ein bestimmtes Video anschauen, zu diesem Videobegleitend Informationen wie Texte, Schauspieler etc.Am Ende habe ich eine Liste von Requests und deren Anzahl, die von den Personasdurchgeführt werden.
  73. 73. 3PersonasWenn ich Personas habe ordne ich sie, ebenfalls wieder in Excel, den Requests zu - imkonkreten Fall bekommen die Nutzer, die ein bestimmtes Video anschauen, zu diesem Videobegleitend Informationen wie Texte, Schauspieler etc.Am Ende habe ich eine Liste von Requests und deren Anzahl, die von den Personasdurchgeführt werden.
  74. 74. 3PersonasWenn ich Personas habe ordne ich sie, ebenfalls wieder in Excel, den Requests zu - imkonkreten Fall bekommen die Nutzer, die ein bestimmtes Video anschauen, zu diesem Videobegleitend Informationen wie Texte, Schauspieler etc.Am Ende habe ich eine Liste von Requests und deren Anzahl, die von den Personasdurchgeführt werden.
  75. 75. 3PersonasWenn ich Personas habe ordne ich sie, ebenfalls wieder in Excel, den Requests zu - imkonkreten Fall bekommen die Nutzer, die ein bestimmtes Video anschauen, zu diesem Videobegleitend Informationen wie Texte, Schauspieler etc.Am Ende habe ich eine Liste von Requests und deren Anzahl, die von den Personasdurchgeführt werden.
  76. 76. 3 PersonasUnd was ist, wenn mankeine Logfileshat?„Wirklich, wirklichgut schätzen“Kommen wir noch mal zu dem Problem, wenn wir keine Logfiles haben. Dann starten wir mitguten Schätzungen - am besten sind welche von Branchenexperten, die mit vergleichbarenSites schon zu tun hatten. Damit kann man sehr daneben liegen. Wir haben beim Relauncheiner Plattform mal selbst erlebt, dass der Marketingabteilung 70% des Traffics entgangensind.
  77. 77. 3 PersonasUnd was ist, wenn mankeine Logfileshat?Test Pre- undPost-LaunchBesser also, und auch eher im Sinne von Lean Startup - wenn man das ganze zweiteilt, einmalin einen Pre- und einmal in einen Post-Launch-Test. Der erste stellt mit groben Annahmensicher, dass man Launchfähig ist, der zweite Validiert dann die Wachstumsstrategien aufBasis der tatsächlichen Daten.
  78. 78. 4 JMeterBenötigte RequestsKlickpfadePersonasRequests Pro PersonaJetzt habe ich also die Requests, die ich zu einer guten Übereinstimmung braucheIch habe die Klickpfade, mittels der diese Requests angesteuert werdenIch habe die Personas, die das Nutzungsverhalten meiner PLattform kennzeichnenUnd ich weiss welche Requests in welcher Häufigkeit von den Personas aufgerufen werdenIch kann also mit der Testmodellierung anfangen.
  79. 79. 4 JMeterZunächst lege die die Basics an - für jede Persona eine HTTP Thread Gruppe - hier im BildRegister, Video Stream, Community. Global im Testplan lege ich die HTTP Request Defaulteinstellungen an, mit dem kann man später schnell zwischen Installationen wechseln, undkonfiguriere dort Protokoll, Server, Codepage und Konsorten.Für jede Threadgruppe richte ich einen HTTP Cache Manager und einen Cookie Manager ein.Unten links in der Workbench richte ich den Proxy Server ein.
  80. 80. 4 JMeterZunächst lege die die Basics an - für jede Persona eine HTTP Thread Gruppe - hier im BildRegister, Video Stream, Community. Global im Testplan lege ich die HTTP Request Defaulteinstellungen an, mit dem kann man später schnell zwischen Installationen wechseln, undkonfiguriere dort Protokoll, Server, Codepage und Konsorten.Für jede Threadgruppe richte ich einen HTTP Cache Manager und einen Cookie Manager ein.Unten links in der Workbench richte ich den Proxy Server ein.
  81. 81. 4 JMeterZunächst lege die die Basics an - für jede Persona eine HTTP Thread Gruppe - hier im BildRegister, Video Stream, Community. Global im Testplan lege ich die HTTP Request Defaulteinstellungen an, mit dem kann man später schnell zwischen Installationen wechseln, undkonfiguriere dort Protokoll, Server, Codepage und Konsorten.Für jede Threadgruppe richte ich einen HTTP Cache Manager und einen Cookie Manager ein.Unten links in der Workbench richte ich den Proxy Server ein.
  82. 82. 4 JMeterDann konfiguriere ich den Proxy, und richte ihn mir im lokalen Browser - zum Beispiel überFoxyProxy - für meine Domain ein, und klick unten (hier nicht mehr zu sehen) auf Start.Ich klicke unten auf „Add suggested Excludes“ um statische Files nicht mit aufzuzeichen.
  83. 83. 4 JMeterDann konfiguriere ich den Proxy, und richte ihn mir im lokalen Browser - zum Beispiel überFoxyProxy - für meine Domain ein, und klick unten (hier nicht mehr zu sehen) auf Start.Ich klicke unten auf „Add suggested Excludes“ um statische Files nicht mit aufzuzeichen.
  84. 84. 4 JMeterUnrat gibt es trotzdem, siehe hier die diversen nicht erkannten JS-Files. Wenn sie statischsind können sie im Regelfall gelöscht werden.
  85. 85. 4 JMeterUnrat gibt es trotzdem, siehe hier die diversen nicht erkannten JS-Files. Wenn sie statischsind können sie im Regelfall gelöscht werden.
  86. 86. 4 JMeterThinktime!Und, weil ich es schon so oft gesehen habe - die Thinktime zwischen den Requests nichtvergessen, niemand klickt 3 ms nach dem letzten Byte der Vorseite. Wir Humanoide, DoctorSheldon Cooper mal ausgenommen, brauchen Zeit. Am besten als einfacher Gaussian Timer.
  87. 87. 4 JMeterThinktime!Und, weil ich es schon so oft gesehen habe - die Thinktime zwischen den Requests nichtvergessen, niemand klickt 3 ms nach dem letzten Byte der Vorseite. Wir Humanoide, DoctorSheldon Cooper mal ausgenommen, brauchen Zeit. Am besten als einfacher Gaussian Timer.
  88. 88. 4 JMeterThroughput!Alle die Requests, die in meinem Excel nicht mit jedem Lauf durchgeführt werden könnenkann ich über den Troughput-Controller regulierern. Über die Thread- und Schleifenzahlsteuere ich, wieviele Requests pro Threadgruppe insgesamt durchgeführt werden, und mitder Ramp-up-Time die Dauer des Laufs.Über Assertions sichere ich ab, dass ich die korrekte Antwort bekommen habe. Das erkläreich hier nicht im Detail, weil es dazu tatsächlich viele gute Tutorials und ein Manual gibt.
  89. 89. 4überhaupt eine Antwortdie richtige AntwortGeschwindigkeitAber was will man wissen und messen - zunächst einmal das offensichtliche, was einem auchab, siege, httperf und Konsorten mitteilen - gibt es überhaupt eine Antwort, und wenn ja,was das eine, die ich habe wollten. Und natürlich - war sie so schnell, dass die Nutzer nocham Rechner sind wenn die Antwort final einmal ankommt.
  90. 90. 4Summary ReportDie einfachste Variante der Beobachtung der der Summary Report, mit dem man diese Werteerfährt - Fehler in Prozent, der Rest in Zeit mit Durchsatz, Mittelwert, Minimum/Maximumund Standardabweichung.
  91. 91. 4Summary ReportDiese Informationen helfen uns aber nur begrenzt weiter, weil sie uns nur den Boolean„funktioniert“ oder „funktioniert nicht“ für das System under Test. Und eigentlich interessiertuns vom funktionieren nur die grenzen desselben, also wann es aufhört zu funktionieren,und dann warum.
  92. 92. 5 Munin/CactiZum Warum müssen wir aber wissen, was auf der anderen Seite passiert. Also was der oderdie Server gerade so machen. Am einfachsten ist das wenn man bereits eine funktionierendeInfrastruktur hat, die ohnehin schon alles aufzeichnet was man bekommen kann. Meist istdas Cacti oder Munin, gelegentlich auch modernere Lösungen auf Node.js Basis, oderenterprisiges a la Tivoli. Wichtig ist nur: ich habe die Daten, hinreichend granular, für dasSystem under Test.
  93. 93. 5JMeter PerfMonhttps://code.google.com/p/jmeter-plugins/Wenn ich das noch nicht habe bietet mir JMeter glücklicherweise das was ich brauche. Bzw.ein OpenSource-Projekt zur Erweiterung von JMeter.
  94. 94. 5JMeter PerfMonhttps://code.google.com/p/jmeter-plugins/Dazu ist auf der Serverseite der Agent zu starten, der die Daten sammelt. das ist nur eineinfaches Java-File, das trotzdem nicht viele Ressourcen frisst. Wenn der Daemon läuft - aufeinem oder allen Servern -
  95. 95. 5JMeter PerfMonhttps://code.google.com/p/jmeter-plugins/gibt es auch das Pendant auf der Client-Seite. Hier gibt es ein Plugin, das schlicht in das Ext-Verzeichnis von JMeter kopiert wird, und beim nächsten JMeter-Start dann mit perfmon -aber nicht nur dem - zur Verfügung steht.
  96. 96. 5JMeter PerfMonhttps://code.google.com/p/jmeter-plugins/Dort kann ich dann nicht nur meine Clients, sondern auch die Daten, die ich auf ihnenSammeln möchte anklicken.
  97. 97. 5JMeter PerfMonhttps://code.google.com/p/jmeter-plugins/Dort kann ich dann nicht nur meine Clients, sondern auch die Daten, die ich auf ihnenSammeln möchte anklicken.
  98. 98. 5JMeter PerfMonhttps://code.google.com/p/jmeter-plugins/Und da gibt es praktisch alles, was ich so haben möchte - bishin zu einzeldaten für einebestimmte CPU auf dem System. Das gleiche gibt es natürlich auch für RAM, Swap,Filesystem, Netzwerk etc.
  99. 99. 6O(n) Aber eigentlich wollen wir ja wissen, wie sich unsere Ressourcen über Zeit verhalten. Ob sieim Quadrat, Exponentiell, linear oder - optimal - sich sublinear verhalten, also zB gutgecached sind. Und zwar zur Bezugsgrösse User - denn meist wollen wir ja wissen, wie vielewir konkurrierend können.
  100. 100. 6JMeter PerfMonGraphen sammelnAuch da bieten die JMeter Plugins Hilfe. Ich kann nämlich alle Daten, die ich in Graphendarstellen kann - und da kann ich praktisch alle darstellen, über den schon bekanntenMetrics Monitor - im Composite Graph noch einmal zusammendübeln. Ich füge meinemTestplan also alle interessanten Graphdaten zu, und am Ende den Composite Graph.
  101. 101. 6Composite GraphAn der Stelle knackt die Usability so ein bischen, ich muss nämlich zunächste einmal dieSimulation anstarten, damit jeder Graph ein bischen Daten hat - erst in dem Moment tauchensie im Composite Graph auf. Und wenn ich sie dort habe, kann ich sie dann auch in meinenKombinierten Graphen übernehmen.
  102. 102. 6Composite GraphUnd das sieht dann so aus - und hier habe ich zB genau eine Darstellung, mit der ich arbeitenkann. Rot: Anzahl konkurrierende Nutzer, Grün: Netzwerk, Blau: CPU, Braun: Latency.
  103. 103. 6Und genau damit bekomme ich zB solche Graphen, mit denen ich sehe, dass ab ca 300parallelen Nutzern das Antwortverhalten in Responsivität kaputt geht, aber immerhinfehlerfrei kommt.
  104. 104. 1) Relevante Requests2) Klickfolgen3) Personas4) JMeter Testplan5) Serverdaten6) ReportingToDoNoch mal zusammengefasst:...Eigentlich ganz einfach.
  105. 105. GlitchesMit welchen Problemen muss ich dabei rechnen?
  106. 106. JMeterskaliertnicht.Aber es gibt ein paar Pain Points: Jmeter selbst skaliert zB nicht.
  107. 107. https://github.com/oliverlloyd/jmeter-ec2jmeter-ec2EinfachesCommandline Scriptzur Nutzung vonjmeter in der Cloud.Abhilfe schafft da Jmeter in der Cloud, namentlich jmeter-ec2, also einfache bash-basierteAutomatisierung von jmeter auf Basis der Amazon-ec2-Tools auf der Kommandozeile.Nachdem ich meinen Testplan mit meinen Threads fertig habe, und die Konfigurationsdateiauf meinen Amazon-Account angepasst habe kann ich loslegen.
  108. 108. jmeter-ec2project=“pro“ percent=“20“count=“3“ ./jmeter-ec2.shEinfach auf der Kommandzeile gestartet kann ich sagen, wie oft mein Testplan durchgeführtwird, wieviel Prozent ich machen möchte - es gehen auch 1000 - und wieviele Maschinen ichbrauche. Das sind alles small Images, und dementsprechend kostet ein Testlauf im Regelfallauch unter einem Dollar. Wir haben selbst gute Erfahrungen damit gemacht.
  109. 109. jmeter-ec2project=“pro“ percent=“20“count=“3“ ./jmeter-ec2.shEinfach auf der Kommandzeile gestartet kann ich sagen, wie oft mein Testplan durchgeführtwird, wieviel Prozent ich machen möchte - es gehen auch 1000 - und wieviele Maschinen ichbrauche. Das sind alles small Images, und dementsprechend kostet ein Testlauf im Regelfallauch unter einem Dollar. Wir haben selbst gute Erfahrungen damit gemacht.
  110. 110. jmeter-ec2project=“pro“ percent=“20“count=“3“ ./jmeter-ec2.shEinfach auf der Kommandzeile gestartet kann ich sagen, wie oft mein Testplan durchgeführtwird, wieviel Prozent ich machen möchte - es gehen auch 1000 - und wieviele Maschinen ichbrauche. Das sind alles small Images, und dementsprechend kostet ein Testlauf im Regelfallauch unter einem Dollar. Wir haben selbst gute Erfahrungen damit gemacht.
  111. 111. jmeter-ec2project=“pro“ percent=“20“count=“3“ ./jmeter-ec2.shEinfach auf der Kommandzeile gestartet kann ich sagen, wie oft mein Testplan durchgeführtwird, wieviel Prozent ich machen möchte - es gehen auch 1000 - und wieviele Maschinen ichbrauche. Das sind alles small Images, und dementsprechend kostet ein Testlauf im Regelfallauch unter einem Dollar. Wir haben selbst gute Erfahrungen damit gemacht.
  112. 112. Alternativ gibt es das ganze auch in kommerziell, für die darf man auch Werbung machen,weil bei denen regelmässig OpenSource herauspurzelt. Blazemeter hat ein schöneres Life-Reporting, macht auch internationale Verteilung, und kann per Jenkins automatisiert werden.
  113. 113. Real != TestUngeteilteZentraleGeteilteRessourcenDas nächste Problem habe ich, wenn ich keine echte Testumgebung habe - also entwedernicht die gleichen Server oder die gleiche Serveranzahl. Bei PHP-Servern habe ich es gut, diesind ungeteilt, oder auch Shared Nothing, 8 Server können genau doppelt so viel User wie 4Server. Für zentrale Ressourcen wie Datenbank, NoSQL oder Cache gilt das nicht. Das gleichegilt für geteilte Ressourcen wie SAN oder das Netzwerk. Hier kann ich nur mit Prognosenarbeiten, denn ich kann nichts über die Ressourcennutzung der realen Ressourcen aussagen.
  114. 114. Real != TestIdentischeÄhnlicheAndereDatenDas gleiche gilt, wenn ich nicht auf die gleiche Datenbasis zurückgreifen kann, oder nicht aufeine ähnliche. Auch in diesem Fall sind meinte Testaussagen nicht tauglich, weil ich nicht diegleichen Ressourcen habe. Learning von uns: Testdatenerzeugung ist immer Major Pain unddeutlich Aufwand, aber meist führt kein Weg drumherum.
  115. 115. Eigene Limitsmax_childrenmax_connectionsbufferskernel/tcpEigene Erfahrung: manchmal läuft man gegen Limits, ohne dass irgendeine Ressourceaufgebraucht wurde. Im Regelfall sind dann Limitierungen verantwortlich, die man selbst -oder die Basiskonfiguration - verursacht hat. Hier hilft es, sich einfach mal durch dieKonfigurationen zu klicken.
  116. 116. Analyse/ProfilingSlides „Profiling for Grown Ups“ aufhttp://slideshare.net/johannhartmannWebinar aufhttp://mayflower.de/Wer tiefer Analysieren will, woher die Engpässe kommen, muss sich Profiling anschauen.
  117. 117. Danke!http://slideshare.net/johannhartmannhttps://joind.in/8743Damit bin ich auch schon am Ende.Hat jemand noch Fragen?

×