Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.
PERFORMANC E!?             Einführung in     Analyse und Optimierung aufPHP & Mysql basierten Webanwendungen
Fe lix Pe te rs ●     Baujahr 1988 ●     Bachelor Studium      ●           Hochschule Esslingen      ●           Hochschul...
Das kommt jetzt ●      Was ist Performance ●      Analyse       ●           Methoden / Tools       ●           Metriken   ...
Das kommt nicht ●      Load-Balancing ●      Datenbank Replikation ●      Webserver ●      Linux18.02.13                Pe...
Performance      Der Begriff Performance beschreibt:      die Güte einer Anwendung ergibt sich aus den      Erwartungen an...
Performance ●     Ressourcen sind nicht unendlich und kosten Geld      ●           Unperformante Anwendungen kosten Geld ●...
Qualität durch Performance ●      Nutzer sind durch Facebook & Co verwöhnt       ●           Vergleichen damit die Anwendu...
Ausgangslage                                                          Die Seite ist voll langsam!      http://techbeat.com...
Keep Cool!18.02.13      Performance!?   9
Kritische Use-Cases finden ●     Die Anwendung aufsplitten und getrennt betrachten! ●     Suchanfrage ●     Verarbeitung v...
Akzeptanzkriterien ●      Wodurch entsteht das Gefühl langsam? ●      Was erwartet der Nutzer ●      Wie wird dem Nutzer F...
Akzeptanzkriterienformulieren ●     Ich will, dass die Aufgabe x bei einen gegebenen     Datenmenge y in der Zeit z erledi...
Der Mythos Performance ●     „Mit einem besseren Server wäre das alle kein     Problem“ ●     „echo ist viel schneller als...
Nicht raten → Messen!           Problem → messen → analysieren (→ optimieren)18.02.13                     Performance!?   ...
Vorge he ns we is e ●      Einzelnen Use-Case von außen nach innen       ●           Vom Groben ins feine       ●         ...
De r Blic k aufs Ganze ●      Wie schnell reagiert die Anwendung? ●      Wie viel kann die Anwendung verarbeiten? ●      W...
De r Blic k aufs Ganze18.02.13     Performance!?   17
Re s pons e Time ●     Die Zeit zwischen dem absetzten eines Request bis     zum eintreffen der Response des Servers ●    ...
Throughput ●      Ergibt sich aus einer Vielzahl von Messungen ●      Definiert die Anzahl von:      Verarbeiteten Anfrage...
Re s pons e Time vs .Troughput ●      Der Troughput zeigt die Last die Server      verarbeiten muss ●      Die Response Ti...
Bac ke nd – PHP Profiling ●     Kompleten Programmablauf aufzeichnen ●     Zeiten messen, CPU Auslastung, RAM Belegung ●  ...
PHP Profiling - Messwerte ●     Walltime, CPU-Time, Memory Usage, Call Count,     Call-Graph18.02.13                 Perfo...
Daten erhalten ●      Datenbanken (und Webservice-Aufrufe)18.02.13                Performance!?        23
Datenbank - Messwerte ●      Zeit um Verbindung aufzubauen       ●           Meistens zu vernachlässigen ●      Zeit um ei...
Webservice - Messwerte ●      Zeit um Verbindung aufzubauen ●      Zeit um Daten zu empfangen ●      Meistens nicht zu bee...
Fast geschafft!           Vorbereitungen zum testen18.02.13             Performance!?     26
Test-Client und Sandbox18.02.13    Performance!?   27
Sandbox nutzen ●      Aussagekräftige Test können nur unter immer      gleichen Bedingungen gemacht werden! ●      Das Hos...
Tests und Last erzeugen ●     Test automatisieren! ●     Immer mit selben Daten testen ●     Auch hier: Je nach Kontext te...
Ein paar Worte zumTestdesign ●     Falsches Testdesign führt zu falschen Aussagen ●     Bsp: Die maximale Lastgrenze einer...
Bas e line e rs te lle n ●      Dient als Ausgangslage ●      Bei Frameworks, das Framework messen18.02.13                ...
Die fe rtige Umge bung18.02.13     Performance!?   32
Ge nug The orie !           Wir werden dann mal praktisch18.02.13               Performance!?       33
Und je tzt? Optimie re n? !                http://www.theillustratedprofessor.com/wp-content/uploads/2012/02/It-Depends-1....
Es gibt ke in HowTo ●      Jedes Ergebnis muss einzeln im Kontext      betrachtet werden ●      Optimierungen müssen zusam...
Je besser man das Problem versteht, umso      besser kann man es beheben!18.02.13         Performance!?         36
Abe r e in paar Re ge ln ●      So geht es nicht:       ●           Teure Funktionen in einer Schleife       ●           D...
Ein paar Regeln ●     So geht’s:       ●           Die Response so früh wie möglich erzeugen       ●           Nur benötig...
Datenbanken verstehen ●      Storage-Engines entsprechend anwenden ●      Querys analysieren und verstehen ●      Query-Ca...
Fragen?                   Follow Me:           @el_wichtel / @wichteldesign                  Autonetzer?            Gutsch...
Nächste SlideShare
Wird geladen in …5
×

Performance?!

511 Aufrufe

Veröffentlicht am

Einführung in Performance-Analyse und Profiling mit PHP

Veröffentlicht in: Technologie
  • Als Erste(r) kommentieren

Performance?!

  1. 1. PERFORMANC E!? Einführung in Analyse und Optimierung aufPHP & Mysql basierten Webanwendungen
  2. 2. Fe lix Pe te rs ● Baujahr 1988 ● Bachelor Studium ● Hochschule Esslingen ● Hochschule Reutlingen ● Freelancer – wichteldesign.de ● Entwickler bei autonetzer.de18.02.13 Performance!? 2
  3. 3. Das kommt jetzt ● Was ist Performance ● Analyse ● Methoden / Tools ● Metriken ● Vorgehensweise ● Praxis / Troubleshooting18.02.13 Performance!? 3
  4. 4. Das kommt nicht ● Load-Balancing ● Datenbank Replikation ● Webserver ● Linux18.02.13 Performance!? 4
  5. 5. Performance Der Begriff Performance beschreibt: die Güte einer Anwendung ergibt sich aus den Erwartungen an diese in Bezug auf: ● die benötigten Ressourcen ● und Zeit unter gegebenen Bedingungen.18.02.13 Performance!? 5
  6. 6. Performance ● Ressourcen sind nicht unendlich und kosten Geld ● Unperformante Anwendungen kosten Geld ● Zeit ergibt sich aus der Geschwindigkeit in der die Anwendung Aufgaben erfüllen kann. ● Ist vom Nutzer direkt spürbar ● Hat direkten Einfluss auf das Nutzererlebnis18.02.13 Performance!? 6
  7. 7. Qualität durch Performance ● Nutzer sind durch Facebook & Co verwöhnt ● Vergleichen damit die Anwendungen => Bessere Usability durch schnellere Anwendung ● Rankingfaktor für Google ● Bessere Position führt zu mehr Besuchern18.02.13 Performance!? 7
  8. 8. Ausgangslage Die Seite ist voll langsam! http://techbeat.com/wp-content/uploads/2012/10/angrycomputerguy.gif18.02.13 Performance!? 8
  9. 9. Keep Cool!18.02.13 Performance!? 9
  10. 10. Kritische Use-Cases finden ● Die Anwendung aufsplitten und getrennt betrachten! ● Suchanfrage ● Verarbeitung von Formulardaten ● Checkout-Prozess ● Uploads ● Datenmanipulation18.02.13 Performance!? 10
  11. 11. Akzeptanzkriterien ● Wodurch entsteht das Gefühl langsam? ● Was erwartet der Nutzer ● Wie wird dem Nutzer Feedback gegeben? ● Immer abhängig vom Use-Case!18.02.13 Performance!? 11
  12. 12. Akzeptanzkriterienformulieren ● Ich will, dass die Aufgabe x bei einen gegebenen Datenmenge y in der Zeit z erledigt ist. ● Im Beispiel: Eine Suche nach Fahrzeugen in Berlin (162 Stk.) soll unterhalb einer Sekunde Ergebnisse anzeigen.18.02.13 Performance!? 12
  13. 13. Der Mythos Performance ● „Mit einem besseren Server wäre das alle kein Problem“ ● „echo ist viel schneller als print“ ● „Mit vielen Joins kann das ja nix werden auf der Datenbank“ Google Suche „performance tips php“ → Ungefähr 166.000.000 Ergebnisse (0,31 Sekunden)18.02.13 Performance!? 13
  14. 14. Nicht raten → Messen! Problem → messen → analysieren (→ optimieren)18.02.13 Performance!? 14
  15. 15. Vorge he ns we is e ● Einzelnen Use-Case von außen nach innen ● Vom Groben ins feine ● Ursachen einkreisen18.02.13 Performance!? 15
  16. 16. De r Blic k aufs Ganze ● Wie schnell reagiert die Anwendung? ● Wie viel kann die Anwendung verarbeiten? ● Wie verhält sich die Anwendung unter verschiedener Last? ● Tools: Apache Bench, Siege, Jmeter uvm.18.02.13 Performance!? 16
  17. 17. De r Blic k aufs Ganze18.02.13 Performance!? 17
  18. 18. Re s pons e Time ● Die Zeit zwischen dem absetzten eines Request bis zum eintreffen der Response des Servers ● Beinhaltet den Download (gesamten Response) aber nicht und Rendern / lokales Verarbeiten der Response bzw. dessen Inhalt!18.02.13 Performance!? 18
  19. 19. Throughput ● Ergibt sich aus einer Vielzahl von Messungen ● Definiert die Anzahl von: Verarbeiteten Anfragen / Zeiteinheit ● Bsp: 10 Anfragen / Sekunde ● Steht im Verhältnis zur Response Time18.02.13 Performance!? 19
  20. 20. Re s pons e Time vs .Troughput ● Der Troughput zeigt die Last die Server verarbeiten muss ● Die Response Time zeigt wie schnell er das macht.18.02.13 Performance!? 20
  21. 21. Bac ke nd – PHP Profiling ● Kompleten Programmablauf aufzeichnen ● Zeiten messen, CPU Auslastung, RAM Belegung ● Tools: ● Xdebug ● XHProf ● (Framework) Eigene Zeitmessungen18.02.13 Performance!? 21
  22. 22. PHP Profiling - Messwerte ● Walltime, CPU-Time, Memory Usage, Call Count, Call-Graph18.02.13 Performance!? 22
  23. 23. Daten erhalten ● Datenbanken (und Webservice-Aufrufe)18.02.13 Performance!? 23
  24. 24. Datenbank - Messwerte ● Zeit um Verbindung aufzubauen ● Meistens zu vernachlässigen ● Zeit um einen Query auszuführen ● Verbrauchter RAM ● Tools: Mysql (Explain, Log, usw.), (Framework / ORM) eigene Messungen18.02.13 Performance!? 24
  25. 25. Webservice - Messwerte ● Zeit um Verbindung aufzubauen ● Zeit um Daten zu empfangen ● Meistens nicht zu beeinflussen ● Wenn eigener Webservice → Gehe zurück auf Los18.02.13 Performance!? 25
  26. 26. Fast geschafft! Vorbereitungen zum testen18.02.13 Performance!? 26
  27. 27. Test-Client und Sandbox18.02.13 Performance!? 27
  28. 28. Sandbox nutzen ● Aussagekräftige Test können nur unter immer gleichen Bedingungen gemacht werden! ● Das Host-System sauber halten ● Virtuelles Netzwerk simulierbar ● Tools: Virtual Box, VmWare, VAGRANT18.02.13 Performance!? 28
  29. 29. Tests und Last erzeugen ● Test automatisieren! ● Immer mit selben Daten testen ● Auch hier: Je nach Kontext testen! ● Lasttest, Stresstest, Single Run ● Tools: Jmeter erlaubt auch komplexe Tests18.02.13 Performance!? 29
  30. 30. Ein paar Worte zumTestdesign ● Falsches Testdesign führt zu falschen Aussagen ● Bsp: Die maximale Lastgrenze einer Anwendung kann nur durch detaillierte Simulation von Nutzern annähernd korrekt gemessen werden.18.02.13 Performance!? 30
  31. 31. Bas e line e rs te lle n ● Dient als Ausgangslage ● Bei Frameworks, das Framework messen18.02.13 Performance!? 31
  32. 32. Die fe rtige Umge bung18.02.13 Performance!? 32
  33. 33. Ge nug The orie ! Wir werden dann mal praktisch18.02.13 Performance!? 33
  34. 34. Und je tzt? Optimie re n? ! http://www.theillustratedprofessor.com/wp-content/uploads/2012/02/It-Depends-1.jpg18.02.13 Performance!? 34
  35. 35. Es gibt ke in HowTo ● Jedes Ergebnis muss einzeln im Kontext betrachtet werden ● Optimierungen müssen zusammenspielen ● Alle gemachten Optimierungen testen ● Im Einzelnen und und im Zusammenspiel18.02.13 Performance!? 35
  36. 36. Je besser man das Problem versteht, umso besser kann man es beheben!18.02.13 Performance!? 36
  37. 37. Abe r e in paar Re ge ln ● So geht es nicht: ● Teure Funktionen in einer Schleife ● Daten doppelt erzeugen ● Statische Daten bei jedem Aufruf erzeugen ● Nicht verwendete Daten erzeugen ● Uvm.18.02.13 Performance!? 37
  38. 38. Ein paar Regeln ● So geht’s: ● Die Response so früh wie möglich erzeugen ● Nur benötigte Daten holen ● Nicht zeitkritische Aufgaben verschieben ● Statische Daten nur einmal vom Webservice holen (Geocoding z.B) ● Caching!18.02.13 Performance!? 38
  39. 39. Datenbanken verstehen ● Storage-Engines entsprechend anwenden ● Querys analysieren und verstehen ● Query-Cache nutzen ● NOW() umgeht den Query-Cache ● Ggf. Daten denormalisieren ● Birgt aber gefahren18.02.13 Performance!? 39
  40. 40. Fragen? Follow Me: @el_wichtel / @wichteldesign Autonetzer? Gutscheincode: iknowfelix18.02.13 Performance!? 40

×