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.
Dynamiczna analiza aplikacji PHP               Wojciech Stryszyk         meet.php#6, Poznań, 11.08.2012
Skąd wiemy że aplikacja jest wydajna?20.08.12    Dynamiczna analiza aplikacji PHP   2
Profilowanie aplikacji       Co mierzymy?      •        liczbę wywołań instrukcji      •        czas wykonania pojedynczej...
20.08.12                                                                  % requestów w próbie                            ...
20.08.12                                                              % requestów w próbie                                ...
Moja aplikacja jest skomplikowana!     Wrzuć wszystko do jednego worka i         pozwól zadziałać statystyce20.08.12      ...
Warsztat pracy-   Xdebug – WinCacheGrind,    KCacheGrind- Xhprof + XH GUI20.08.12      Dynamiczna analiza aplikacji PHP   7
Instalacja i uruchomienie xhprof      •        Instalacja standartowo z pecl-a      •        Uruchomienie:           xhpro...
Format danych xhprof           Array (               [main()==>strlen] => Array (                         [ct] => 1       ...
Prezentacja wyników20.08.12       Dynamiczna analiza aplikacji PHP   10
Prezentacja wyników20.08.12       Dynamiczna analiza aplikacji PHP   11
Obserwacja trendu Z serii kilkunastu tysięcy instrukcji jakie wywoływane są w pojedyńczym przebiegu, pierwszych kilkadzies...
Analiza wynikówNa co zwracać uwagę?•    Duże wartości liczby wywołań funkcji•    Procentowy udział instrukcji w czasie wyk...
PHP-owi recydywiści Popularne pozycje na szczycie listy najciężczych instrukcji:•  operacje na socketach (wszystkie zdalne...
Pytania?20.08.12   Dynamiczna analiza aplikacji PHP   15
Upcoming SlideShare
Loading in …5
×

Dynamiczna analiza aplikacji php - meet.php

1,349 views

Published on

Dynamiczna analiza aplikacji php z uzyciem Xhprof
meet.php#6
Poznan, 11.08.2012

Published in: Technology
  • Be the first to comment

Dynamiczna analiza aplikacji php - meet.php

  1. 1. Dynamiczna analiza aplikacji PHP Wojciech Stryszyk meet.php#6, Poznań, 11.08.2012
  2. 2. Skąd wiemy że aplikacja jest wydajna?20.08.12 Dynamiczna analiza aplikacji PHP 2
  3. 3. Profilowanie aplikacji Co mierzymy? • liczbę wywołań instrukcji • czas wykonania pojedynczej instrukcji • czas procesora • użycie pamięci20.08.12 Dynamiczna analiza aplikacji PHP 3
  4. 4. 20.08.12 % requestów w próbie 0 2 4 6 8 10 12 14 16 18 20 Webapi ShowItem Listing Suggest ShowCategories Search MainpagePromo Mainpage MainpagePromo2 UserAuctions ShowCase Login MyAccount Cafe Webapi2Dynamiczna analiza aplikacji PHP ShowUser Banners MyAccount2 Ilosc requestów wybranych funkcjonalności w jednostce czasu Rss Czas Login2 Moja aplikacja jest skomplikowana!4
  5. 5. 20.08.12 % requestów w próbie 0 2 4 6 8 10 12 14 16 18 20 Webapi ShowItem Listing Suggest ShowCategories Search MainpagePromo Mainpage MainpagePromo2 UserAuctions ShowCase Login MyAccount Cafe Webapi2Dynamiczna analiza aplikacji PHP ShowUser Banners MyAccount2 Rss Login2 Ilosc requestów wybranych funkcjonalności oraz uzycie CPU w jednostce czasu Czas % CPU w próbie Moja aplikacja jest skomplikowana!5
  6. 6. Moja aplikacja jest skomplikowana! Wrzuć wszystko do jednego worka i pozwól zadziałać statystyce20.08.12 Dynamiczna analiza aplikacji PHP 6
  7. 7. Warsztat pracy- Xdebug – WinCacheGrind, KCacheGrind- Xhprof + XH GUI20.08.12 Dynamiczna analiza aplikacji PHP 7
  8. 8. Instalacja i uruchomienie xhprof • Instalacja standartowo z pecl-a • Uruchomienie: xhprof_enable( XHPROF_FLAGS_CPU | XHPROF_FLAGS_MEMORY | XHPROF_FLAGS_NO_BUILTINS ); /* the code you want to profile */ $xhprof_data = xhprof_disable();20.08.12 Dynamiczna analiza aplikacji PHP 8
  9. 9. Format danych xhprof Array ( [main()==>strlen] => Array ( [ct] => 1 [wt] => 279 ) [main()==>xhprof_disable] => Array ( [ct] => 1 [wt] => 9 ) [main()] => Array ( [ct] => 1 [wt] => 610 ) )20.08.12 Dynamiczna analiza aplikacji PHP 9
  10. 10. Prezentacja wyników20.08.12 Dynamiczna analiza aplikacji PHP 10
  11. 11. Prezentacja wyników20.08.12 Dynamiczna analiza aplikacji PHP 11
  12. 12. Obserwacja trendu Z serii kilkunastu tysięcy instrukcji jakie wywoływane są w pojedyńczym przebiegu, pierwszych kilkadziesiąt funkcji tj. zwykle < 1% utylizuje nawet 80% CPU !20.08.12 Dynamiczna analiza aplikacji PHP 12
  13. 13. Analiza wynikówNa co zwracać uwagę?• Duże wartości liczby wywołań funkcji• Procentowy udział instrukcji w czasie wykonania/czasie CPU całej próby 20.08.12 Dynamiczna analiza aplikacji PHP 13
  14. 14. PHP-owi recydywiści Popularne pozycje na szczycie listy najciężczych instrukcji:• operacje na socketach (wszystkie zdalne źródła danych)• operacje na plikach, także include-y, file_exists• długie pętle• niektóre wbudowane funkcje php np.: define, defined, is_numeric, array_key_exists• operacje na stringach, wyrazenia regularne 20.08.12 Dynamiczna analiza aplikacji PHP 14
  15. 15. Pytania?20.08.12 Dynamiczna analiza aplikacji PHP 15

×