Встречайте Sail Performance Profiler
Если вы испытываете проблемы с производительностью вашего сайта WordPress, профилировщик производительности Sail поможет вам определить узкое место.
Профилирование WordPress с Sail CLI
Профилировщик — это набор специальных программных инструментов и модулей, которые могут измерять время выполнения, использование памяти и другие метрики вашего кода. Эти метрики помогут вам определить, где приложение работает слишком медленно или потребляет слишком много памяти.
Sail поставляется с легким иерархическим профилировщиком на основе xhprof. Он может быть запущен по требованию для генерации данных профиля. Затем по данным профиля можно перемещаться с помощью встроенного интерактивного браузера профилей Sail.
Метрики:
Count
представляет собой общее количество вызовов определенной функцииiWT
инклюзивное время стены функции, т.е. общее время, затраченное на выполнение кода в самой функции, а также любого кода во всех дочерних функциях.eWT
эксклюзивное время стены, то есть время, затраченное на выполнение кода непосредственно внутри функции, но не кода в ее дочерних функциях.iMem
это инклюзивное использование памяти, т.е. память, используемая функцией, а также всеми дочерними функциями вместе взятыми.eMem
это эксклюзивное использование памяти, то есть память, используемая функцией, но не ее дочерними элементами.
При попытке решить проблемы медлительности, наша общая рекомендация — посмотреть на инклюзивное время стены (iWT), затем начать углубляться в каждую дочернюю функцию, на которую приходится значительная часть этого времени, углубляясь по мере необходимости.
Если вы имеете дело с большим использованием памяти, вы можете использовать аналогичную технику, только сортировать по включительному использованию памяти (iMem).
Справочник по командам профилирования
Вот полный список команд, связанных с профилированием:
sail profile run
— запустить профилировщик на URL, загрузить и открыть результатыsail profile open
— открыть браузер профиля с указанным файлом JSONsail profile curl
— обертка для команды curl дополнительная информацияsail profile download
— загрузить JSON профиля с производственного сервераsail profile key
— показать секретный ключ профилирования
Несколько ярлыков для удобства:
sail profile https://example.org
вызоветrun
sail profile path/to/profile.json
вызоветopen
Создайте свой первый профиль с помощью Sail
Самый простой способ генерировать данные профилирования в проекте Sail — это просто запустить программу:
sail profile https://example.org
Это выполнит HTTP-запрос к вашему сайту, сгенерирует данные профилирования по пути, затем загрузит данные в вашу локальную рабочую копию и запустит браузер профилей.
JSON-файл профиля будет сохранен в вашем каталоге .profiles
, и его можно будет просмотреть в любое время, используя следующую команду:
sail profile .profiles/filename.json
Обратите внимание, что профили, в зависимости от их сложности, могут занимать значительное количество дискового пространства, поэтому время от времени очищайте каталог .profiles
.
Примечание: Если вы хотите запустить профилировщик на более сложных запросах, с пользовательскими заголовками, POST данными и т.д., прочитайте наш раздел о профилировании с помощью cURL.
Работа с браузером профилей
Браузер профилей Sail CLI позволяет просматривать краткое описание профиля, всю иерархию вызовов функций, а также перемещаться внутри этих функций для проверки их дочерних и родительских функций.
В верхней части браузера профиля появится сводка:
- Run: метка времени, когда были сгенерированы данные профилирования
- Wall Time: общее время стены в микросекундах (1,000,000 мкс = 1 секунда)
- Peak Memory: пиковое использование памяти во время запроса в мегабайтах (1 МБ = 1024*1024 байт). Обратите внимание, что столбцы iMem и eMem показаны в байтах.
- URL: URL, который был запрошен во время работы профилировщика
- Method: Метод HTTP, используемый для запроса
- Function Calls: Общее количество вызовов функций
- Queries: Общее количество вызовов
mysqli_query()
и эквивалентов - HTTP Reqs: Общее количество вызовов
curl_exec()
и эквивалентов
Навигация
Используйте клавиши со стрелками up
и down
для перемещения по списку функций. Для прокрутки страниц используйте клавиши page up
и page down
. Используйте кнопки home
и end
для быстрого перехода к первой и последней функции в списке.
Используйте клавиши left
и right
для изменения столбца сортировки. Клавиши <
и >
также работают.
Нажмите enter
, чтобы перейти внутрь выбранной функции и просмотреть ее родительские и дочерние функции. Нажмите backspace
, чтобы вернуться на шаг назад. Нажмите клавишу esc
, чтобы вернуться к основному списку функций.
Нажмите клавишу q
, чтобы выйти из браузера профилей.
Профилирование событий и фильтров WordPress
Обратите внимание, что вызовы функций ядра WordPress do_action
и apply_filters
не будут сгруппированы. Вместо этого они будут разделены по имени действия и фильтра соответственно, например, do_action => init
для действия init
в WordPress.
Это помогает быстро определить узкие места в системе событий WordPress и эффективно ориентироваться в иерархии действий и фильтров.
Если вы ищете общее количество выполненных действий и/или фильтров, вам следует обратить внимание на символы WP_Hook::do_action
и WP_Hook::apply_filters
.