Profiling PHP Applications

1,137 views

Published on

Ctvrtkon 03/10/2013

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,137
On SlideShare
0
From Embeds
0
Number of Embeds
331
Actions
Shares
0
Downloads
13
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Profiling PHP Applications

  1. 1. Profilování PHP aplikací Michal Haták Čtvrtkon 3.10.2013
  2. 2. O mně Lead developer @ INIZIO Internet Media PHP a CoffeeScript @Twistacz blog.twista.cz
  3. 3. Co je vůbec profilování ? “Profilování je vyhledávání míst v programu, které jsou vhodné pro optimalizaci”
  4. 4. Cíl: nalezení pomalých částí aplikace
  5. 5. 1. krok - měření Získání statistických údajů o běžícím programu Co můžeme měřit ? ● Paměť ● Čas ● Počet a délku volání funkcí ● ...
  6. 6. 2. krok – profilovací analýza Z naměřených údajů získáváme různé statistiky Provádíme optimalizace
  7. 7. Profilování můžeme rozdělit na dva druhy
  8. 8. Zkusíme změnit konfiguraci/kód a změříme rozdíl Běžné profilování
  9. 9. Aghhhh, Aplikace neběží!! Proč je tak pomalá? Rychle, opravit! Kritické profilování
  10. 10. Obvykle budete raději v první situaci
  11. 11. ideální je profilovat během vývoje na reálných datech sledovat prvotní známky „pomalosti“ dát si pozor na kritická místa
  12. 12. Aplikace
  13. 13. Nástroje microtime(); memory_get_usage(); memory_get_peak_usage();
  14. 14. Nástroje microtime(); memory_get_usage(); memory_get_peak_usage();
  15. 15. Nástroje xDebug XHprof
  16. 16. Co mají společného extenze do PHP shromažďují data pomáhají nám nalézt úzká místa
  17. 17. XHProf Facebook open source (3/09) production-ready (malý režijní čas) pecl extension vestavěný „prohlížeč“ github.com/facebook/xhprof
  18. 18. Linux: > sudo pecl install xhprof-beta [xhprof] extension=xhprof.so xhprof.output_dir=/tmp/xhprof > sudo service apache2 restart Windows: http://dev.freshsite.pl/php-extensions/xhprof.html Instalace
  19. 19. XHGui open source vylepšené GUI jednoduché nasadit pokročilejší konfigurace github.com/preinheimer/xhgui
  20. 20. Instalace XHGui git clone https://github.com/preinheimer/xhgui cd xhgui chmod -R 0777 cache php install.php //composer
  21. 21. Nasazení - XHGui // .htaccess php_value auto_prepend_file "way/to/xhgui/external/header.php" nebo // php.ini auto_prepend_file = "way/to/xhgui/external/header.php"
  22. 22. // Obtain the answer to life, the universe, // and your application one time out of a hundred if (rand(0, 100) !== 42) { return; }
  23. 23. Nasazení – bez XHGui xhprof_enable(); ... $data = xhprof_disable(); $xhp = new XHProfRuns_Default(); $xhpId = $xhp ->save_run($data, "name"); zdrojak.cz/clanky/profilovani-php-skriptu-pomoci-xhprof/
  24. 24. Spustíme aplikaci a hurá do XHGui
  25. 25. Úvodní obrazovka
  26. 26. Obrazovka běhu
  27. 27. Přehled volaných funkcí/metod
  28. 28. Exclusive čas strávený přímo v těle funkce Inclusive čas strávený v celém "podstromu funkcí" Co můžeme měřit
  29. 29. Callgraph
  30. 30. graphviz
  31. 31. xDebug víc než profiler vylepšuje klasický error reporting (stack trace) debuging (+ provázání s IDE) open source
  32. 32. Instalace xdebug.org/wizard.php copy & paste phpinfo(); xdebug.profiler_enable = 1 xdebug.profiler_output_dir = /tmp xdebug.profiler_enable_trigger = 1
  33. 33. valgrind-format Jsou potřeba speciální programy na prohlížení záznamů WinCacheGrind – Windows github.com/jokkedk/webgrind KCacheGrind – Linux kcachegrind.sourceforge.net WebGrind – Web github.com/jokkedk/webgrind
  34. 34. Webgrind
  35. 35. xDebug vs. XHProf + komplexnější - problém s legacy + memory tracking + menší logy (10-15x) + rychlejší
  36. 36. Pár tipů Snažte se přiblížit produkční verzi Reálná data Provoz (ab, siege)
  37. 37. Pár tipů Neztrácejte čas mikrooptimalizacemi v produkci není třeba logovat vše
  38. 38. Otázky?
  39. 39. Děkuji za pozornost! @Twistacz blog.twista.cz

×