Сайт на 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%. Тариф не меняли.
Ещё несколько находок, которые встречаются регулярно: задания по расписанию, которые запускаются чаще, чем успевают выполниться, и накладываются друг на друга; обмен с учётной системой в разгар рабочего дня; резервное копирование, которое сжимает архивы в часы пик; журналы, которые не очищались годами.
Порядок действий: от простого к дорогому
- Посмотрите графики нагрузки в панели хостера: что именно упирается в потолок и в какое время.
- Проверьте свободное место на диске. Забитый диск — самая глупая и самая частая причина.
- Загляните в логи веб-сервера: кто делает запросы. Если больше половины — боты, ограничьте их: закройте служебные разделы и фильтры в robots.txt, а тех, кто правила игнорирует, ограничивайте на уровне веб-сервера.
- Включите кэш страниц, если его нет. Это самый дешёвый выигрыш. Как он устроен и что нельзя кэшировать — в статье про кэширование сайта.
- Проверьте медленные запросы базы данных и добавьте индексы. Почистите служебные таблицы: логи, сессии, устаревшие корзины.
- Обновите PHP до актуальной версии — это бесплатные 20–40% скорости. Что при этом проверить, описано в статье о том, зачем обновлять PHP.
- Разнесите по времени тяжёлые фоновые задачи: импорт, обмен, бэкапы — на ночь.
- И только потом, если всё сделано и сервер всё равно упирается, — апгрейд тарифа.
Правило на время диагностики: меняйте что-то одно и смотрите на графики. Если включить кэш, обновить PHP и добавить памяти в один день, вы не узнаете, что именно помогло и за что стоило платить.
Когда виноват хостер, а не ваш сайт
VPS — это часть большого физического сервера, которую вы делите с другими клиентами. Если провайдер продал на одном оборудовании больше ресурсов, чем оно тянет, медленно будет у всех, и оптимизация сайта тут не поможет.
- Показатель
stвtopрегулярно отличен от нуля — процессорное время уходит соседям. - Высокий
waпри том, что ваш сайт почти ничего не пишет на диск, — диски перегружены чужой нагрузкой. - Сайт тормозит в случайное время, без связи с посещаемостью и вашими заданиями.
- На таком же сайте с теми же настройками у другого провайдера всё быстро.
В такой ситуации пишите в поддержку с конкретными цифрами и временем — иногда сервер переносят на менее загруженное оборудование. Если не помогает, меняют тариф или провайдера. Тип дисков тоже имеет значение: чем NVMe отличается от обычных SSD и когда это заметно, мы разбирали в статье NVMe или SSD.
Когда апгрейд действительно нужен
Если после оптимизации нагрузка всё ещё высокая и она создаётся реальными посетителями — поздравляем, бизнес вырос. Тогда добавляют ресурсы, и обычно не ядра, а память и быстрый диск: для сайтов на PHP и базах именно они чаще становятся узким местом.
| Что показала диагностика | Что добавлять |
|---|---|
| Процессор у потолка в часы посещаемости, кэш включён, ботов нет | Ядра или тариф с более быстрыми ядрами |
| Память заканчивается, активно используется подкачка | Оперативную память |
| Высокое ожидание диска, медленные операции с файлами и базой | Тариф с NVMe-дисками |
| Диск заполнен полезными данными, а не мусором | Объём диска или внешнее хранилище для файлов |
| Всё в норме, но сайт медленный в удалённых регионах | Не сервер, а сеть доставки контента |
Как прикинуть нужные ресурсы под тип сайта, мы описали в статье о том, как выбрать конфигурацию VPS.
Частые ошибки
- Покупают ядра, не посмотрев графики. Если сервер упирается в диск или память, дополнительные ядра будут простаивать.
- Лечат перезагрузкой. После перезапуска сервер какое-то время работает быстро, и проблема кажется решённой. Через несколько дней всё повторяется.
- Увеличивают лимиты «с запасом». Разрешить вдвое больше PHP-процессов на той же памяти — верный способ получить зависания вместо медленной работы.
- Путают людей и ботов. Рост нагрузки без роста заявок и визитов в Метрике — почти всегда скрипты. Если запросов очень много и они идут с тысяч адресов, это может быть уже атака — признаки описаны в статье про защиту сайта от DDoS.
- Не следят за диском. Логи и временные файлы растут незаметно, а заканчивается место всегда внезапно.
- Оптимизируют вслепую. Без замера «до» и «после» невозможно понять, помогла ли правка.
Чек-лист диагностики медленного VPS
- Проверили, что медленный именно ответ сервера, а не загрузка картинок и скриптов.
- Посмотрели графики процессора, памяти и диска за неделю, отметили время пиков.
- Убедились, что на диске есть свободное место.
- Проверили по логам долю запросов от ботов.
- Убедились, что кэш страниц включён и работает.
- Нашли и исправили медленные запросы базы данных.
- Обновили PHP до актуальной версии.
- Развели по времени импорт, обмены и резервное копирование.
- Проверили, нет ли признаков перегрузки оборудования на стороне хостера.
Коротко
Медленный VPS — повод для диагностики, а не для немедленной покупки ядер. Сначала выясните, медленный ли ответ сервера, затем — какой ресурс упирается в потолок. Чаще всего помогают кэш, ограничение ботов, порядок на диске и в базе, свежая версия PHP. Апгрейд нужен, когда всё это сделано, а нагрузку создают реальные посетители, — и добавлять стоит именно тот ресурс, которого не хватает.
Диагностику медленных серверов мы в CasperLab делаем регулярно, и в большинстве случаев клиент остаётся на своём тарифе. Если ваш сервер тормозит, а единственный совет, который вы слышите, — «докупите ресурсов», покажите его нам: скажем честно, во что он упирается. А если выяснится, что сервер действительно мал, подберём VPS под вашу нагрузку.
Арендовать VPS в CasperLab
Поможем подобрать решение под вашу задачу и рассчитаем стоимость без обязательств.
Арендовать VPS