Встречайте 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вызоветrunsail 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.
