Как найти плагин WordPress с высокой загрузкой ЦП

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

Что такое параллелизм PHP

Параллелизм PHP — это количество параллельных рабочих процессов PHP, которые могут выполняться в данный момент времени. Это один из наиболее важных факторов, когда мы говорим о масштабируемости WordPress, в тесной связи с мощностью процессора, о которой никто не говорит и не воспринимает всерьез. Это одна из причин, по которой мы просто не верим во все эти сравнительные тесты WordPress, которые можно  найти в Интернете. С другой стороны, каждый управляемый хостинг WordPress имеет ограничение параллелизма PHP, потому что мы хотим обеспечить стабильный хостинг, однако многие хостинг-провайдеры скрывают эту информацию, она слишком низкая, или вы будете удивлены электронным письмом о превышении квоты, рассмотрите возможность обновления .

Как PHP-параллелизм работает за кулисами

У вас может быть максимум X рабочих процессов PHP, выполняемых в данный момент времени, все новые запросы будут убиты (ошибка 503) или отложены (более медленное выполнение или ошибка 503). Многие поставщики управляемых облачных сервисов WordPress продают планы только с двумя PHP-параллелизмом, но требуется как минимум 4 (по умолчанию Closte — 5), и вот почему:

  • Вы делаете резервную копию, значит, этот PHP-запрос требует много времени.
  • Теперь предположим, что ваш cron WordPress запускается, еще один запрос PHP, который также требует длительного времени. На этом этапе запросы резервного копирования и cron (максимальный уровень параллелизма PHP) работают одновременно, и для их завершения требуется 10 секунд.
  • Каждый следующий запрос PHP будет отложен или уничтожен, возвращая ошибку 503. Теперь представьте, что вы ждете обновления статуса резервной копии, но визуально ничего не меняется. Конечно, новый запрос PHP ajax для проверки состояния резервного копирования не может быть выполнен из-за ограничения одновременного выполнения PHP. Что еще смешнее, многие из вас подумают, что плагин резервного копирования не работает 🙂

Мощность процессора очень важна, чем больше мощности процессора есть у вашего сайта, тем меньше времени требуется для выполнения параллельных запросов PHP. С другой стороны, единственная причина, по которой существует кеширование, — это период . Динамическая обработка вещей всегда выполняется медленно и требует много ресурсов процессора, памяти, дисковой обработки, сети и т.п. Хорошо, теперь вы знаете, как легко достичь лимита параллелизма PHP в качестве единственного пользователя на вашем сайте.

Как найти плагин CPU killer

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

Анализировать все HTTP-запросы, сделанные браузером

Мы предупредили одного из наших новых клиентов, что  SendinBlue Subscribe Form и WP SMTP — это просто плохо закодированный плагин, который обрабатывает некэшируемый HTTP-запрос на каждой странице PHP, но он нас серьезно не воспринял. Вот исходное сообщение билета:

«Форма подписки SendinBlue и WP SMTP» всегда отправляют не кэшируемый запрос POST, что хуже всего с точки зрения производительности / параллелизма сервера и самой большой ошибки разработчика. Попросите их сделать запрос с помощью кешируемого метода GET ИЛИ ДАЖЕ ЛУЧШЕ включить содержимое в HTML, а не с помощью запроса POST Ajax, так как результат — это всего лишь некоторые страны с телефонным префиксом.

Файл: wp-content / plugins / mailin / js / mailin-front.js

Строка: 182

Чтобы быть еще смешнее, некэшируемый HTTP-ответ ни для чего не используется на веб-сайте . Проверяя показатели использования ЦП и процессы PHP, мы точно знаем, в чем проблема. Отключение  формы подписки SendinBlue и WP SMTP   резко снизило использование ЦП и процессы PHP.

Вот что означают цвета:

  • 1-й зеленый: до приема посетителей
  • Красный: каждый посетитель запрашивает не кешируемые HTTP-запросы.
  • 2-й зеленый: после отключения  формы подписки SendinBlue и  плагина WP SMTP

Вот как анализировать все HTTP-запросы, сделанные браузером. Откройте Инструменты разработчика Chrome (STRL + SHIFT + I) -> вкладку Nework и просмотрите все запросы, которые не выполняются к статическому файлу, например /image.jpg, и не кэшируются плагином кеширования Litespeed. Обычно запрос указывает на  файл /wp-admin/admin-ajax.php, а заголовок ответа содержит заголовок  x-litespeed-cache-control со значением no-cache .

Анализируйте наши показатели ЦП и кеша

Когда мы получаем сообщение об ошибке 503, высокой загрузке ЦП или медленной обработке PHP, первое, что мы делаем, это проверяем показатели попаданий в ЦП и кэш. Если показатели диаграммы выглядят странно, значит, проблема. Вот как выглядит странная метрика CPU или Cache:

А вот как выглядит странная метрика Non-cacheable:

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

  • Плагин, который сканирует все ваши страницы, например  Broken Link Checker . Альтернатива: используйте журналы доступа с программным обеспечением HTTP-анализатора, таким как SmarterStats, или с вашим любимым текстовым редактором.
  • Плагины, используемые для аналитики, рекламы или некоторых счетчиков, таких как  WP PostViews . Альтернатива: сервисы Google Analytics или рекламных платформ.
  • Плагины, используемые для обслуживания ваших оптимизированных изображений или изображений с измененным размером через PHP. Альтернатива: используйте онлайн-оптимизатор изображений, например Kraken .
  • CRON. Трудно сказать, как это исправить, поскольку существует множество вариантов использования. Однако использование плагина менеджера cron или отключение внутреннего при включении только внешнего cron — это первые несколько вещей, которые вам нужно сделать.

Вот как выглядит журнал доступа.

v1.2 '127.0.0.1' '443' '[12/Jul/2018:09:40:13 +0000]' '/home/5b2d0fe3f911c8149cd0e889/public_html/wp-cron.php' 'POST /wp-admin/admin-ajax.php HTTP/1.1' '200' '278' '-' 'Clostebot/1.0' 'no-cache' '-' 'US'

Вам нужно сосредоточиться на четырех параметрах: IP-адрес (127.0.0.1), DateTime (12 июля 2018: 09: 40: 13 +0000), метод запроса и URL-адрес (POST /wp-admin/admin-ajax.php) и статус кеша (no-cache) и найдите ответы на эти вопросы:

  • Является ли большинство некэшируемых запросов к одному и тому же или похожему URL-адресу только с другой строкой запроса?
  • Запросы без кеширования выполняются с одного IP-адреса или с нескольких IP-адресов?
  • Для чего используется этот запрос?
  • Могу ли я использовать альтернативный метод или что если я отключу плагин?

Что является худшим из «самой большой ошибки производительности WordPress»?

Если наличие одного некэшируемого запроса PHP на каждой странице является самой большой ошибкой производительности WordPress, как мы можем назвать веб-сайт, у которого на каждой странице загружается 4 некэшируемых запроса,  самой большой самой большой ошибкой производительности WordPress? Этот сайт WordPress использует  тему SornaCommerce Pro, выполняя динамический запрос через PHP только для загрузки некоторой таблицы стилей CSS, Javascript и проверки того, пуста ли карта, а также один дополнительный некэшируемый запрос через  форму подписки SendinBlue и  плагин WP SMTP .

Обновления

Форма подписки SendinBlue и WP SMTP

Форма подписки SendinBlue и  плагин WP SMTP исправили их проблему на основе нашего сообщения в блоге в версии 2.9.3 ( Список изменений : исправьте проблему, которая запрашивает вызов ajax на каждой странице).

WP-SpamShield — плагин для защиты от спама для WordPress

Плагин WP-SpamShield версии 1.9.21 отправляет некэшируемый PHP-запрос только для отображения некоторого содержимого JS вместо создания файла JS, когда пользователь изменяет некоторые из своих настроек. Это также приводит к тому, что их плагин несовместим с каким-либо плагином оптимизации WordPress, поскольку они  неправильно используют  wp_enqueue_script , помещая PHP в очередь вместо JS файла.

GDPR WordPress

Плагин WordPress GDRP версии 1.6.4 — это еще один коммерческий плагин, который запрашивает 2 некэшируемых запроса на каждой странице. Советы для них:  вот как должны работать плагины WordPress GDPR cookie .

Kingdom — Тема WooCommerce Amazon Affiliates

Еще одна коммерческая тема , но такая ужасная, что отправляет 3 не кешируемых запроса.

WP GDPR

WP GDPR — это просто еще один плагин cookie GDPR, отправляющий не кэшируемый запрос, чтобы проверить, должен ли отображаться конкурс cookie GDPR. Советы для них:  вот как должны работать плагины WordPress GDPR cookie .

WooBought

 Плагин WooBought отправляет некэшируемый запрос каждые 5 секунд. Если 10 посетителей не закроют ваш сайт, вот сколько не кэшируемых запросов вы получите за один час: 3600/5 * 10 = 7200.

Вывод

Есть много других вариантов использования плагинов WordPress с высокой загрузкой ЦП, а также методов диагностики, но невозможно объяснить все, однако приведенные выше примеры наиболее распространены. Хорошо оптимизированный сайт WordPress с одним миллионом уникальных посетителей может использовать меньше ресурсов ЦП по сравнению с плохо оптимизированным сайтом WooCommerce без посетителей . Да, это правда, веб-сайт с одним миллионом посетителей получает посетителей из Facebook, попадая на кешированные страницы, в то время как сканеры поисковых систем просматривают страницы добавления в корзину, которые не кэшируются.

Теперь ты знаешь:

  • почему WooCommerce требуется больше возможностей по сравнению с веб-сайтами новостных журналов, потому что многие страницы WooCommerce не кэшируются, такие как корзина, касса, профили пользователей и т. д.
  • почему покупка тарифного плана, рассчитанного на 20 тысяч посетителей, не может удовлетворить ваш сайт в 10 тысяч.
  • почему платный плагин не значит, что он лучше. ( Форма подписки SendinBlue и WP SMTP имеет бесплатный план, но они платные даже с названием плана Enterprise)
  • почему вы никогда не должны очищать весь кеш или оставлять наш режим разработки включенным на очень загруженном веб-сайте. Представьте, что если Google удалит весь кеш поиска, они будут отключены в течение нескольких дней или недель.
  • почему масштабирование веб-сайта с помощью не кэшируемого запроса является сложной задачей и требует специального решения.
  • Все дело в кешировании, и в большинстве случаев количество посетителей — это относительное число.
0 0 голос
Рейтинг статьи
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x
()
x