Сайт создаёт нагрузку на сервер: причины и как её снизить

Печать
  • 0

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

Как проявляется чрезмерная нагрузка

Почему мы говорим, что дело в сайте

Когда сайт работает медленно, мы сначала смотрим на сервер в целом. Если общая нагрузка в норме, а остальные сайты на том же сервере отвечают быстро, значит, проблема в скриптах конкретного сайта. CloudLinux выделяет каждому аккаунту свою долю процессора, памяти и процессов, поэтому один сайт не тормозит соседей, но упирается в собственный потолок. Что означает каждый лимит, объясняется в статье лимиты в Resource Usage.

Шаг 1. Посмотрите, когда и какие лимиты достигаются

  1. В cPanel откройте Metrics, затем Resource Usage. Обратите внимание, какой лимит был достигнут (CPU, память, входящие процессы, IO) и в какое время.
  2. Сравните это время с журналом доступа (Metrics, затем Raw Access) или с Awstats. Много запросов за короткое время с одних и тех же адресов указывают на ботов, а высокая нагрузка ночью — на задания по расписанию.
  3. Проверьте Errors в разделе Metrics или файл error_log в папке сайта. Повторяющиеся ошибки PHP часто идут от одного плагина; см. как найти в error_log виновный плагин.
  4. Вспомните, что менялось в последнее время: новый плагин, обновление, импорт товаров, рекламная кампания, рассылка со ссылкой на сайт.

Шаг 2. Устраните самые частые причины

Нет кеша страниц

Без кеша при каждом посещении заново выполняется PHP и десятки запросов к базе. На тарифах WordPress Hosting и Business Hosting включите LiteSpeed Cache: настройка LiteSpeed Cache. На Web Hosting SSD используйте встроенный кеш CMS или плагин кеширования. В Joomla кеш страниц настраивается в System, Global Configuration, на вкладке System.

Устаревшие или тяжёлые расширения

Старые версии CMS и плагинов работают медленнее и чаще становятся целью атак. Обновите их, для WordPress в первую очередь через cPanel с помощью WP Toolkit. Затем поищите самые тяжёлые: плагины статистики и «похожих записей», которые обращаются к базе на каждой странице, конструкторы страниц с множеством дополнений, плагины безопасности с частыми полными проверками, плагины резервного копирования, работающие прямо на живом сайте. Отключайте их по одному и следите за Resource Usage.

Боты и краулеры

SEO-краулеры и недобросовестные боты способны открывать тысячи страниц в час, особенно бесконечные сочетания фильтров и результатов поиска в интернет-магазинах. Как их распознать и ограничить: боты перегружают сайт. Подбор паролей к wp-login.php и xmlrpc.php тоже создаёт нагрузку; защита описана в статье безопасность WordPress.

Задания по расписанию

  • В cPanel откройте Advanced, затем Cron Jobs. Удалите дубли и задания, которые без реальной необходимости запускаются каждую минуту.
  • У WordPress есть собственный планировщик (WP-Cron), который запускается при посещениях. На посещаемом сайте отключите его, добавив define( 'DISABLE_WP_CRON', true ); в wp-config.php, и вместо него создайте задание cron раз в 15 минут, например: curl -s https://example.com/wp-cron.php?doing_wp_cron > /dev/null 2>&1 (вместо example.com укажите свой домен).

База данных

Таблицы, которые растут без ограничений (ревизии, журналы плагинов, просроченные временные данные, старые сессии), замедляют каждый запрос. Очищайте их средствами CMS или специальным плагином, предварительно сделав копию базы. В phpMyAdmin можно отметить таблицы и выбрать Optimize table в списке «With selected»; если таблица помечена как повреждённая, выполните Repair table. Большие таблицы без индексов лучше доверить разработчику.

Старая версия PHP

Новые версии PHP выполняют тот же код заметно быстрее. Если CMS и плагины её поддерживают, выберите свежую версию: выбор версии PHP.

Заражённые скрипты

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

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

  1. Прочитайте список скриптов и процессов в письме и начните с них.
  2. Примените подходящее решение из шага 2 или передайте письмо разработчику сайта.
  3. Ответьте в том же тикете, что именно Вы изменили, чтобы мы проверили нагрузку повторно.

Согласно Условиям предоставления услуг TopHost, если аккаунт расходует значительные ресурсы, мы связываемся с клиентом. Если расход чрезмерный (память, процессор, SQL-запросы) и может нарушить стабильность сервера, аккаунт могут приостановить или отключить скрипт без предварительного уведомления, чтобы сервер работал для всех. Быстрая реакция на наше письмо позволяет этого избежать.

Частые вопросы

Сайт годами работал без изменений. Откуда сейчас нагрузка?

Сам сайт мог не меняться, а вот всё вокруг изменилось: в базе стало больше данных, выросла посещаемость, появились новые боты, плагины давно не обновлялись. Разросшаяся за годы база данных встречается особенно часто.

Не пора ли перейти на тариф побольше?

Если сайт уже оптимизирован (кеш включён, расширения обновлены, боты под контролем), а Resource Usage всё равно показывает достигнутые лимиты при обычной посещаемости, то да. Запросить тариф с большими ресурсами должен сам клиент: смена тарифа. Если проект перерос общий хостинг, см. когда нужен VPS.

Можете подсказать, какой скрипт виноват?

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

Полезные статьи

Помог ли вам данный ответ?

Нужна помощь? Позвоните нам +373 795-800-80