Upgrade to Pro — share decks privately, control downloads, hide ads and more …

XHProf

Avatar for Evgeny E. Neverov Evgeny E. Neverov
December 20, 2017
160

 XHProf

19 декабря 2017 года

Avatar for Evgeny E. Neverov

Evgeny E. Neverov

December 20, 2017
Tweet

Transcript

  1. • Нативный модуль для PHP • Жрёт мало памяти •

    Не тормозит работу скриптов • Можно использовать на бою
  2. # yum install gcc php-devel phpize -y # git clone

    https:"//github.com/RustJason/xhprof # cd xhprof/extension # phpize # ./configure —with-php-config=/usr/bin/php-config # make "&& make install # echo "extension=xhprof.so" > /etc/php.d/60-xhprof.ini # service httpd restart
  3. techdir.stuff/xhprof • Репозиторий:
 https://bitbucket.org/techdirector/techdir.stuff/ • xhprof.php — положить в local/php_interface

    и подключить в init.php • В init.php дополнительно вписываем вызов:
 TDXHProf"::init(); • Папку xhprof/ — в корень сайта • Давайте посмотрим на код xhprof.php
  4. Пример наследования include_once "__DIR"__ . '/xhprof.php'; class UnizooXHProf extends TDXHProf

    { protected static function test() { if (CSite"::InDir('/bitrix/')) { return false; } return parent"::test(); } } UnizooXHProf"::init();
  5. Overall Summary • Total Incl. Wall Time — общее время

    работы скрипта • Total Incl. CPU — время вычислений на процессоре • [Wall Time] - [CPU] — время ожидания внешних ресурсов • Total Incl. MemUse — всего сожрало памяти • Total Incl. PeakMemUse — пиковое сжирание памяти
  6. Колонки в таблице Incl. — функция и все дочерние функции,


    Excl. — только код самой функции, без дочерних • Calls — число вызовов функции • Wall Time — время выполнения • CPU — процессорное время • MemUse — использование памяти • PeakMemUse — пиковое использование памяти
  7. • В отчёте можно «ходить» по функциям, смотреть время выполнения

    каждой функции и вызываемых из неё функций • Таким образом можно найти функции, которые отняли максимум времени — такие функции нужно оптимизировать
  8. Callgraph • Визуализация прохождения самого медленного пути выполнения скрипта •

    Жёлтые блоки — медленно • Красные блоки — пиздец и ад • Если низ не дорисован — это проблема из-за mbstring.func_overload = 2, который требуется Битриксу