Оверселлинг — главная причина, по которой VPS «на бумаге» с 4 ядрами и 8 ГБ RAM работает медленнее ноутбука десятилетней давности. Хостер продаёт одни и те же физические ресурсы нескольким клиентам сразу, рассчитывая, что все одновременно их не нагрузят. Пока расчёт сходится, никто ничего не замечает. Когда не сходится — ваши запросы стоят в очереди на процессор, сайт тормозит, а поддержка отвечает «у нас всё в порядке». В этой статье разберём, как устроен оверселлинг VPS, как распознать его по метрике steal time и тестам CPU и почему честный хостинг начинается с KVM-виртуализации.
Что такое оверселлинг и почему он существует
У любого сервера-ноды в дата-центре конечное количество ядер, памяти и места на дисках. Допустим, на ноде 64 физических ядра и 256 ГБ RAM. Хостер может продать на ней:
- Ровно столько, сколько есть — например, 60 vCPU и 240 ГБ RAM с запасом под систему. Дорого для хостера, честно для клиента.
- С умеренной переподпиской — 120–180 vCPU. Клиенты редко грузят все ядра одновременно, поэтому в обычной жизни никто друг другу не мешает. Это стандартная индустриальная практика.
- С агрессивным оверселлингом — 400+ vCPU и память «внахлёст». Вот это и есть продажа воздуха: физически ресурсов на всех нет, и при любой нагрузке соседи начинают воевать за процессор.
Важно понимать: сама по себе переподписка CPU — не обман. Обман начинается, когда хостер продаёт ресурсы, которые физически не может выдать даже части клиентов одновременно, и маскирует это маркетингом про «гарантированные ядра».
Steal time: главный индикатор оверселлинга
Steal time (st) — это процент времени, в течение которого ваша виртуальная машина была готова выполнять работу, но гипервизор не дал ей процессор, потому что физическое ядро было занято соседом. Это буквально «украденное» у вас время CPU, и видно его прямо внутри VPS.
Откройте top и посмотрите на строку %Cpu(s):
top
# %Cpu(s): 2.3 us, 0.7 sy, 0.0 ni, 96.8 id, 0.1 wa, 0.0 hi, 0.0 si, 0.1 st
Последнее значение — st — и есть steal time. Как его интерпретировать:
- 0–1% — нода не перегружена, всё отлично;
- 1–5% — лёгкая конкуренция в пиках, для большинства задач незаметно;
- 5–10% — сосед по ноде регулярно отъедает ваш CPU, время реакции приложений плавает;
- >10% стабильно — агрессивный оверселлинг, вы платите за ядра, которые вам не достаются.
Разовый замер мало о чём говорит — смотрите динамику. Утилита vmstat покажет steal time раз в секунду (последняя колонка st):
vmstat 1 30
А чтобы собрать статистику за сутки, поставьте sysstat:
sudo apt update && sudo apt install -y sysstat
sudo systemctl enable --now sysstat
# на следующий день: история загрузки CPU, колонка %steal
sar -u
Тесты CPU в разное время суток
Перегруженная нода выдаёт себя не всегда, а в часы пик — обычно вечером, когда соседские сайты и боты получают трафик. Поэтому одиночный бенчмарк сразу после покупки почти бесполезен: днём нода может быть свободна. Правильная методика — одинаковый тест минимум трижды: утром, днём и вечером (плюс ночью, если сервер под ночные задачи).
Классический инструмент — sysbench:
sudo apt install -y sysbench
sysbench cpu --cpu-max-prime=20000 --threads=4 --time=60 run
Записывайте метрику events per second. У честного хостера разброс между замерами в разное время — единицы процентов. Если вечером результат проседает на 30–50% относительно утреннего, ресурсы ноды проданы несколько раз, и вечером вы получаете остатки.
Тот же принцип работает для диска — перегруженную дисковую подсистему видно по упавшим IOPS:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
Подробную методику с fio, Geekbench и тестом сети мы разобрали в статье как протестировать VPS: бенчмарки CPU, диска и сети.
Косвенные признаки оверселлинга до покупки
Пока сервер не куплен, steal time не посмотреть. Но есть маркеры, по которым проблемного хостера видно заранее:
- Цена заметно ниже рынка при больших ресурсах. Железо, электричество и канал стоят денег. Если 8 ядер и 16 ГБ RAM продают по цене чашки кофе — либо ресурсы виртуальные в худшем смысле, либо к цене позже добавятся «скрытые» платежи. Где у дешёвых тарифов экономия честная, а где нет — разбирали в статье про подводные камни дешёвых VPS.
- OpenVZ, LXC или Virtuozzo вместо KVM. Контейнерная виртуализация технически позволяет переподписывать память и скрывать реальную загрузку ноды от клиента.
- Туманные формулировки. «До 4 ядер», «fair share CPU», «гарантировано 20% ядра» — читайте оферту: часто там прямо написано, что постоянная нагрузка на CPU запрещена.
- Нет теста скорости или тестового файла с ноды в нужной локации.
- Жалобы на «тормоза по вечерам» в отзывах — это буквально симптом переподписки.
Почему KVM — базовая защита от продажи воздуха
KVM — аппаратная виртуализация: каждый VPS получает собственное виртуальное железо, своё ядро Linux и жёстко выделенные память и диск. Для темы оверселлинга это важно по трём причинам:
- RAM не переподписывается незаметно. В контейнерах хостер может отдать «вашу» свободную память соседям; в KVM выделенные 8 ГБ закреплены за виртуальной машиной.
- Steal time виден изнутри. KVM честно показывает метрику
stвtop— у вас всегда есть инструмент контроля. В OpenVZ вы видите ровно ту картину, которую позволяет увидеть хостер. - Полная изоляция. Сосед не исчерпает лимит процессов или сокетов «на всех», как бывает в контейнерах с общим ядром.
Оговорка: KVM не делает переподписку CPU невозможной — он делает её измеримой. Чем и стоит пользоваться. Разницу между типами виртуализации подробно разбирали в статье KVM или OpenVZ: почему тип виртуализации решает всё.
Для примера: у Cheap-Host все VPS работают на KVM с выделенными ресурсами — тариф Start за 450 ₽/мес даёт 6 vCPU, 8 ГБ RAM и 96 ГБ NVMe, сервер выдаётся за 45–60 секунд. Это удобно как раз для проверки: развернули, прогнали sysbench утром и вечером, посмотрели steal time — и уже через сутки знаете, что купили, а не верите обещаниям с лендинга.
Чек-лист: проверяем VPS на оверселлинг за 24 часа
| Шаг | Команда / действие | Хороший результат | |
|---|---|---|---|
| Steal time сейчас | top, значение st | 0–1% | |
| Steal time в динамике | vmstat 1 30, затем sar -u за сутки | пики не выше 5% | |
| CPU утром/днём/вечером | sysbench cpu --threads=N --time=60 run | разброс до 10% | |
| Диск под нагрузкой | sysbench fileio --file-test-mode=rndrw run | стабильные IOPS, NVMe-уровень | |
| Реальная RAM | free -h, `dmesg \ | grep -i memory` | совпадает с тарифом |
| Тип виртуализации | systemd-detect-virt | kvm |
Если сервер прошёл все шесть пунктов — ресурсы ваши, а не нарисованные. Если нет, у вас на руках объективные цифры для разговора с поддержкой или для спокойного переезда.
Вывод
Оверселлинг нельзя увидеть на сайте хостера, но его легко измерить внутри сервера: steal time в top, sysbench в разное время суток и systemd-detect-virt отвечают на вопрос «купил я ресурсы или воздух» за одни сутки. Выбирайте KVM, читайте оферту и проверяйте цифры сами. Если нужен сервер с честными выделенными ресурсами — у Cheap-Host тариф Start от 450 ₽/мес: KVM, 6 vCPU, 8 ГБ RAM, NVMe, безлимитный трафик и выдача за минуту. Подробности и все тарифы — на cheap-host.onl.
FAQ
Оверселлинг — это всегда плохо?
Нет. Умеренная переподписка CPU — нормальная практика: клиенты редко грузят все ядра одновременно. Проблема начинается, когда хостер продаёт ресурсы с многократным запасом и ноды стоят перегруженными: steal time растёт, а ваши задачи ждут очереди на процессор.
Какой steal time считается нормальным?
0–1% — отлично, до 5% в пиках — терпимо. Если steal time стабильно держится выше 10%, нода перегружена и вы регулярно недополучаете оплаченный CPU. Это повод писать в поддержку или менять хостера.
Защищает ли KVM от оверселлинга полностью?
KVM гарантирует выделенную RAM и диск и делает переподписку CPU видимой через steal time — скрыть её, как в контейнерной виртуализации, не получится. Но CPU при KVM всё равно можно переподписать, поэтому проверка steal time и бенчмарки нужны в любом случае.
Можно ли распознать оверселлинг до покупки?
Косвенно: подозрительно низкая цена за большие ресурсы, OpenVZ/LXC вместо KVM, отсутствие теста скорости и туманные формулировки про «гарантированные ресурсы» в договоре. Надёжнее взять сервер на месяц и прогнать тесты CPU и диска в разное время суток.
Что делать, если я уже купил оверселленный VPS?
Соберите доказательства: графики steal time, результаты sysbench утром и вечером. Напишите в поддержку с просьбой перенести VPS на менее загруженную ноду. Если реакции нет — переезжайте: перенос сайта или приложения занимает вечер, а деградация производительности стоит дороже.