Встречайте Sail Performance Profiler

Рейтинг: 4.9 из 67 оценок

Если вы испытываете проблемы с производительностью вашего сайта WordPress, профилировщик производительности Sail поможет вам определить узкое место.

Профилирование WordPress с Sail CLI

Профилировщик — это набор специальных программных инструментов и модулей, которые могут измерять время выполнения, использование памяти и другие метрики вашего кода. Эти метрики помогут вам определить, где приложение работает слишком медленно или потребляет слишком много памяти.

Sail поставляется с легким иерархическим профилировщиком на основе xhprof. Он может быть запущен по требованию для генерации данных профиля. Затем по данным профиля можно перемещаться с помощью встроенного интерактивного браузера профилей Sail.

Метрики:

  • Count представляет собой общее количество вызовов определенной функции
  • iWT инклюзивное время стены функции, т.е. общее время, затраченное на выполнение кода в самой функции, а также любого кода во всех дочерних функциях.
  • eWT эксклюзивное время стены, то есть время, затраченное на выполнение кода непосредственно внутри функции, но не кода в ее дочерних функциях.
  • iMem это инклюзивное использование памяти, т.е. память, используемая функцией, а также всеми дочерними функциями вместе взятыми.
  • eMem это эксклюзивное использование памяти, то есть память, используемая функцией, но не ее дочерними элементами.

При попытке решить проблемы медлительности, наша общая рекомендация — посмотреть на инклюзивное время стены (iWT), затем начать углубляться в каждую дочернюю функцию, на которую приходится значительная часть этого времени, углубляясь по мере необходимости.

Если вы имеете дело с большим использованием памяти, вы можете использовать аналогичную технику, только сортировать по включительному использованию памяти (iMem).

Справочник по командам профилирования

Вот полный список команд, связанных с профилированием:

  • sail profile run — запустить профилировщик на URL, загрузить и открыть результаты
  • sail profile open — открыть браузер профиля с указанным файлом JSON
  • sail 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.

Читайте далее

Добавить комментарий