Перейти к содержимому
К
  • Главная
  • Блог
  • Сайт на VPS тормозит: где искать причину, прежде...
VPS

Сайт на VPS тормозит: где искать причину, прежде чем платить за ядра

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

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

Сначала — что именно тормозит

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

Проверить просто: откройте инструменты разработчика в браузере, вкладку «Сеть», и посмотрите на первый запрос. Если время ожидания ответа больше секунды — идём разбираться с сервером. Если ответ пришёл за 200 миллисекунд, а страница грузится 6 секунд — оптимизировать нужно сайт, и новые ядра не помогут. Для второго случая у нас есть отдельный чек-лист как ускорить сайт.

Заодно отметьте, когда именно сайт медленный: постоянно, в часы наплыва посетителей или в определённое время суток. Это сильно сужает круг поиска.

Четыре узких места сервера

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

РесурсКак выглядит проблемаЧастая причинаЧем проверить
ПроцессорНагрузка стабильно под 100%, сайт тормозит равномерно, особенно при наплыве посетителейНет кэша, тяжёлые скрипты, ботыГрафики в панели хостера, top или htop
ПамятьСервер периодически «замирает», процессы завершаются аварийно, база перезапускаетсяСлишком много PHP-процессов, базе отдано больше памяти, чем естьfree -h
ДискВсё медленное, даже простые операции, а процессор почти не загруженМедленные диски тарифа, шумный сосед, переполненный дискdf -h, показатель ожидания диска в top
База данныхКаталог и поиск открываются секундами, остальное быстроЗапросы без индексов, раздутые служебные таблицыЖурнал медленных запросов базы
  • Процессор. Причина обычно — отсутствие кэша или тяжёлые скрипты, которые пересобирают страницу для каждого визита.
  • Память. Классика — слишком много PHP-процессов на маленькой памяти или база, которой отдали больше, чем есть. Когда память кончается, система начинает использовать диск вместо неё, и всё замедляется в разы.
  • Диск. Частая причина на дешёвых тарифах — медленные диски или сосед по серверу, который их забивает. Второй вариант — переполненный диск: логи и временные файлы съели всё место.
  • База данных. Виноваты медленные запросы без индексов, раздутые таблицы логов или сотни тысяч записей в таблице сессий.

Как проверить сервер командами

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

  • top или более наглядный htop — список процессов в реальном времени: кто сколько расходует процессора и памяти. Если наверху постоянно процессы PHP — страницы собираются слишком тяжело, если база данных — дело в запросах.
  • uptime — показывает среднюю нагрузку (load average) за 1, 5 и 15 минут. Грубое правило: значение, которое устойчиво выше числа ядер сервера, означает очередь из задач. Число ядер покажет команда nproc.
  • free -h — оперативная память. Смотрите на колонку available: это объём, который реально доступен программам. Активно используемый раздел подкачки (строка Swap) — признак нехватки памяти.
  • df -h — свободное место на дисках. Если раздел заполнен на 90–100%, начинайте с него.

В верхней части вывода top есть строка с загрузкой процессора, и в ней два показателя, о которых мало кто знает. Значение wa — доля времени, когда процессор простаивает в ожидании диска: если оно высокое, узкое место — диск, а не ядра. Значение st — время, которое «украл» у вашего сервера физический хост для других клиентов: если оно заметно отличается от нуля, хостер перегрузил оборудование, и ваш сайт тут не при чём.

Что чаще всего находим

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

Клиентский пример: интернет-магазин на 4 ядрах и 8 ГБ, нагрузка стабильно 90%. Хостер предлагал 8 ядер. Посмотрели логи: 60% запросов — от трёх ботов, которые круглосуточно перебирали фильтры каталога, создавая миллионы уникальных URL. Закрыли фильтры для ботов, включили кэш — нагрузка упала до 25%. Тариф не меняли.

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

Порядок действий: от простого к дорогому

  1. Посмотрите графики нагрузки в панели хостера: что именно упирается в потолок и в какое время.
  2. Проверьте свободное место на диске. Забитый диск — самая глупая и самая частая причина.
  3. Загляните в логи веб-сервера: кто делает запросы. Если больше половины — боты, ограничьте их: закройте служебные разделы и фильтры в robots.txt, а тех, кто правила игнорирует, ограничивайте на уровне веб-сервера.
  4. Включите кэш страниц, если его нет. Это самый дешёвый выигрыш. Как он устроен и что нельзя кэшировать — в статье про кэширование сайта.
  5. Проверьте медленные запросы базы данных и добавьте индексы. Почистите служебные таблицы: логи, сессии, устаревшие корзины.
  6. Обновите PHP до актуальной версии — это бесплатные 20–40% скорости. Что при этом проверить, описано в статье о том, зачем обновлять PHP.
  7. Разнесите по времени тяжёлые фоновые задачи: импорт, обмен, бэкапы — на ночь.
  8. И только потом, если всё сделано и сервер всё равно упирается, — апгрейд тарифа.

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

Когда виноват хостер, а не ваш сайт

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

  • Показатель st в top регулярно отличен от нуля — процессорное время уходит соседям.
  • Высокий wa при том, что ваш сайт почти ничего не пишет на диск, — диски перегружены чужой нагрузкой.
  • Сайт тормозит в случайное время, без связи с посещаемостью и вашими заданиями.
  • На таком же сайте с теми же настройками у другого провайдера всё быстро.

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

Когда апгрейд действительно нужен

Если после оптимизации нагрузка всё ещё высокая и она создаётся реальными посетителями — поздравляем, бизнес вырос. Тогда добавляют ресурсы, и обычно не ядра, а память и быстрый диск: для сайтов на PHP и базах именно они чаще становятся узким местом.

Что показала диагностикаЧто добавлять
Процессор у потолка в часы посещаемости, кэш включён, ботов нетЯдра или тариф с более быстрыми ядрами
Память заканчивается, активно используется подкачкаОперативную память
Высокое ожидание диска, медленные операции с файлами и базойТариф с NVMe-дисками
Диск заполнен полезными данными, а не мусоромОбъём диска или внешнее хранилище для файлов
Всё в норме, но сайт медленный в удалённых регионахНе сервер, а сеть доставки контента

Как прикинуть нужные ресурсы под тип сайта, мы описали в статье о том, как выбрать конфигурацию VPS.

Частые ошибки

  • Покупают ядра, не посмотрев графики. Если сервер упирается в диск или память, дополнительные ядра будут простаивать.
  • Лечат перезагрузкой. После перезапуска сервер какое-то время работает быстро, и проблема кажется решённой. Через несколько дней всё повторяется.
  • Увеличивают лимиты «с запасом». Разрешить вдвое больше PHP-процессов на той же памяти — верный способ получить зависания вместо медленной работы.
  • Путают людей и ботов. Рост нагрузки без роста заявок и визитов в Метрике — почти всегда скрипты. Если запросов очень много и они идут с тысяч адресов, это может быть уже атака — признаки описаны в статье про защиту сайта от DDoS.
  • Не следят за диском. Логи и временные файлы растут незаметно, а заканчивается место всегда внезапно.
  • Оптимизируют вслепую. Без замера «до» и «после» невозможно понять, помогла ли правка.

Чек-лист диагностики медленного VPS

  • Проверили, что медленный именно ответ сервера, а не загрузка картинок и скриптов.
  • Посмотрели графики процессора, памяти и диска за неделю, отметили время пиков.
  • Убедились, что на диске есть свободное место.
  • Проверили по логам долю запросов от ботов.
  • Убедились, что кэш страниц включён и работает.
  • Нашли и исправили медленные запросы базы данных.
  • Обновили PHP до актуальной версии.
  • Развели по времени импорт, обмены и резервное копирование.
  • Проверили, нет ли признаков перегрузки оборудования на стороне хостера.

Коротко

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

Диагностику медленных серверов мы в CasperLab делаем регулярно, и в большинстве случаев клиент остаётся на своём тарифе. Если ваш сервер тормозит, а единственный совет, который вы слышите, — «докупите ресурсов», покажите его нам: скажем честно, во что он упирается. А если выяснится, что сервер действительно мал, подберём VPS под вашу нагрузку.

Арендовать VPS в CasperLab

Поможем подобрать решение под вашу задачу и рассчитаем стоимость без обязательств.

Арендовать VPS
Поделиться:
Как понять, что VPS не хватает ресурсов?
Посмотрите графики в панели хостера: если процессор или память стабильно у потолка в часы посещаемости, а кэш и оптимизация уже сделаны, — ресурсов мало. Если пики совпадают с импортами или ботами, проблема не в тарифе.
Что важнее для скорости сайта: ядра или память?
Для типичного сайта на PHP с базой данных чаще упираются в память и скорость диска, а не в число ядер. Два быстрых ядра с 4 ГБ памяти и NVMe-диском обычно дают больше, чем четыре медленных с 2 ГБ.
Могут ли боты замедлять сайт?
Да, и очень заметно: парсеры и агрессивные краулеры могут создавать больше половины нагрузки на сервер. Их ограничивают через robots.txt, правила веб-сервера и лимиты на число запросов с одного адреса.
Что такое load average и какое значение считается нормальным?
Это среднее число задач, которые выполняются или ждут своей очереди, за 1, 5 и 15 минут. Ориентир — число ядер сервера: если значение устойчиво выше, задачи стоят в очереди и сайт замедляется. Короткие всплески нормальны, важна картина за 5 и 15 минут.
Поможет ли перезагрузка, если сервер тормозит?
На время — да: освобождается память и завершаются зависшие процессы. Но причина остаётся, и через несколько часов или дней замедление вернётся. Если перезагрузка помогает регулярно, это признак утечки памяти, накапливающихся процессов или нехватки ресурсов, и искать нужно именно их.
Почему сайт на VPS тормозит по ночам или в одно и то же время?
Обычно в это время работает задание по расписанию: резервное копирование, импорт товаров, обмен с учётной системой, рассылка. Сверьте время замедления со списком заданий планировщика. Решение — перенести тяжёлые задачи на часы минимальной посещаемости и разбить их на части.