Тест VPS — это полчаса работы, которые экономят месяцы мучений с медленным сервером. Заявленные «6 vCPU и NVMe» у разных провайдеров означают разное: ядра бывают перепроданными, диски — SATA под видом NVMe, а канал — урезанным в часы пик. В этой статье — практичный бенчмарк сервера тремя инструментами: sysbench для процессора, fio для диска и iperf3 для сети. Для каждого теста даём команды под Ubuntu 24.04 и, главное, расшифровку: какие цифры считать нормой, а какие — поводом вернуть деньги.
Подготовка: что нужно перед тестом
Тестируйте чистый сервер сразу после выдачи — до установки сайта и сервисов, чтобы фоновые процессы не искажали цифры. Установите инструменты одной командой:
sudo apt update && sudo apt install -y sysbench fio iperf3
Сначала зафиксируйте, что вам вообще выдали:
# Модель CPU и число ядер
lscpu | grep -E 'Model name|^CPU\(s\)'
# Память
free -h
# Диски и их тип
lsblk -d -o NAME,SIZE,ROTA,MODEL
# Виртуализация (ожидаем kvm)
systemd-detect-virt
В lsblk колонка ROTA=0 означает твердотельный накопитель, а systemd-detect-virt должен вернуть kvm, если провайдер обещал KVM — как, например, на всех тарифах Cheap-Host.
Тест CPU: sysbench
Sysbench вычисляет простые числа и показывает, сколько операций процессор успевает за секунду. Запускаем два прогона — один поток и все потоки:
# Один поток — «сила» одного ядра
sysbench cpu --cpu-max-prime=20000 --threads=1 --time=30 run
# Все потоки — масштабирование
sysbench cpu --cpu-max-prime=20000 --threads=$(nproc) --time=30 run
Смотрим строку events per second:
- Однопоточный результат показывает скорость ядра. Для современных Xeon в одном потоке типичны сотни events/sec (при
--cpu-max-prime=20000); втрое меньшие цифры — признак старого железа или троттлинга. - Многопоточный результат в идеале растёт почти линейно числу ядер. Если 6 потоков дают лишь вдвое больше одного — ядра «бумажные», нода перегружена.
- Разброс между запусками. Прогоните тест утром, днём и вечером: колебания больше 15–20% говорят о шумных соседях.
Параллельно проверьте steal time — главный маркер оверселлинга. Запустите нагрузку и в соседней SSH-сессии выполните:
vmstat 1 10
Последняя колонка st — процент процессорного времени, отобранного гипервизором. Ноль или 1–2% — норма; стабильные 5–10% и выше — ресурсы перепроданы. Подробнее о том, как хостеры продают «воздух», — в статье про оверселлинг и как его распознать.
Тест диска: fio
Диск — самое частое «бутылочное горлышко» VPS: базы данных упираются не в мегабайты в секунду, а в IOPS на мелких блоках. Fio измеряет именно это. Важно: используйте тестовый файл через --filename, а не блочное устройство, иначе на рабочем сервере вы уничтожите данные.
# Случайное чтение 4k — так база данных читает индексы
fio --name=randread --ioengine=libaio --direct=1 --bs=4k \
--iodepth=64 --size=2G --rw=randread --runtime=60 \
--time_based --group_reporting --filename=/root/fio.test
# Случайная запись 4k — так пишутся логи и транзакции
fio --name=randwrite --ioengine=libaio --direct=1 --bs=4k \
--iodepth=64 --size=2G --rw=randwrite --runtime=60 \
--time_based --group_reporting --filename=/root/fio.test
# Линейное чтение большими блоками — отдача файлов, бэкапы
fio --name=seqread --ioengine=libaio --direct=1 --bs=1M \
--iodepth=16 --size=2G --rw=read --runtime=60 \
--time_based --group_reporting --filename=/root/fio.test
# Обязательно удалить тестовый файл
rm /root/fio.test
Ключевые метрики в выводе — IOPS и lat (usec/msec). Ориентиры для случайных операций блоком 4k:
| Тип диска | IOPS (rand 4k) | Задержка | Вердикт |
|---|---|---|---|
| NVMe | от 20 000 до 100 000+ | десятки–сотни мкс | Отлично для баз данных и нагруженных сайтов |
| SATA SSD | 5000–20 000 | до 1 мс | Приемлемо для типовых проектов |
| HDD | 100–300 | 5–15 мс | Для боевого сайта непригодно |
Если в тарифе заявлен NVMe, а fio показывает 3–5 тысяч IOPS с миллисекундными задержками — перед вами либо жёсткий лимит гипервизора, либо вовсе не NVMe. Почему разница между типами накопителей настолько велика, мы разбирали в материале про NVMe-диски в VPS.
Тест сети: iperf3 и speedtest
Iperf3 меряет чистую пропускную способность канала между двумя точками. Идеальный вариант — второй сервер (подойдёт и дешёвый NAT VPS за 59 ₽): на нём запускаете приёмник, с тестируемого VPS — клиент.
# На втором сервере (приёмник)
iperf3 -s
# На тестируемом VPS: исходящая скорость, 4 потока, 30 секунд
iperf3 -c IP_второго_сервера -P 4 -t 30
# Входящая скорость (reverse-режим)
iperf3 -c IP_второго_сервера -P 4 -t 30 -R
Если второго сервера нет, используйте публичные iperf3-серверы (актуальные списки легко находятся в сети) или speedtest:
sudo apt install -y speedtest-cli
speedtest-cli --secure
Как читать результаты:
- На канале 100 Мбит/с честный результат iperf3 — 93–95 Мбит/с: часть полосы съедают заголовки TCP/IP. Например, тарифы Cheap-Host с каналом 100 Мбит/с в таком тесте должны показывать именно эти значения.
- Скорость должна держаться стабильно всю длину теста. «Пила» на графике — признак шейпера, который режет полосу после первых секунд.
- Повторите тест вечером в пик: просадка более чем на 20–30% относительно ночного результата — перегруженный аплинк.
- Отдельно проверьте задержки до своей аудитории командой
pingиmtr— этому посвящена статья о проверке пинга и скорости VPS.
Комплексный тест одним скриптом
Когда нужно быстро сравнить несколько серверов, удобен YABS (Yet Another Bench Script) — он прогоняет fio, iperf3 и Geekbench без установки лишних пакетов:
curl -sL https://yabs.sh | bash
Скрипт выдаёт сводку по диску (4k/64k/512k/1m), сети до нескольких точек мира и CPU. Результаты удобно сохранять и прикладывать к тикету в поддержку, если что-то не совпадает с тарифом. Запускать чужие скрипты стоит только на свежем сервере без данных — это общее правило гигиены.
Как читать результаты: сводный чек-лист
- CPU: многопоточный sysbench масштабируется по ядрам, steal time не выше 1–2%, разброс между запусками до 15%.
- Диск: для NVMe — от 20 тысяч IOPS на случайном чтении 4k и задержки в микросекундах; линейное чтение — сотни МБ/с и выше.
- Сеть: 93–95% от заявленной полосы, стабильно в течение теста и в разное время суток.
- Повторяемость: все тесты прогнаны минимум дважды в разные часы; результаты сохранены для будущих сравнений.
- Следующий уровень: после железных бенчмарков протестируйте само приложение — инструменты ab, wrk и k6 разобраны в статье о нагрузочном тестировании сайта.
Если сервер провалил тесты — не ждите «может, разгрузится». Либо тикет провайдеру с цифрами, либо переезд, пока на сервере нет данных.
FAQ: частые вопросы о тестировании VPS
Можно ли протестировать VPS до оплаты?
Чаще всего нет: бесплатные тесты дают редко. Практичный путь — взять минимальный тариф на месяц и прогнать бенчмарки в первый же час. У Cheap-Host сервер выдаётся за 45–60 секунд после оплаты, а NAT VPS стоит от 59 ₽/мес — цена полного теста получается символической.
Не повредят ли бенчмарки серверу и данным?
Нет, если тестировать аккуратно: fio запускайте с отдельным тестовым файлом (--filename) и никогда не указывайте само блочное устройство на рабочем сервере, иначе запись уничтожит данные. Sysbench и iperf3 данные не трогают, но создают нагрузку — на боевом сервере запускайте их в часы минимального трафика.
Что такое steal time и почему он важен?
Steal time (st в vmstat и top) — процент времени, когда ваша виртуальная машина хотела работать, но гипервизор отдал CPU другим клиентам. Стабильные значения выше 5–10% означают, что нода перепродана и заявленные ядра вы не получаете.
Почему результаты теста отличаются от заявленных характеристик?
Небольшая разница нормальна: часть канала съедают заголовки протоколов (на 100 Мбит/с iperf3 покажет 93–95 Мбит/с), а IOPS зависят от глубины очереди и лимитов гипервизора. Тревожный признак — расхождение в разы или сильный разброс между запусками в разное время суток.
Как часто повторять тесты VPS?
Прогоните полный набор при получении сервера и сохраните результаты. Затем повторяйте при заметных просадках сайта и после апгрейда тарифа. Сравнение с первым замером сразу покажет, деградировала нода или проблема в вашем приложении.
Вывод
Полный тест VPS занимает 30–40 минут: sysbench покажет честность ядер и steal time, fio — реальные IOPS диска, iperf3 — фактическую полосу канала. Сохраняйте результаты первого замера как эталон и сравнивайте с ним при любых подозрениях на деградацию — это надёжнее любых ощущений «сайт вроде тормозит».
Если хотите проверить эти команды на практике — у Cheap-Host VPS Start от 450 ₽/мес: 6 vCPU на Intel Xeon, 8 ГБ RAM, NVMe, KVM и безлимитный трафик. Сервер выдаётся за 45–60 секунд, так что от оплаты до первых цифр sysbench пройдёт меньше пяти минут.