2.8.23. Профилирование PHP
Общая информация
Профилирование — сбор подробной информации о времени работы функций скрипта и потреблением оперативной памяти в процессе обработки запроса к сайту. С помощью этой информации разработчик сайта может выявлять наиболее медленные участки кода, чтобы в дальнейшем их оптимизировать и сократить время работы скриптов.
Что может показать профилирование:
- Какие функции и сколько раз выполнялись в процессе работы скрипта.
- Сколько времени выполнялась каждая функция.
- Какой объём оперативной памяти использовался функцией и пиковые значения потребления.
Порядок действий
Профилировщик
Важные моменты:
- Профилировщик можно включать для сайтов с версиями PHP 7.0-8.5.
- На время работы профилировщика автоматически отключается параметр open_basedir.
- Отчёты профилировщика хранятся в дисковом пространстве хостинг-аккаунта и занимают объём и иноды.
Работа с профилировщиком выполняется в разделе «Профилирование PHP».
Включение
Примечания:
- При включении в
php.iniподключается расширение и добавляется директива видаauto_prepend_file = "/home/{$login}/.system/profiler/profiler_{$host_id}.php"для запуска профилировщика. - Директива добавляется отдельно и не влияет на добавленные ранее
auto_prepend_file. - Включение происходит не мгновенно — есть небольшая задержка в несколько минут, необходимая для применения изменений в настройках PHP.
Выберите нужное время в блоке «Профилирование PHP» и нажмите «Включить профилировщик»:
Список IP
Добавьте в список IP, при запросах с которых будет запускаться профилировщик:
Отчёты
Примечания:
- Список отчётов выводится от новых к старым.
- Файлы отчётов хранятся в каталоге
.system/profilerв корневом каталоге хостинг-аккаунта. - Отчёты удаляются только вручную. Таким образом, они остаются доступными для анализа после отключения профилировщика.
Все результаты работы профилировщика выводятся в блоке «Отчёты профилировщика»:
В блоке выводится текущий объём, который занимают на диске существующие отчёты. Здесь же можно удалить все отчёты кнопкой «очистить».
Колонки списка:
- «Дата» — дата и время обработки запроса.
- «URL» — URL запроса.
- «CPU» — время работы процессора при обработке запроса.
- «Время выполнения» — время работы скрипта при обработке запроса.
- «Пиковое потребление памяти» — максимальное потребление памяти при обработке запроса.
Кнопка «Подробный отчёт» открывает подробную информацию о работе скрипта при обработке запроса:
В подробном отчёте:
- «Дата и время запуска скрипта».
- «IP» — IP, с которого был запрос.
- «Точный URL» — URL, к которому был запрос.
- «Количество вызовов функций» — количество функций, выполненных скриптом при обработке запроса.
- «Распределение функций по времени выполнения» — график с долями времени выполнения разных функций по отношению к общему затраченному времени.
Колонки общего списка вызванных функций:
- «Функция» — название функции.
- «Количество вызовов» — сколько раз выполнялась функция.
- «Показатели с учётом дочерних функций»:
- «Время выполнения» — сколько времени заняло выполнение функции.
- «CPU» — сколько времени процессор был занят выполнением функции.
- «Потребление памяти» — сколько памяти было использовано в процессе выполнения функции.
- «Пиковое потребление памяти» — пиковое значение использования памяти при выполнении функции.
- «Показатели без учёта дочерних функций» — аналогично показателям выше, только без учёта дочерних функций.
Нажатие на название функции открывает подробный отчёт по этой функции:
Колонки отчёта по функции:
- «Функция» — название функции.
- «Количество вызовов» — сколько раз выполнялась функция.
- «Время выполнения, мкс» — сколько времени заняло выполнение функции.
- «CPU, мкс» — сколько времени процессор был занят выполнением функции.
- «Потребление памяти, байт» — сколько памяти было использовано в процессе выполнения функции.
- «Пиковое потребление памяти, байт» — пиковое значение использования памяти при выполнении функции.
Функции в списке делятся на три группы:
- «Текущая функция» — функция, информация о которой открыта в данный момент.
- «Родительские функции» — функции, из которых вызывалась текущая функция.
- «Дочерние функции» — функции, которые вызывались из текущей функции.
Нажимая на названия родительских/дочерних функций, можно перемещаться по иерархии всех вызванных функций и смотреть информацию по каждой из них.
Отключение
Нажмите «Отключить профилировщик» в блоке «Профилирование PHP» или дождитесь времени автоматического отключения:
Комментарии