Profiling PHP Applications

  • 562 views
Uploaded on

Ctvrtkon 03/10/2013

Ctvrtkon 03/10/2013

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
562
On Slideshare
0
From Embeds
0
Number of Embeds
4

Actions

Shares
Downloads
2
Comments
0
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Profilování PHP aplikací Michal Haták Čtvrtkon 3.10.2013
  • 2. O mně Lead developer @ INIZIO Internet Media PHP a CoffeeScript @Twistacz blog.twista.cz
  • 3. Co je vůbec profilování ? “Profilování je vyhledávání míst v programu, které jsou vhodné pro optimalizaci”
  • 4. Cíl: nalezení pomalých částí aplikace
  • 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. 2. krok – profilovací analýza Z naměřených údajů získáváme různé statistiky Provádíme optimalizace
  • 7. Profilování můžeme rozdělit na dva druhy
  • 8. Zkusíme změnit konfiguraci/kód a změříme rozdíl Běžné profilování
  • 9. Aghhhh, Aplikace neběží!! Proč je tak pomalá? Rychle, opravit! Kritické profilování
  • 10. Obvykle budete raději v první situaci
  • 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. Aplikace
  • 13. Nástroje microtime(); memory_get_usage(); memory_get_peak_usage();
  • 14. Nástroje microtime(); memory_get_usage(); memory_get_peak_usage();
  • 15. Nástroje xDebug XHprof
  • 16. Co mají společného extenze do PHP shromažďují data pomáhají nám nalézt úzká místa
  • 17. XHProf Facebook open source (3/09) production-ready (malý režijní čas) pecl extension vestavěný „prohlížeč“ github.com/facebook/xhprof
  • 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. XHGui open source vylepšené GUI jednoduché nasadit pokročilejší konfigurace github.com/preinheimer/xhgui
  • 20. Instalace XHGui git clone https://github.com/preinheimer/xhgui cd xhgui chmod -R 0777 cache php install.php //composer
  • 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. // Obtain the answer to life, the universe, // and your application one time out of a hundred if (rand(0, 100) !== 42) { return; }
  • 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. Spustíme aplikaci a hurá do XHGui
  • 25. Úvodní obrazovka
  • 26. Obrazovka běhu
  • 27. Přehled volaných funkcí/metod
  • 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. Callgraph
  • 30. graphviz
  • 31. xDebug víc než profiler vylepšuje klasický error reporting (stack trace) debuging (+ provázání s IDE) open source
  • 32. Instalace xdebug.org/wizard.php copy & paste phpinfo(); xdebug.profiler_enable = 1 xdebug.profiler_output_dir = /tmp xdebug.profiler_enable_trigger = 1
  • 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. Webgrind
  • 35. xDebug vs. XHProf + komplexnější - problém s legacy + memory tracking + menší logy (10-15x) + rychlejší
  • 36. Pár tipů Snažte se přiblížit produkční verzi Reálná data Provoz (ab, siege)
  • 37. Pár tipů Neztrácejte čas mikrooptimalizacemi v produkci není třeba logovat vše
  • 38. Otázky?
  • 39. Děkuji za pozornost! @Twistacz blog.twista.cz