Трассировка WordPress для определения узких мест

Оцените статью

Я обратил внимание, что у меня в блоге стала ужасно долго открываться админка и значит пришло время разобраться как эти ваши PHP вообще трассировать и нормально отлаживать.

Чтобы провести трассировку WordPress и выявить причины задержек, используйте комбинацию инструментов и методов. Разберём пошагово.

Включение отладки

Активируйте режим отладки WordPress, чтобы видеть ошибки и предупреждения.

  1. Откройте файл wp-config.php в корне сайта.
  2. Добавьте или измените следующие строки:
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true); // Логи ошибок будут сохраняться в wp-content/debug.log
define('WP_DEBUG_DISPLAY', false); // Не показывать ошибки на экране (важно для продакшена)

Анализ времени загрузки и запросов к БД

Включите логирование времени выполнения и запросов к базе данных.

  1. В том же файле wp-config.php добавьте:
define('SAVEQUERIES', true); // Сохраняет все SQL‑запросы
  1. Создайте файл footer.php в папке вашей темы (или отредактируйте существующий) и добавьте перед </body> следующий код:
<?php
if (current_user_can('administrator')) { // Показываем только админам
    global $wpdb;
    echo "<pre>Всего запросов: " . $wpdb->num_queries . "</pre>";
    echo "<pre>Время генерации страницы: " . timer_stop(0) . " сек.</pre>";

    // Вывод всех запросов (может быть очень много)
    if (defined('SAVEQUERIES') && SAVEQUERIES) {
        foreach ($wpdb->queries as $query) {
            echo "<pre>" . esc_html($query[0]) . " - " . $query[1] . " сек.</pre>";
        }
    }
}
?>

Использование плагинов для профилирования

Установите специализированные плагины — они упрощают анализ.

Популярные варианты:

  • Query Monitor — самый популярный инструмент. Показывает:
    • все SQL‑запросы и их время выполнения;
    • хуки и действия;
    • PHP‑ошибки;
    • использование памяти;
    • HTTP‑запросы.
  • Debug Bar — добавляет панель отладки в админ‑бар. Показывает базовую информацию о запросах, хуках, кэше.
  • P3 (Plugin Performance Profiler) — помогает определить, какие плагины замедляют сайт.

Анализ производительности на уровне сервера

Используйте инструменты для анализа производительности PHP и сервера.

  • Xdebug — мощный профайлер PHP. Генерирует файлы трассировки, которые можно открыть в инструментах типа KCacheGrind или Webgrind.
    • Установите Xdebug на сервере.
    • Настройте его в php.ini для генерации профайлинговых файлов.
    • Откройте сгенерированный файл в Webgrind — увидите, какие функции PHP выполняются дольше всего.
  • Blackfire.io — коммерческий, но очень мощный инструмент для профилирования PHP‑приложений. Даёт наглядные графики и детализацию.

Инструменты браузера

Используйте встроенные инструменты разработчика в браузере (F12):

  • Вкладка Network — показывает время загрузки каждого ресурса (HTML, CSS, JS, изображения). Ищите файлы, которые загружаются очень долго.
  • Вкладка Performance — позволяет записать сеанс загрузки страницы и увидеть, какие функции JavaScript и процессы рендеринга занимают больше всего времени.

Внешние сервисы мониторинга

Воспользуйтесь онлайн‑сервисами для комплексного анализа:

  • GTmetrix — даёт подробный отчёт о времени загрузки, количестве запросов, размере страницы и рекомендации по оптимизации.
  • Google PageSpeed Insights — оценивает производительность на мобильных и десктопных устройствах, даёт рекомендации.
  • Pingdom Tools — показывает waterfall‑диаграмму загрузки страницы.

Проверка хостинга и базы данных

  • Мониторинг ресурсов сервера (CPU, RAM, I/O) — убедитесь, что хостинг не перегружен.
  • Оптимизация базы данных — используйте плагин WP Sweep или phpMyAdmin для оптимизации таблиц.
  • Проверка медленных запросов MySQL — включите slow query log в настройках MySQL и проанализируйте логи.

Краткий план действий

  1. Включите WP_DEBUG и SAVEQUERIES для базового лога.
  2. Установите Query Monitor — это даст быстрый старт в анализе запросов к БД и времени их выполнения.
  3. Проверьте сайт в GTmetrix или PageSpeed Insights для получения общих рекомендаций.
  4. Используйте вкладки Network и Performance в инструментах разработчика браузера.
  5. Если проблема не ясна, используйте Xdebug или Blackfire для глубокого профилирования PHP‑кода.
  6. Проверьте ресурсы сервера и оптимизируйте базу данных.

Такой комплексный подход позволит точно определить «узкое место» — будь то тяжёлый плагин, неоптимальный SQL‑запрос, медленный HTTP‑запрос к внешнему API или проблема на стороне хостинга.

Похожие записи

Как увеличить лимит на размер загружаемого файла для Ingress контроллера

После переноса Next Cloud в Kubernetes оказалось, что типовой настройки мне не хватило и файлы не пролезают через Ingress контроллер и чтобы увеличить лимит на размер загружаемого файла для Ingress‑контроллера,…

Менеджер баз данных Postgresql упакованных в Docker (Postgresql Docker Manager)

Доделал интересную приложуху для управления базами данных Postgresql упакованными в Docker. Возникла необходимость управления большим количеством баз данных и самые прожорливые отсадить в отдельные контейнеры урезав им аппетит по ресурсам.…

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Читать еще статьи

Трассировка WordPress для определения узких мест

Трассировка WordPress для определения узких мест

Как увеличить лимит на размер загружаемого файла для Ingress контроллера

Как увеличить лимит на размер загружаемого файла для Ingress контроллера

Менеджер баз данных Postgresql упакованных в Docker (Postgresql Docker Manager)

Менеджер баз данных Postgresql упакованных в Docker (Postgresql Docker Manager)

Автоматизированное получение Let’s encrypt сертификатов для Ingress Nginx при помощи cert‑manager

Автоматизированное получение Let’s encrypt сертификатов для Ingress Nginx при помощи cert‑manager

Тестовый кластер Kubernetes в Docker Desktop

Тестовый кластер Kubernetes в Docker Desktop

Хранилище артефактов (Docker) Cloud.ru

Хранилище артефактов (Docker) Cloud.ru