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

Как узнать потребление памяти WordPress?

Чтобы узнать, сколько же оперативной памяти потребляет движок со всеми плагинами нужно в файле footer.php, перед закрывающим тегом </body> вставить следующую строчку:

<?php
if (function_exists('memory_get_usage'))
echo round(memory_get_usage()/1024/1024, 2) . 'MB ';
?>

Если хотите узнать не текущее, а максимальное количество памяти, которое было использовано во время генерации страницы, можно использовать memory_get_peak_usage():

<?php
if (function_exists('memory_get_peak_usage'))
echo round(memory_get_peak_usage()/1024/1024, 2) . 'MB ';
?>

Так можно увидеть пиковое потребление памяти во время загрузки страницы.

Как узнать количество запросов к БД?

Делаем те же действия, открываем footer.php и перед </body> добавляем строку:

<?php echo get_num_queries(); ?>

На голом WordPress со стандартной темой и виджетами у меня создается 23 запроса к БД при открытии любой записи. Однако на премиум темах с большим количеством настроек, блоков, плагинов, эта цифра может доходить до 50-60 запросов.

При этом само количество запросов ещё не говорит о том, что сайт работает медленно. Важно также, сколько времени занимают эти запросы и какой плагин или тема их создаёт.

Как узнать время генерации страницы?

Опять аналогичным образом добавляем в footer.php строчку:

<?php timer_stop(1); ?>

Время генерации страницы в большей степени зависит от мощностей сервера. У меня на виртуальном хостинге страница чистого WP генерируется за 120мс.

При этом время генерации страницы не стоит путать со временем полной загрузки сайта у посетителя. После того как сервер сформировал HTML, браузеру ещё нужно загрузить изображения, CSS, JavaScript и другие ресурсы.

Выводим все показатели сразу

Теперь можно объединить все показатели и выводить их в фиксированном блоке наверху сайта. И показывать только администраторам.

<?php if ( current_user_can( 'manage_options' ) ) { ?>
    <div style="position:fixed;top:50px;left:5px;padding:5px;font-size:11px;color:#fff;background:#000;">
        <?php timer_stop(1); ?> /
        <?php echo get_num_queries(); ?> /
        <?php if (function_exists('memory_get_usage')) echo round(memory_get_usage()/1024/1024, 2) . 'MB'; ?>
    </div>
<?php } ?>

В результате в блоке будут отображаться три значения:

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

Вот так это выглядит на сайте:

данные о нагрузке на WP

Такой способ удобен, если нужно быстро сравнить разные страницы или посмотреть, как меняется нагрузка после установки нового плагина или темы.

Как посмотреть нагрузку без изменения файлов

Если не хочется добавлять код в footer.php, можно воспользоваться плагином Query Monitor.

Он позволяет посмотреть основные показатели прямо в панели администратора WordPress: время генерации страницы, потребление памяти и количество SQL-запросов. Кроме этого, можно посмотреть сами запросы, время их выполнения и определить, какой плагин или тема их создаёт.

Это особенно полезно, когда показатели неожиданно выросли и нужно найти причину.

На что обращать внимание

Не стоит оценивать нагрузку на WordPress только по одному показателю.

Память показывает, сколько ресурсов PHP потребовалось для обработки страницы.

Запросы к БД показывают, сколько обращений WordPress сделал к базе данных. Большое количество запросов само по себе не означает, что сайт работает медленно — гораздо важнее их продолжительность и содержание.

Время генерации показывает, сколько времени потребовалось серверу для формирования страницы.

Если после установки новой темы или плагина один из показателей заметно вырос, стоит проверить, что именно добавило нагрузку.

Для более подробного анализа можно использовать Query Monitor или другие инструменты профилирования WordPress.