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

More Related Content

Viewers also liked

Symfony vs Nette vs Phalcon
Symfony vs Nette vs PhalconSymfony vs Nette vs Phalcon
Symfony vs Nette vs Phalcon
Vojta Svoboda
 
Microservice Stategies - Scaling your API design workflow
Microservice Stategies - Scaling your API design workflowMicroservice Stategies - Scaling your API design workflow
Microservice Stategies - Scaling your API design workflow
Jakub Nesetril
 
Moje první aplikace v Symfony 3 + překvapení (4. sraz přátel Symfony v Praze)
Moje první aplikace v Symfony 3 + překvapení (4. sraz přátel Symfony v Praze)Moje první aplikace v Symfony 3 + překvapení (4. sraz přátel Symfony v Praze)
Moje první aplikace v Symfony 3 + překvapení (4. sraz přátel Symfony v Praze)
Martin Zeman
 
FTP deployment Devel 2015
FTP deployment Devel 2015FTP deployment Devel 2015
FTP deployment Devel 2015
David Grudl
 
A Beginners Guide to noSQL
A Beginners Guide to noSQLA Beginners Guide to noSQL
A Beginners Guide to noSQL
Mike Crabb
 
Dealing with Enterprise Level Data
Dealing with Enterprise Level DataDealing with Enterprise Level Data
Dealing with Enterprise Level Data
Mike Crabb
 

Viewers also liked (6)

Symfony vs Nette vs Phalcon
Symfony vs Nette vs PhalconSymfony vs Nette vs Phalcon
Symfony vs Nette vs Phalcon
 
Microservice Stategies - Scaling your API design workflow
Microservice Stategies - Scaling your API design workflowMicroservice Stategies - Scaling your API design workflow
Microservice Stategies - Scaling your API design workflow
 
Moje první aplikace v Symfony 3 + překvapení (4. sraz přátel Symfony v Praze)
Moje první aplikace v Symfony 3 + překvapení (4. sraz přátel Symfony v Praze)Moje první aplikace v Symfony 3 + překvapení (4. sraz přátel Symfony v Praze)
Moje první aplikace v Symfony 3 + překvapení (4. sraz přátel Symfony v Praze)
 
FTP deployment Devel 2015
FTP deployment Devel 2015FTP deployment Devel 2015
FTP deployment Devel 2015
 
A Beginners Guide to noSQL
A Beginners Guide to noSQLA Beginners Guide to noSQL
A Beginners Guide to noSQL
 
Dealing with Enterprise Level Data
Dealing with Enterprise Level DataDealing with Enterprise Level Data
Dealing with Enterprise Level Data
 

Similar to Profiling PHP Applications

AI Restart 2024: Lukáš Kostka - Automatizace analýzy klíčových slov aneb změn...
AI Restart 2024: Lukáš Kostka - Automatizace analýzy klíčových slov aneb změn...AI Restart 2024: Lukáš Kostka - Automatizace analýzy klíčových slov aneb změn...
AI Restart 2024: Lukáš Kostka - Automatizace analýzy klíčových slov aneb změn...
Taste
 
Algoritmy a sociální sítě - stručný úvod
Algoritmy a sociální sítě - stručný úvodAlgoritmy a sociální sítě - stručný úvod
Algoritmy a sociální sítě - stručný úvod
Josef Šlerka
 
Efektivní online prezentace
Efektivní online prezentaceEfektivní online prezentace
Efektivní online prezentace
Ivo Kylián
 
Jak na onboarding
Jak na onboardingJak na onboarding
Jak na onboarding
Michal Acler
 
Analýza klíčových slov - Plzeňský Barcamp 2015
Analýza klíčových slov - Plzeňský Barcamp 2015Analýza klíčových slov - Plzeňský Barcamp 2015
Analýza klíčových slov - Plzeňský Barcamp 2015
Jakub Kašparů
 
Závěrečný úkol KPI
Závěrečný úkol KPIZávěrečný úkol KPI
Závěrečný úkol KPI
HelgaHeraldicka
 
PPC Date #5: Petr Bureš - Práce PPCčkaře v roce 2023
PPC Date #5: Petr Bureš - Práce PPCčkaře v roce 2023PPC Date #5: Petr Bureš - Práce PPCčkaře v roce 2023
PPC Date #5: Petr Bureš - Práce PPCčkaře v roce 2023
Taste
 
Webová analytika (ČZU - Webdesign, 11. 12. 2013)
Webová analytika (ČZU - Webdesign, 11. 12. 2013)Webová analytika (ČZU - Webdesign, 11. 12. 2013)
Webová analytika (ČZU - Webdesign, 11. 12. 2013)
Sherpas
 
SEO Restart 2023: Vojtěch Fiala - Praktické využití AI v SEO pro začátečníky ...
SEO Restart 2023: Vojtěch Fiala - Praktické využití AI v SEO pro začátečníky ...SEO Restart 2023: Vojtěch Fiala - Praktické využití AI v SEO pro začátečníky ...
SEO Restart 2023: Vojtěch Fiala - Praktické využití AI v SEO pro začátečníky ...
Taste
 
Adobe je dobré
Adobe je dobréAdobe je dobré
Adobe je dobré
Lukáš Čech
 
Digisemestr - Webová analytika chytře s Google Analytics - workshop 16. 11. 2015
Digisemestr - Webová analytika chytře s Google Analytics - workshop 16. 11. 2015Digisemestr - Webová analytika chytře s Google Analytics - workshop 16. 11. 2015
Digisemestr - Webová analytika chytře s Google Analytics - workshop 16. 11. 2015
Sun Marketing
 
Jak rozpoznat hodnotné informace
Jak rozpoznat hodnotné informaceJak rozpoznat hodnotné informace
Jak rozpoznat hodnotné informace
Martin Paták
 
Social media monitoring
Social media monitoringSocial media monitoring
Social media monitoring
Josef Šlerka
 
Seologer novinky v nástroji
Seologer novinky v nástrojiSeologer novinky v nástroji
Seologer novinky v nástroji
Marketing Miner
 
Jak úspěšně zavést do firmy webovou analytiku
Jak úspěšně zavést do firmy webovou analytikuJak úspěšně zavést do firmy webovou analytiku
Jak úspěšně zavést do firmy webovou analytiku
Akce Dobrého webu
 
Žijeme s uživateli
Žijeme s uživateliŽijeme s uživateli
Žijeme s uživateli
Petr Stedry
 
Nástroje máme. Víme, co s nimi chceme dělat?
Nástroje máme. Víme, co s nimi chceme dělat?Nástroje máme. Víme, co s nimi chceme dělat?
Nástroje máme. Víme, co s nimi chceme dělat?
Jan Böhm
 
SEO a UX: Rivalové, nebo parťáci? Rozsekneme to! | SEORestart | 16. 6. 2017
SEO a UX: Rivalové, nebo parťáci? Rozsekneme to! | SEORestart | 16. 6. 2017SEO a UX: Rivalové, nebo parťáci? Rozsekneme to! | SEORestart | 16. 6. 2017
SEO a UX: Rivalové, nebo parťáci? Rozsekneme to! | SEORestart | 16. 6. 2017
Jan Kvasnička
 
Analytika ve světě startupu (Petr Bureš)
Analytika ve světě startupu (Petr Bureš)Analytika ve světě startupu (Petr Bureš)
Analytika ve světě startupu (Petr Bureš)
Taste Medio
 
New Focus - co děláme
New Focus - co dělámeNew Focus - co děláme
New Focus - co děláme
Martin Humpolec
 

Similar to Profiling PHP Applications (20)

AI Restart 2024: Lukáš Kostka - Automatizace analýzy klíčových slov aneb změn...
AI Restart 2024: Lukáš Kostka - Automatizace analýzy klíčových slov aneb změn...AI Restart 2024: Lukáš Kostka - Automatizace analýzy klíčových slov aneb změn...
AI Restart 2024: Lukáš Kostka - Automatizace analýzy klíčových slov aneb změn...
 
Algoritmy a sociální sítě - stručný úvod
Algoritmy a sociální sítě - stručný úvodAlgoritmy a sociální sítě - stručný úvod
Algoritmy a sociální sítě - stručný úvod
 
Efektivní online prezentace
Efektivní online prezentaceEfektivní online prezentace
Efektivní online prezentace
 
Jak na onboarding
Jak na onboardingJak na onboarding
Jak na onboarding
 
Analýza klíčových slov - Plzeňský Barcamp 2015
Analýza klíčových slov - Plzeňský Barcamp 2015Analýza klíčových slov - Plzeňský Barcamp 2015
Analýza klíčových slov - Plzeňský Barcamp 2015
 
Závěrečný úkol KPI
Závěrečný úkol KPIZávěrečný úkol KPI
Závěrečný úkol KPI
 
PPC Date #5: Petr Bureš - Práce PPCčkaře v roce 2023
PPC Date #5: Petr Bureš - Práce PPCčkaře v roce 2023PPC Date #5: Petr Bureš - Práce PPCčkaře v roce 2023
PPC Date #5: Petr Bureš - Práce PPCčkaře v roce 2023
 
Webová analytika (ČZU - Webdesign, 11. 12. 2013)
Webová analytika (ČZU - Webdesign, 11. 12. 2013)Webová analytika (ČZU - Webdesign, 11. 12. 2013)
Webová analytika (ČZU - Webdesign, 11. 12. 2013)
 
SEO Restart 2023: Vojtěch Fiala - Praktické využití AI v SEO pro začátečníky ...
SEO Restart 2023: Vojtěch Fiala - Praktické využití AI v SEO pro začátečníky ...SEO Restart 2023: Vojtěch Fiala - Praktické využití AI v SEO pro začátečníky ...
SEO Restart 2023: Vojtěch Fiala - Praktické využití AI v SEO pro začátečníky ...
 
Adobe je dobré
Adobe je dobréAdobe je dobré
Adobe je dobré
 
Digisemestr - Webová analytika chytře s Google Analytics - workshop 16. 11. 2015
Digisemestr - Webová analytika chytře s Google Analytics - workshop 16. 11. 2015Digisemestr - Webová analytika chytře s Google Analytics - workshop 16. 11. 2015
Digisemestr - Webová analytika chytře s Google Analytics - workshop 16. 11. 2015
 
Jak rozpoznat hodnotné informace
Jak rozpoznat hodnotné informaceJak rozpoznat hodnotné informace
Jak rozpoznat hodnotné informace
 
Social media monitoring
Social media monitoringSocial media monitoring
Social media monitoring
 
Seologer novinky v nástroji
Seologer novinky v nástrojiSeologer novinky v nástroji
Seologer novinky v nástroji
 
Jak úspěšně zavést do firmy webovou analytiku
Jak úspěšně zavést do firmy webovou analytikuJak úspěšně zavést do firmy webovou analytiku
Jak úspěšně zavést do firmy webovou analytiku
 
Žijeme s uživateli
Žijeme s uživateliŽijeme s uživateli
Žijeme s uživateli
 
Nástroje máme. Víme, co s nimi chceme dělat?
Nástroje máme. Víme, co s nimi chceme dělat?Nástroje máme. Víme, co s nimi chceme dělat?
Nástroje máme. Víme, co s nimi chceme dělat?
 
SEO a UX: Rivalové, nebo parťáci? Rozsekneme to! | SEORestart | 16. 6. 2017
SEO a UX: Rivalové, nebo parťáci? Rozsekneme to! | SEORestart | 16. 6. 2017SEO a UX: Rivalové, nebo parťáci? Rozsekneme to! | SEORestart | 16. 6. 2017
SEO a UX: Rivalové, nebo parťáci? Rozsekneme to! | SEORestart | 16. 6. 2017
 
Analytika ve světě startupu (Petr Bureš)
Analytika ve světě startupu (Petr Bureš)Analytika ve světě startupu (Petr Bureš)
Analytika ve světě startupu (Petr Bureš)
 
New Focus - co děláme
New Focus - co dělámeNew Focus - co děláme
New Focus - co děláme
 

Profiling PHP Applications