Как исправить высокую загрузку ЦП в WordPress до того, как она достигнет 100%

Каждый раз, когда я обновлял свой план хостинга с высокой загрузкой ЦП, они использовали серверы Apache.

SiteGround, GoDaddy, Bluehost и Cloudways используют Apache, который менее эффективен, чем LiteSpeed. Плюс в их планы не входит большое количество процессорных ядер. Лично мне пришлось перейти с плана SiteGround GrowBig на их облачный хостинг за 120 долларов в месяц, чтобы устранить проблемы с процессором. Вместо того, чтобы тратить деньги (и часы на оптимизацию моего сайта WordPress, когда он был моим хостом), все, что мне нужно было сделать, это переключиться на (более быстрый) хост, который использует серверы LiteSpeed ​​с большим количеством ядер ЦП.

Иногда высокая загрузка ЦП вызвана факторами, не связанными с хостингом, такими как плагины, боты, фоновые задачи и дополнительный трафик. Прежде чем обвинять свой хост, убедитесь, что он не является узким местом, и потратьте некоторое время на настройку плагинов, CDN и хостинга. Но если ничего не работает, не дайте хозяину себя обмануть. Если вы (или они) можете это исправить, отлично! Но если они посоветуют вам обновиться, рассмотрите возможность перехода на LiteSpeed, прежде чем нажимать на курок плана хостинга, который все еще использует Apache.

1. Используйте хост LiteSpeed ​​с большим количеством ядер ЦП.

Просто перейдя на LiteSpeed, люди увидели снижение загрузки ЦП на 75%+. LiteSpeed ​​использует процессор/память более эффективно, работает быстрее и может обрабатывать больший трафик по сравнению с Apache.

Использование процессора LiteSpeed ​​Apache

LiteSpeed ​​против использования процессора Apache

При выборе любого хостера я предпочитаю смотреть на:

  • Используют ли они LiteSpeed ​​или Apache?
  • Используют ли они хранилище NVMe, которое быстрее, чем SATA?
  • Используют ли они MariaDB, которая имеет преимущества перед MySQL?
  • Есть ли у них отчеты о мошенничестве, такие как Hostinger и GreenGeeks?
  • Если вы также используете их для хостинга электронной почты, вам понадобится больше инодов.
  • Жалобы на TrustPilot по поводу конкретных проблем, таких как высокая загрузка ЦП.

LiteSpeed ​​против Nginx против Apache

Какой веб-сервер вы используете, порекомендуйтеКэш LiteSpeed ​​Сервер LiteSpeedLiteSpeed ​​LiteSpeed ​​Кэш QUIC.cloudРезультаты LiteSpeed ​​PageSpeedОтчет ChemiCloud GTmetrix

Какой веб-сервер вы используетеLiteSpeed ​​на сервере LiteSpeedLiteSpeed ​​Cache против WP RocketДиви ЛайтСпид

2. Удалите плагины, требующие ресурсов

Некоторые плагины запускают фоновые задачи, которые увеличивают загрузку процессора.

Любой плагин (или его настройка), который должен собирать данные, вероятно, будет вашим худшим виновником. Это может быть отчет о реальном трафике Wordfence, журналы 404 Rank Math и интеграция с Google Analytics или даже такие плагины, как Broken Link Checker и Query Monitor, которые постоянно сканируют ваш веб-сайт.

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

Инструменты, которые вам понадобятся:

  • Query Monitor – найдите самые медленные плагины. После установки просмотрите страницу своего сайта, найдите меню «Монитор запросов» в панели администратора и перейдите в «Запросы» → «Запросы по компонентам».

Монитор запросов медленных плагинов WordPress

  • WP Hive — бесплатное расширение Chrome, которое позволяет просматривать репозиторий плагинов WordPress и проверять, влияет ли плагин на использование памяти (а также на оценки PageSpeed ​​Insights).

Плагины WP Hive с высоким потреблением памяти

  • WP-Optimize – показывает, какие плагины (или модули плагинов) увеличивают нагрузку на базу данных. Вы также можете удалить таблицы, оставленные старыми плагинами, а также другой мусор из базы данных. На изображении ниже показано, как использование множества модулей Rank Math может привести к большим накладным расходам.
ПлагинКатегорияВлияние на памятьВлияние скорости страницы
AnalytifyАналитикаX
Backup BuddyБэкапыX
iThemes SecurityБезопасностьX
Broken Link CheckerSEOX
JetpackБезопасностьXX
Query MonitorАналитикаX
NextGEN GalleryГалереляXX
Site Kit by GoogleАналитикаX
WordfenceБезопасностьX
wpDiscuzКомментарииXX
WPMLПереводXX
Yoast SEOSEOX

3. Ограничение Heartbeat, автосохранение, публикации редакций, XML-RPC

Это дополнительные фоновые задачи, которые вы можете ограничить. WordPress Heartbeat запускается каждые 15–60 секунд, автосохранение запускается каждые 60 секунд во время редактирования, а версия сохраняется каждый раз, когда вы обновляете публикацию.

Для этого я рекомендую настройки раздувания FlyingPress, которые также являются плагином кеширования, который я рекомендую. Недавно они выпустили эти настройки для ограничения Heartbeat, публикации изменений, отключения XML-RPC и отключения wp-cron (все это снижает загрузку ЦП). Если вы не используете FlyingPress, вы также можете использовать общие настройки Perfmatters или Unbloater для большинства из них, но попробуйте использовать FlyingPress.

Настройки раздувания FlyingPress 2

Ограничить пульс — если у вас есть возможность отключить его в определенных областях, я бы отключил его в интерфейсе/панели управления, а затем ограничил бы редактор сообщений до 120 секунд, поскольку вы, вероятно, захотите, чтобы он был там при использовании конструкторов страниц, для автосохранения и т. д. Или вставьте код в файле function.php после тега <?php.

add_action('init', 'stop_heartbeat', 1);
function stop_heartbeat() {
    wp_deregister_script('heartbeat');
}

Увеличьте интервал автосохранения — я увеличил его до 120 с (можно даже до 300 с). Если вы не используете плагин, позволяющий это сделать, вы можете добавить следующий код в файл wp-config.php.

define('AUTOSAVE_INTERVAL', 300); // seconds

Ограничьте количество редакций публикаций. Поскольку вам нужно несколько резервных копий, ограничьте количество редакций публикаций примерно до 5–10.

define('WP_POST_REVISIONS', 10);

Отключить XML-RPC. Если вы не используете мобильные устройства для публикации контента (или не используете плагины, такие как JetPack), отключите XML-RPC. Помимо снижения использования процессора, он также предотвращает атаки грубой силы+DDoS. Если вы не используете плагин, который делает это, используйте плагин Perfmatters, Disable XML-RPC или вставьте код в.htaccess и замените xxx.xxx.xxx.xxx своим IP-адресом, если он вам понадобится.

# Block WordPress xmlrpc.php requests
<Files xmlrpc.php>
    order deny,allow
    deny from all
    allow from xxx.xxx.xxx.xxx
</Files>

4. Замените WP-Cron настоящим заданием Cron

wp -cron загружается при каждом просмотре страницы и планирует автоматические задачи, такие как публикация запланированных сообщений, проверка обновлений тем и плагинов, отправка уведомлений по электронной почте и т. д. Замена этого реальным заданием cron дает вам лучший контроль и может помочь снизить загрузку процессора.

Первый шаг — отключить встроенный wp-cron в FlyingPress (см. предыдущий раздел) или добавить код в файл wp-config.php до того места, где написано «Вот и все, поэтапное редактирование! Приятного ведения блога».

define('DISABLE_WP_CRON', true);

Теперь мы настроим внешнее задание cron. Это может отличаться в зависимости от вашего хоста (cpanel, VPS и т. д.). Я предлагаю им инструкции по поиску в Google, поскольку у SiteGround, Bluehost, Cloudways и Hostinger есть свои собственные руководства. В cPanel вы должны открыть вкладку «Задания cron» и использовать следующую строку, чтобы установить задание cron каждые 10 минут. Вы можете подумать, что более высокий интервал будет лучше для ЦП, но это может привести к скачкам ЦП, поскольку одновременно выполняется слишком много заданий.

wget -q -O - https://yourwebsite.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1

Задание Cron 10 минут

Внешнее задание cron

Скачки процессора при внешнем задании cron

WP Crontrol удобен для изменения расписания определенных заданий cron и удаления заданий без каких-либо действий. Вы также можете выгрузить задания cron со своего сервера с помощью JavaScript-работника Cloudflare.

5. Используйте CDN с полностраничным кэшированием

CDN снижают нагрузку на ваш сервер, передавая пропускную способность центрам обработки данных.

Пропускная способность Cloudflare

При полном кэшировании страниц вы кэшируете HTML, что улучшает TTFB в нескольких глобальных местоположениях (что вы можете протестировать в KeyCDN), а также снижаете загрузку ЦП. Если вы используете LiteSpeed, вам следует использовать QUIC.cloud (в идеале их платный/стандартный план, который использует все 83+ PoP и включает защиту от DDoS). Если вы не используете LiteSpeed, используйте Cloudflare APO. Я не рекомендую использовать CDN SiteGround или RocketCDN WP Rocket, поскольку они либо не поддерживают полное кэширование страниц, либо имеют историю проблем с DNS, из-за которых Google уже заблокировал 2 миллиона сайтов.

Конечно, лучший CDN на данный момент — это Cloudflare Enterprise от Rocket.net, который бесплатен, настраивается автоматически и включает в себя больше корпоративных функций, чем Cloudways/Kinsta, таких как APO, Argo Smart Routing, WAF и оптимизация изображений. Кроме того, их хостинг быстрее, чем оба.

6. Используйте свой CDN для брандмауэра и оптимизации изображения.

Использование CDN для обеспечения безопасности и оптимизации изображения также снижает нагрузку на ваш сервер. В то время как плагины безопасности и оптимизации изображения используют ресурсы и увеличивают загрузку процессора.

Брандмауэр блокирует нежелательные запросы. Cloudflare (WAF), QUIC.cloud и BunnyCDN имеют брандмауэры. Cloudflare позволяет добавлять правила брандмауэра для блокировки плохих ботов, самых хакерских стран и т. д. У них также есть ограничение скорости (платная услуга) для выявления и уменьшения чрезмерных запросов к определенным URL-адресам.

События брандмауэра защиты горячих ссылок Cloudflare

Посмотрите, что блокируется в событиях брандмауэра Cloudflare (большая часть моих событий связана с горячими ссылками на изображения)
Для оптимизации изображений я рекомендую QUIC.cloud, Cloudflare Mirage/Polish (входит в состав Cloudflare Enterprise от Rocket.net и Cloudways или в Cloudflare Pro) или Bunny Optimizer от BunnyCDN. Они также обычно оптимизируют ваши изображения лучше, чем плагины (например, Imagify).

Оптимизатор кроликов

7. Блокируйте плохих ботов

Хостинговые компании любят винить в высокой загрузке ЦП плохих ботов.

Вы можете использовать отчет о трафике Wordfence, чтобы видеть всех ботов, посещающих ваш сайт, в режиме реального времени. Но я рекомендую удалить Wordfence, когда вы закончите, поскольку плагин может увеличить загрузку процессора.

Отчет о трафике Wordfence в реальном времени

Вместо этого включите режим борьбы с ботами Cloudflare.

Режим боя ботов Cloudflare

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

Советы по использованию сканера Cloudflare

8. Увеличьте срок действия кэша

Некоторые плагины кэша, панели управления хостингом и CDN имеют настройку срока действия кэша.

Более длительный срок действия кэша имеет несколько преимуществ, одним из которых является меньшая загрузка ЦП, поскольку кэш не нужно перестраивать так часто. Google рекомендует устанавливать этот срок на 365 дней для статических файлов, но для динамических веб-сайтов, таких как WooCommerce, обычно следует устанавливать срок около 1 месяца.

Срок действия статического кэша Cloudways истекает

9. Защитите страницу входа в WP

Ваша страница входа в систему wp является частой целью ботов/злоумышленников. Даже простая попытка входа в систему генерирует дополнительные запросы к вашему серверу, поэтому лучше попытаться полностью заблокировать их.

Не перемещайте страницу входа wp при использовании CDN QUIC.cloud (для LiteSpeed), поскольку он уже защищает страницу входа wp. Однако в большинстве других случаев вам захочется переместить его.

  • Ограничьте попытки входа в систему: контролируйте количество попыток пользователей войти в систему, период блокировки, защиту шлюза XML-RPC и другие функции с помощью подключаемого модуля «Ограничить попытки входа в систему».
  • Переместите страницу wp-login: боты обычно недостаточно умны, чтобы найти пользовательскую страницу входа, которую вы можете изменить с помощью Perfmatters (если вы ее уже используете) или WPS Hide Login.
  • Плагин SiteGround Security: хотя я не фанат SiteGround, их плагин безопасности может переместить вашу страницу входа в систему, ограничить попытки входа в систему, отключить XML-RPC и помочь защитить ваш сайт.

Perfmatters Move WordPress вход в систему

10. Попробуйте переключить плагины кэша

FlyingPress+LiteSpeed ​​Cache лучше справляется с жизненно важными функциями сети, чем WP Rocket+SG Optimizer. Если вы используете сервер LiteSpeed, используйте LiteSpeed ​​Cache. Если нет, используйте FlyingPress во всех остальных случаях.

SG OptimizerWP RocketFlyPressLiteSpeed-кэш
Кэширование на стороне сервераXX
Интеграция кэша объектовXX
Задержка JavaScriptX
Удалить неиспользуемый CSSXВ соответствииОтдельный файлОтдельный файл
Критический CSSX
Предварительная загрузка критических изображенийXXX
Исключить изображения выше сгибаПо классу/типуПо URL/классуАвтоматическийАвтоматический
Ленивая загрузка фоновых изображенийXВстроенный HTMLкласс ленивого BGX
Добавить недостающие размеры изображенияX
Ленивая загрузка iframeX
Изображение для предварительного просмотра iframe на YouTubeX
Заполнитель YouTube для самостоятельного размещенияXXX
Размещайте шрифты локальноXИкс
Отображение шрифта: поменять местамиX
Предварительная загрузка ссылокX
Удаление вздутия живота (кроме Heartbeat)XX (подробнее)X
Ленивый рендеринг HTML-элементовXX
Гостевой режимXXX
Расширенный контроль кэшаXXX
Кэш ГраватараXXX
Ограничить количество редакций постовУдалить всеУдалить всеДержи немногоДержи немного
CDNGoogle ОблакоСтекПатБанниCDNQUIC.облако
Точки доступа CDN1767311481
Полное кэширование страницXX
Георепликация CDNXXX
Оптимизация изображений CDNXX
Изменение размера изображения CDN для мобильных устройствXXX
CDN-защита от DDoS-атакXX
Пропускная способность CDNБезлимитныйОчень ограниченНа основе использованияНа основе использования
Документированная совместимость с APO.XXX
ДокументацияНе подробноХорошийНе подробноХороший
Новые возможностиНечастоНечастоЧастыйЧастый
группа в ФейсбукеПрисоединитьсяПрисоединитьсяПрисоединитьсяПрисоединиться
цена CDN14,99 долл. США в месяц8,99 долл. США в месяц0,03 долл. США/ГБ$0,02-0,08/ГБ
Цена плагинаБесплатно59 долларов США в год$60/годБесплатно
Цена продленияБесплатно59 долларов США в год42 доллара в годБесплатно

Я видел несколько жалоб в группах Facebook на проблемы WP Rocket и процессора. FlyingPress также недавно выпустила это обновление, позволяющее снизить загрузку ЦП на 300 % при предварительной загрузке кэша.

Снижение использования процессора FlyingPress

11. Ограничьте предварительную загрузку и очистку кеша в плагинах кеша.

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

Примеры:

Вам следует предварительно загружать только важные URL-адреса карты сайта. Предварительная загрузка всей карты сайта означает, что теги и другие некритические страницы будут предварительно загружены и использовать ресурсы. Найдите URL-адрес карты сайта (например, https://mysite.com/sitemap_index.xml), скопируйте наиболее важные URL-адреса (например, страницы/сообщения) и добавьте их вручную. Полное отключение предварительной загрузки — еще один вариант, поскольку он известен увеличением загрузки ЦП. Снимок экрана ниже предназначен для WP Rocket, но у LiteSpeed ​​Cache Crawler и большинства других плагинов кеширования есть опции для управления работой предварительной загрузки. Проверьте их документацию.

Предварительная загрузка карты сайта WP Rocket

Вы также можете увеличить интервал сканирования предварительной загрузки с помощью вспомогательного плагина WP Rocket или еще раз проверить документацию вашего плагина. Увеличение интервала по умолчанию с 500 мс до 3000 мс (или более) не позволяет вашему плагину кэша предварительно загружать URL-адреса быстрее, чем может обработать ваш сервер.

У них есть еще один вспомогательный плагин для отключения автоматической очистки кэша. Каждый раз, когда вы делаете одно из этих действий, весь кеш удаляется и перестраивается. Лучшая альтернатива — настроить задание cron, чтобы контролировать , когда очищается кеш и какие страницы очищаются (вы также можете сделать это с помощью предварительной загрузки). Таким образом, вы не будете постоянно очищать весь кеш при обновлении своего веб-сайта.

Наконец, попробуйте отключить настройку «предварительная загрузка ссылок». Если пользователи постоянно наводят курсор на внутренние ссылки (особенно на веб-сайтах с большим количеством ссылок на изображения, таких как продукты WooCommerce), это означает, что эти страницы постоянно загружаются в фоновом режиме. То же самое, если вы используете Flying Pages.

Другие настройки плагина кэша, влияющие на загрузку ЦП:

  • Кэшировать вошедших в систему пользователей (обычно отключается).
  • Отдельный мобильный кэш (обычно не используется).
  • Удалите неиспользуемый CSS (уменьшите размер пакета).
  • Гостевой режим LiteSpeed ​​Cache, кэш комментаторов, устаревший сервер.

12. Очистите базу данных (тщательно)

Я кратко рассмотрел это на шаге 2, но очистка базы данных может снизить загрузку ЦП.

Плагины кэша очищают большую часть данных, но WP-Optimize позволяет удалять таблицы, оставленные старыми плагинами. В процессе этого вы также можете увидеть, как определенные плагины/модули добавляют накладные расходы. В этом случае рассмотрите возможность отключения этих модулей, если они вам действительно не нужны.

Раздувание математической базы данных рангов

13. Установите Redis или Memcached с помощью OPcache.

Ваш хост либо будет поддерживать Redis, Memcached, либо ни того, ни другого (см. их инструкции).

Обычно вы активируете его в своей учетной записи хостинга (расширения PHP в cPanel). Затем используйте плагин (например, настройки кэша объектов LiteSpeed ​​Cache), чтобы подключить его. Если ваш хост не поддерживает кэш объектов, используйте плагин Docket Cache. OPcache обычно можно включить в вашей учетной записи хостинга.

OPcache Memcached Redis

14. Избегайте конструкторов страниц на дешевом хостинге

Почему Elementor рекомендует ограничение памяти в 756 МБ? Потому что он требует больше ресурсов, чем Гутенберг и другие облегченные альтернативы (плюс он добавляет во внешний интерфейс дополнительный CSS/JS).

Когда вы объединяете конструктор страниц, который требует больше ресурсов сервера, с планом хостинга, который не дает вам достаточно… вы получаете более высокую загрузку ЦП. То же самое относится и к сайтам WooCommerce.

Ограничение памяти Элементора

15. Используйте PHP 8+

Обновите PHP до последней версии в своей учетной записи хостинга (если вы видите ошибки, просто вернитесь назад). Более высокие версии PHP работают быстрее во внешнем интерфейсе и более эффективно используют процессор и память.

PHP 8.1

16. Очистите свой администратор

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

Плагин для раздувания

17. Отключите неиспользуемые надстройки хостинга.

Отключение неиспользуемых функций в вашей учетной записи хостинга также может помочь.

В основном это относится к таким вещам, как New Relic и xdebug. Как и многие диагностические инструменты, New Relic приходится обрабатывать большой объем данных, и его следует отключать сразу после того, как вы закончите его использовать.

PHP-расширения cPanel

18. Держите электронную почту и веб-хостинг отдельно

Есть причина, по которой многие облачные хостинги не предлагают хостинг электронной почты.

Электронные письма занимают индексные дескрипторы (файлы) и ресурсы, которые можно было бы лучше использовать для размещения вашего веб-сайта. Некоторые общие хосты имеют очень низкие ограничения на индексные дескрипторы, и даже говорят, что их превышение может оказать «негативное влияние на производительность сервера». Используйте сторонние сервисы, такие как Google Workspace (то, что я использую) или Cloudflare, которые начали предлагать бесплатные адреса электронной почты. В любом случае рекомендуется хранить их отдельно, поскольку в случае смены хоста вам не придется также менять электронную почту.

NameHero Ограничения инодов

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

19. Блокируйте спам-комментарии

Недавно я перешел на Antispam Bee (который не использует CAPTCHA), с тех пор как Akismet превратился в платный плагин. В противном случае в мой блог попадет слишком много спама, что отрицательно скажется на процессоре и моем времени.

Плагин Antispam Bee

20. Запустите сканирование на наличие вредоносных программ

Запустите сканирование с помощью Wordfence или другого плагина безопасности, чтобы проверить наличие вредоносного ПО и других уязвимостей. Исправление других проблем может повысить безопасность, а также помочь снизить загрузку ЦП.

Многие люди успешно используют Wordfence для снижения нагрузки на процессор, но вам, вероятно, придется настроить немало параметров, иначе текущие проверки могут усугубить вашу проблему.

Запустите сканирование Wordfence

Часто задаваемые вопросы

Как уменьшить использование процессора в WordPress?

Переход на хостинг LiteSpeed ​​с большим количеством ядер ЦП часто может снизить загрузку ЦП WordPress более чем на 50%. Также проверьте наличие ресурсоемких плагинов, фоновых задач и перегрузите все возможное в свою CDN (включая пропускную способность, безопасность и оптимизацию изображений).

Что делать, если загрузка процессора WordPress составляет 100%?

Если загрузка вашего процессора составляет 100%, попросите хостера выделить временные ресурсы, чтобы у вас было время оптимизировать ваш веб-сайт. Возможно, вы сможете снизить использование, чтобы вам не приходилось обновлять планы.

Как проверить загрузку процессора?

На вашей панели управления хостингом должны быть инструменты для проверки использования ЦП, а также памяти, пропускной способности и дискового пространства. Или используйте такие инструменты, как AWStats, Query Monitor и New Relic.

Какие плагины уменьшают загрузку процессора WordPress?

FlyingPress, Perfmatters, Unbloater, WP-Optimize, Blackhole for Bad Bots и WPS Hide Login — все это плагины WordPress, которые включают в себя функции для снижения использования процессора в WordPress.

Вызывают ли серверы Apache высокую загрузку процессора в WordPress?

Да, серверы Apache неэффективны по сравнению с Nginx и LiteSpeed. Например, LiteSpeed ​​может обрабатывать вдвое большую мощность, чем Apache, и использует ресурсы более эффективно.

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