Трассировка 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 или проблема на стороне хостинга.

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

Резервное копирование баз данных MySQL в Linux: краткое руководство с примерами

Резервное копирование — ключевой элемент стратегии обеспечения безопасности и надёжности данных. Для баз данных MySQL, которые широко используются в веб-разработке и других областях, регулярное создание резервных копий особенно важно. В…

Клонирование работающего Linux-сервера с помощью rsync (немного из практики).

Клонирование живого (работающего) Linux-сервера — задача, которая часто возникает при создании резервной копии, переносе системы на новое оборудование или подготовке «горячего» запасного сервера (дурка еще та и именно для подготовки…

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

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

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

Резервное копирование баз данных MySQL в Linux: краткое руководство с примерами

Резервное копирование баз данных MySQL в Linux: краткое руководство с примерами

Клонирование работающего Linux-сервера с помощью rsync (немного из практики).

Клонирование работающего Linux-сервера с помощью rsync (немного из практики).

Установка Keycloak в Ubuntu 24.04: от тестового запуска до production-конфигурации

Установка Keycloak в Ubuntu 24.04: от тестового запуска до production-конфигурации

Оптимизация хранения медиафайлов WordPress: перенос в облачное S3-хранилище Cloud.ru

Оптимизация хранения медиафайлов WordPress: перенос в облачное S3-хранилище Cloud.ru

Настройка ProxySQL для распределения запросов в кластере MySQL

Настройка ProxySQL для распределения запросов в кластере MySQL

Конфигурация MySQL для микро-vps (минимизация потребления памяти)

Конфигурация MySQL для микро-vps (минимизация потребления памяти)