Как протестировать VPS: бенчмарки CPU, диска и сети

Сравнения и экономия
Как протестировать VPS: бенчмарки CPU, диска и сети

Тест 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 SSD5000–20 000до 1 мсПриемлемо для типовых проектов
HDD100–3005–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. Результаты удобно сохранять и прикладывать к тикету в поддержку, если что-то не совпадает с тарифом. Запускать чужие скрипты стоит только на свежем сервере без данных — это общее правило гигиены.

Как читать результаты: сводный чек-лист

  1. CPU: многопоточный sysbench масштабируется по ядрам, steal time не выше 1–2%, разброс между запусками до 15%.
  2. Диск: для NVMe — от 20 тысяч IOPS на случайном чтении 4k и задержки в микросекундах; линейное чтение — сотни МБ/с и выше.
  3. Сеть: 93–95% от заявленной полосы, стабильно в течение теста и в разное время суток.
  4. Повторяемость: все тесты прогнаны минимум дважды в разные часы; результаты сохранены для будущих сравнений.
  5. Следующий уровень: после железных бенчмарков протестируйте само приложение — инструменты 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 пройдёт меньше пяти минут.

Читайте также