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

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

Настройка кластера Kubernetes в Ubuntu Linux 24.04: три узла (один мастер с возможностью запуска пользовательских подов, PVC в каталоге на хосте, сеть на Calico)

В этой статье мы рассмотрим пошаговую настройку кластера Kubernetes на Ubuntu 24.04 с тремя узлами: один мастер (который также может запускать пользовательские поды) и два рабочих узла. Мы настроим PersistentVolume…

Инструкция по установке и настройке ProxySQL в Ubuntu 24.04

В рамках создания собственного кластера Kubernetes я поднаял кластер Mysql который работает в режиме Master-Slave и Slave-узлы соответственно работают в режиме read-only, а мастер в read-write. Соответственно мне нужен балансировщик…

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

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

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

Настройка кластера Kubernetes в Ubuntu Linux 24.04: три узла (один мастер с возможностью запуска пользовательских подов, PVC в каталоге на хосте, сеть на Calico)

Настройка кластера Kubernetes в Ubuntu Linux 24.04: три узла (один мастер с возможностью запуска пользовательских подов, PVC в каталоге на хосте, сеть на Calico)

Инструкция по установке и настройке ProxySQL в Ubuntu 24.04

Инструкция по установке и настройке ProxySQL в Ubuntu 24.04

Полное руководство по настройке UFW в Ubuntu: от основ до продвинутых правил

Полное руководство по настройке UFW в Ubuntu: от основ до продвинутых правил

Полное руководство по развертыванию GlusterFS в Ubuntu Linux: от подготовки до тестирования производительности

Полное руководство по развертыванию GlusterFS в Ubuntu Linux: от подготовки до тестирования производительности

Подробная инструкция по настройке кластера из трёх серверов MySQL на Ubuntu 24.04

Подробная инструкция по настройке кластера из трёх серверов MySQL на Ubuntu 24.04

Полное руководство по настройке NFS-клиента в Ubuntu Linux: от установки до автоматического монтирования

Полное руководство по настройке NFS-клиента в Ubuntu Linux: от установки до автоматического монтирования