Применимо к: все тарифы.
Если ваш сайт работает медленно и узким местом оказывается база данных, чаще всего причина в медленных или неэффективных запросах, отсутствии индексов и тяжёлых или некорректно работающих плагинах — а на нашей платформе MySQL Governor не даёт одной перегруженной базе данных замедлить весь сервер. Эта статья поможет вам найти причину и устранить её.
Симптомы
- Страницы, которые много читают или записывают данные, загружаются медленно, а статические страницы работают нормально.
- Ваш аккаунт ненадолго упирается в лимит CPU, и посетители иногда видят ошибку 508 «Resource Limit Reached».
- Админка WordPress, поиск или импорт работают вяло.
- Графики использования ресурсов в cPanel дают всплески при обращении к страницам с активной работой базы данных.
Частые причины (наиболее вероятные сверху)
- Тяжёлые или плохо написанные плагины/расширения. «Похожие записи», живой поиск, статистика, аналитика, проверка битых ссылок и некоторые конструкторы страниц выполняют ресурсоёмкие запросы при каждом обращении.
- Отсутствие индексов. Таблица без нужного индекса заставляет MySQL сканировать каждую строку, а это медленно и нагружает CPU по мере роста данных.
- Медленные или повторяющиеся запросы. Один и тот же запрос при каждой загрузке страницы или запрос, объединяющий большие таблицы, быстро складываются в нагрузку.
- Слишком большая или неоптимизированная база данных. Раздутые таблицы (ревизии записей, просроченные транзиенты, таблицы логов и спама) заставляют каждый запрос выполнять больше работы.
- Отсутствие кэширования. Без кэширования каждый посетитель заново выполняет одни и те же запросы вместо того, чтобы получить готовую кэшированную копию.
- Сайт действительно перерос тариф. Нагруженный сайт может просто превысить запас CPU/памяти на тарифе поменьше.
Как MySQL Governor защищает узел
Ваш аккаунт работает в собственном контейнере CloudLinux с заданными лимитами (CPU/SPEED, память, IO и другие). Поверх этого MySQL Governor следит за нагрузкой на базу данных, которую создаёт каждый аккаунт, и сглаживает аккаунты, которые становятся слишком тяжёлыми, чтобы один разогнавшийся запрос не лишал ресурсов всех остальных на узле. Когда ваш аккаунт выходит за свои лимиты, запросы ненадолго ставятся в очередь или отклоняются, и посетитель может увидеть страницу 508 — это не полный простой, и всё восстанавливается, как только нагрузка падает. Решение всегда в том, чтобы снизить нагрузку (или перейти на тариф повыше), а не повторять попытки снова и снова.
Быстрые решения
- Сначала включите кэширование. Для WordPress у нас работает LiteSpeed, поэтому установите плагин LiteSpeed Cache (LSCache) — он отдаёт кэшированные страницы и резко сокращает число запросов к базе данных. См. Как ускорить WordPress с помощью LiteSpeed Cache.
- Найдите тяжёлый плагин. По очереди отключайте подозрительные плагины (похожие записи, живой поиск, статистика, проверка ссылок) и проверяйте заново. Когда нагрузка спадёт, вы нашли виновника — замените его или оставьте отключённым.
- Оптимизируйте таблицы. В cPanel -> Databases -> phpMyAdmin откройте свою базу данных, отметьте таблицы и выберите пункт Optimize table. Для WordPress также удалите ревизии записей, просроченные транзиенты и спам.
- Добавьте недостающий индекс. Если конкретный запрос медленный, добавьте индекс на столбец (или столбцы), по которым он фильтрует или объединяет данные. В WordPress это обычно делает надёжный плагин для базы данных; в остальных случаях добавьте индекс в phpMyAdmin в разделе Indexes у нужной таблицы. Если вы не уверены, какой индекс добавить, пришлите нам медленный запрос — и мы подскажем.
- Используйте современную версию PHP. Актуальный PHP (например, 8.x) обычно работает быстрее. Задайте его для каждого домена в cPanel -> Software -> MultiPHP Manager. См. Как выбрать подходящую версию PHP для производительности.
- Проверьте использование ресурсов. Откройте инструменты статистики использования ресурсов / CloudLinux в cPanel, чтобы увидеть, упираетесь ли вы в лимиты CPU, памяти или IO и когда. См. Как читать статистику использования ресурсов в cPanel.
Результат: с включённым кэшированием, удалённым самым тяжёлым плагином и оптимизированными таблицами нагрузка на базу данных обычно резко падает, а ошибки 508 прекращаются.
Если это не помогло
- Определите главного виновника. Если нагрузка по-прежнему видна в статистике использования ресурсов, но вы не можете вычислить запрос, напишите нам, указав домен и когда происходят всплески, — мы можем посмотреть активность базы данных на узле.
- Возможно, вы переросли тариф. Если с базой данных всё в порядке, а сайт просто стал нагруженным, ответ — больше запаса ресурсов. См. Когда стоит перейти на тариф выше?.
- На Услугах Managed? Настройка производительности — часть того, что мы берём на себя: напишите нам в чат, и мы разберёмся. (Услуги Self-Managed — хостинг с самостоятельным управлением, поэтому мы укажем вам на нужное решение, а не внесём изменение за вас.) См. Что входит в нашу поддержку.
Комментарии
0 комментариев
Войдите в службу, чтобы оставить комментарий.