2.8.23. Профілювання PHP

Профілювання — збір детальної інформації про час роботи функцій скрипта і споживання оперативної пам'яті в процесі обробки запиту до сайту. За допомогою цієї інформації розробник сайту може виявляти найбільш повільні ділянки коду, щоб в подальшому їх оптимізувати і скоротити час роботи скриптів.

Що може показати профілювання:

  • Які функції і скільки разів виконувалися в процесі роботи скрипта.
  • Скільки часу виконувалася кожна функція.
  • Який обсяг оперативної пам'яті використовувався функцією і пікові значення споживання.
  1. Увімкніть профілювальник.
  2. Додайте до списку свою IP-адресу або адресу розробника.
  3. Виконайте дії на сайті, для яких потрібно зібрати інформацію.
  4. Вивчіть звіти або надайте їх розробнику сайту для пошуку способів оптимізації.
Для профілювання використовується розширення XHProf.

Важливі моменти:

  • Профілювальник можна вмикати для сайтів з версіями 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, при запитах з яких буде запускатися профілювальник:

Примітки:

  • Список звітів відображається від нових до старих.
  • Файли звітів зберігаються в каталозі .system/profiler в кореневому каталозі хостинг-акаунта.
  • Звіти видаляються тільки вручну. Таким чином, вони залишаються доступними для аналізу після вимкнення профілювальника.

Всі результати роботи профілювальника виводяться в блоці «Звіти профілювальника»:

У блоці відображається поточний обсяг, який займають на диску існуючі звіти. Тут же можна видалити всі звіти кнопкою «очистити».

Колонки списку:

  • «Дата» — дата та час обробки запиту.
  • «URL» — URL запиту.
  • «CPU» — час роботи процесора при обробці запиту.
  • «Час виконання» — час роботи скрипта при обробці запиту.
  • «Пікове споживання пам'яті» — максимальне споживання пам'яті при обробці запиту.

Кнопка «Детальний звіт» відкриває детальну інформацію про роботу скрипта при обробці запиту:

У детальному звіті:

  • «Дата та час запуску скрипта».
  • «IP» — IP, з якого надійшов запит.
  • «Точний URL» — URL, до якого був зроблений запит.
  • «Кількість викликів функцій» — кількість функцій, виконаних скриптом при обробці запиту.
  • «Розподіл функцій за часом виконання» — графік із частками часу виконання різних функцій відносно загального витраченого часу.

Колонки загального списку викликаних функцій:

  • «Функція» — назва функції.
  • «Кількість викликів» — скільки разів виконувалася функція.
  • «Показники з урахуванням дочірніх функцій»:
    • «Час виконання» — скільки часу зайняло виконання функції.
    • «CPU» — скільки часу процесор був зайнятий виконанням функції.
    • «Споживання пам'яті» — скільки пам'яті було використано в процесі виконання функції.
    • «Пікове споживання пам'яті» — пікове значення використання пам'яті при виконанні функції.
  • «Показники без урахування дочірніх функцій» — аналогічно до показників вище, тільки без урахування дочірніх функцій.
Прочерк означає, що профілювальнику не вдалося достовірно порахувати значення показника.

Натискання на назву функції відкриває детальний звіт по цій функції:

Колонки звіту за функцією:

  • «Функція» — назва функції.
  • «Кількість викликів» — скільки разів виконувалася функція.
  • «Час виконання, мкс» — скільки часу зайняло виконання функції.
  • «CPU, мкс» — скільки часу процесор був зайнятий виконанням функції.
  • «Споживання пам'яті, байт» — скільки пам'яті було використано в процесі виконання функції.
  • «Пікове споживання пам'яті, байт» — пікове значення використання пам'яті при виконанні функції.

Функції в списку поділяються на три групи:

  • «Поточна функція» — функція, інформація про яку відкрита в даний момент.
  • «Батьківські функції» — функції, з яких викликалася поточна функція.
  • «Дочірні функції» — функції, які викликалися з поточної функції.

Натискаючи на назви батьківських/дочірніх функцій, можна переміщатися по ієрархії всіх викликаних функцій і переглядати інформацію по кожній з них.

Натисніть «Вимкнути профілювальник» у блоці «Профілювання PHP» або дочекайтеся часу автоматичного вимкнення:

Зміст

    (1)

    Коментарі

    novatorstroy
    Отличная сервисная функция, которая позволяет провести комплексный аудит вашего сайта. Запуск профилирования PHP позволяет разложить все функциональные запросы на основные требовательные критерии программной работы веб-служб и сервисов в CMS или CMF. Ждём расширения графически-визуального интерфейса для фрагментного представления эффективной работы веб-ресурса.