Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Profiling PHP Applications

1,205 views

Published on

Ctvrtkon 03/10/2013

Published in: Technology
  • Be the first to comment

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

×