SSD Nodes Learn 🎉 VPS от $5.50/мес
Руководства Matt ConnorАвтор: Matt Connor

Как выбрать дешевый VPS и не ошибиться

Разбор скрытых условий дешевых VPS: оверселлинг vCPU, лимиты трафика, реальные цены продления и NVMe. Чек-лист из 5 тестов для проверки сервера в течение 30 минут после покупки.

Что скрывают дешевые предложения VPS

Читайте предложения о покупке дешевых VPS «наоборот», так как цена — это наименее полезная цифра на странице. Качество сервера определяется тем, что не указано в описании: коэффициентом оверселлинга для vCPU, условиями «честного использования» (fair use) для тарифов с пометкой «безлимитный», ценой продления после окончания первого периода, а также тем, взимается ли дополнительная плата за резервное копирование и IPv4-адрес. Это руководство пошагово разбирает параметры предложения, а также предлагает приемочные тесты, которые стоит провести, пока вы еще можете вернуть деньги.

Это не означает, что низкая цена — это обман. Устаревшее оборудование, высокая плотность размещения, отсутствие техподдержки и упрощенная избыточность платформы — именно так достигается низкая стоимость. Ваша задача — понимать, на какие компромиссы вы идете, прежде чем об этом узнают ваши пользователи. Все приведенные ниже инструкции работают на Ubuntu 24.04 с пакетами, доступными в августе 2026 года.

vCPU — это не физическое ядро

vCPU представляет собой слот планировщика, а не физический кремниевый компонент. В KVM (kernel-based virtual machine) каждый vCPU является потоком на хосте, и планировщик хоста назначает этот поток на физическое ядро, когда приходит его очередь. Хост может продавать четыре vCPU на одно физическое ядро, при этом каждая гостевая система будет отображать их полное количество в nproc. Число в описании тарифа — это верхний предел того, что вы можете запросить, и оно не гарантирует выделение ресурсов.

Коэффициент оверселлинга (oversell ratio) показывает, сколько vCPU хост продает на одно физическое ядро. При соотношении 1:1 ядро принадлежит только вам. В дешевых тарифах этот коэффициент выше, и его почти никогда не публикуют, поэтому любой тариф, в котором не указано «dedicated core» или «dedicated vCPU», следует считать общим (shared). Общие ресурсы подходят для большинства задач, так как серверы большую часть времени простаивают. Проблемы начинаются, когда ваш час пик совпадает с часом пик других пользователей.

Вы можете измерить этот эффект изнутри гостевой системы. Когда ваш vCPU готов к работе, но хост отдает физическое ядро другому гостю, это ожидание учитывается как steal time: столбец st в vmstat и %st в top. Steal time — это способ, которым «шумный сосед» проявляется в ваших собственных метриках, и это самый полезный показатель в данном руководстве, так как его невозможно подделать в описании тарифа.

Выделенное ядро (dedicated core) все равно остается общим в других аспектах. Пропускная способность памяти, кэш последнего уровня и путь к хранилищу данных являются общими для всего хоста. «Dedicated vCPU» устраняет основной источник нестабильности, но не все из них.

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

"Безлимитный трафик" — это как минимум четыре разных продукта

Трафик описывается четырьмя способами, и они не являются взаимозаменяемыми.

  • Тарифицируемый объем. В описании указано число, например "2 TB в месяц". Важно то, что происходит после исчерпания лимита: либо взимается плата за каждый дополнительный TB, либо скорость принудительно снижается до очень низких значений до начала следующего месяца. Выясните, какой вариант применяется, до того, как это станет критически важным.
  • Тариф без учета трафика с пунктом о добросовестном использовании (fair use). Трафик не подсчитывается, а политика допустимого использования определяет лимиты словами, а не цифрами. Ищите в этом документе термины "fair use", "sustained", "excessive" и "abuse".
  • Ограничение скорости порта. Порт 100 Mbit/s ограничивает вас физически, независимо от того, что написано в политике трафика.
  • Сочетание двух последних вариантов: безлимитный трафик на медленном порту. Это наиболее распространенный формат для дешевых тарифов, и предложение остается честным, если вы внимательно изучили скорость порта.
ChartTraffic ceiling set by port speed alone, 30 days at full rate
The data behind this chart
[
  {
    "label": "100 Mbit/s",
    "tb_ceiling_30d": 32,
    "hours_per_tb": 22.2
  },
  {
    "label": "200 Mbit/s",
    "tb_ceiling_30d": 65,
    "hours_per_tb": 11.1
  },
  {
    "label": "500 Mbit/s",
    "tb_ceiling_30d": 162,
    "hours_per_tb": 4.4
  },
  {
    "label": "1 Gbit/s",
    "tb_ceiling_30d": 324,
    "hours_per_tb": 2.2
  }
]

Скорость порта — это жесткий потолок, и расчет здесь прост. 100 Mbit/s — это 12.5 мегабайт в секунду, поэтому 30 дней работы порта на полной скорости позволяют передать около 32 TB. Те же 30 дней на порту 1 Gbit/s дают 324 TB. TB здесь означает 10^12 байт — единицу, по которой хостинг-провайдеры выставляют счета. Это математический расчет, а не измерение, и ни один реальный сервер не работает на пределе пропускной способности порта целый месяц.

Второй столбец — это то, что отличает тарифы друг от друга. Передача одного терабайта занимает около 22.2 часов на порту 100 Mbit/s и 2.2 часов на гигабитном порту. Если ваш план восстановления звучит как "скачать резервную копию и начать заново", это число и есть ваше время восстановления.

В этой строке спецификации скрываются еще две детали. "1 Gbit/s shared" означает, что порт разделяется с другими клиентами, поэтому указанный выше потолок — это лучший сценарий, а не гарантия. Кроме того, некоторые хостеры тарифицируют трафик по 95-му перцентилю (95th percentile) от измеренной скорости, а не по общему объему, что делает постоянную нагрузку значительно дешевле пиковой.

Что бы ни было написано в тарифе, измеряйте свое потребление самостоятельно. vnstat считывает счетчики интерфейса и ведет историю.

sudo apt install -y vnstat
sudo systemctl enable --now vnstat
vnstat -d
vnstat -m

Сразу после установки vnstat выводит Not enough data available yet., так как в его базе данных еще нет записей. Вернитесь на следующий день, и команда vnstat -m покажет вам месячный итог, который можно сравнить с лимитом, за который вы платите.

Действительно ли это NVMe, и как это проверить?

lsblk -d -o NAME,ROTA,SIZE,MODEL

Значение ROTA, равное 0, означает, что гостевой системе сообщили, что устройство не является вращающимся носителем. Это значение передается гипервизором, поэтому оно отражает настройки хоста, а не характеристики физического носителя. Столбец MODEL обычно пуст для виртуальных дисков типа /dev/vda и отображает общее значение QEMU HARDDISK для устройств, подключенных через SCSI. Вы работаете с виртуальным диском, поэтому его метка не является доказательством.

Параметр, который стоит проверять — это задержка (latency), а реальное различие заключается в типе накопителя: локальный NVMe или сетевой том. Сетевой том может показывать высокие показатели последовательной пропускной способности, но при этом работать медленно, так как пропускная способность измеряется при большом количестве параллельных запросов, в то время как база данных ожидает завершения каждой отдельной операции записи. Измеряйте задержку при глубине очереди 1, а IOPS (количество операций ввода-вывода в секунду) — при более глубокой очереди.

sudo apt install -y fio
fio --name=lat --filename=fiotest --size=1G --direct=1 --ioengine=libaio --rw=randread --bs=4k --iodepth=1 --numjobs=1 --runtime=60 --time_based --group_reporting
fio --name=iops --filename=fiotest --size=1G --direct=1 --ioengine=libaio --rw=randread --bs=4k --iodepth=32 --numjobs=1 --runtime=60 --time_based --group_reporting
rm -f fiotest

Изучите блок clat percentiles, особенно строку 99.00th. Это задержка завершения, которую ощутил самый медленный один процент запросов; именно это пользователь воспринимает как «зависание». В качестве ориентира: локальный NVMe при глубине очереди 1 отвечает за сотни микросекунд, а сетевой том — за миллисекунды. Сравнивайте результаты двух собственных запусков, а не доверяйте опубликованным цифрам. Проводите серию из трех тестов в разное время суток, так как диск, разделяемый с другими арендаторами, ведет себя по-разному в 03:00 и в 20:00.

fio сначала создает файл размером 1 GB, поэтому оставьте свободное место на диске и помните, что тест расходует лимит IOPS, установленный вашим тарифным планом. Если вам нужны быстрые показатели, ioping -c 20 . выведет задержку одной строкой. Результаты бенчмарка имеют смысл только при возможности их воспроизведения, поэтому сохраняйте точные команды и вывод с указанием даты.

Что включено в стоимость, а за что взимается дополнительная плата

  • IPv4. Обычно включен один адрес. Некоторые бюджетные тарифы предоставляют общий адрес за NAT (network address translation) с ограниченным набором проброшенных портов, что не позволяет запустить сервис на 443 порту. Сравните вывод ip -4 addr show scope global и curl -4 https://icanhazip.com. Если ответы различаются, вы находитесь за NAT.
  • IPv6. Маршрутизируемая подсеть /64 предоставляет адреса для контейнеров и любых сервисов, доступных извне. Один адрес /128 подходит только для исходящего трафика.
  • Резервное копирование. Автоматические бэкапы обычно являются платной опцией. Снимки (snapshots) часто бесплатны, но они хранятся на той же инфраструктуре, что и исходный диск. Они защищают от ваших ошибок, но не от выхода из строя хоста. Всегда храните одну копию данных вне сервера, независимо от условий тарифа.
  • Защита от DDoS. Многие хостинг-провайдеры при объемной атаке (distributed denial of service) блокируют ваш IP-адрес (null routing) на фиксированный период. Сервер остается работоспособным, но становится недоступен из интернета. Уточните порог срабатывания защиты и длительность блокировки.
  • Объем технической поддержки. На неуправляемом тарифе вы сами являетесь системным администратором, а зона ответственности хостера ограничивается гипервизором и сетью. Это основная причина разницы в цене между двумя тарифами с идентичными характеристиками.
  • Лицензии и панели управления. Стоимость панели управления, коммерческой операционной системы или почтового дополнения может превышать ежемесячную стоимость самого сервера.

Какой тип виртуализации вы приобретаете?

systemd-detect-virt

kvm или qemu означают полную виртуализацию: вы используете собственное ядро и модули, которые выбираете для загрузки. lxc, lxc-libvirt или openvz означают контейнер, использующий общее ядро хоста. none означает выделенный сервер (bare metal).

Разница становится критичной при использовании общего ядра. sudo modprobe wireguard завершается с ошибкой, а ip link add dev wg0 type wireguard возвращает RTNETLINK answers: Operation not supported, так как контейнер не может загрузить модуль ядра, который не был загружен на хосте. free -h может отображать память хоста вместо вашей, если отсутствует lxcfs, поэтому мониторинг будет показывать данные не о вашем сервере. Swap часто является общим с другими контейнерами, а запуск виртуальных машин внутри VPS невозможен вовсе. Тарифы с контейнерами дешевле не просто так, но для статического сайта или небольшого приложения это всё ещё подходящий выбор.

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

Рекламируемая цена часто распространяется только на первый период оплаты. Ищите на странице заказа пометку «renews at» (продлевается по цене) и обращайте внимание на срок действия скидки. Скидка, действующая один год, и скидка, закрепленная за тарифом на весь срок его использования, — это разные продукты, скрывающиеся за одним и тем же первым счетом.

С такой же тщательностью изучайте условия возврата средств. Обратите внимание на длительность периода, в течение которого возможен возврат, отсчитывается ли он с момента заказа или с момента предоставления услуги, подлежат ли возврату дополнительные опции (например, дополнительные IP-адреса) и возвращается ли предоплата за год пропорционально неиспользованному времени. Затем поставьте напоминание в календарь за неделю до даты продления, так как самый выгодный момент для ухода — до выставления счета.

Переход к другому провайдеру позже также не будет бесплатным. Перенос нескольких сотен гигабайт данных, перенастройка конфигурации, ожидание истечения времени жизни (TTL) записей DNS (domain name system) и, в случае с почтовым сервером, восстановление репутации IP-адреса в сумме занимают целые выходные. Учитывайте эти выходные, когда экономия кажется убедительной. Во сколько VPS обходится на самом деле за год — это та цифра, которую стоит сравнивать, а не стоимость первого месяца.

Тридцатиминутный приемочный тест

Выполните эти действия на новом сервере перед миграцией данных, пока еще действует период возврата средств. Сначала обеспечьте безопасность: в первые десять минут на новом VPS описана настройка учетной записи пользователя, ключей и межсетевого экрана. Затем установите необходимые инструменты.

sudo apt update
sudo apt install -y sysbench fio ioping sysstat stress-ng vnstat mtr-tiny curl

Проверка 1: что именно мне предоставили?

systemd-detect-virt
nproc
lscpu | grep -E 'Model name|MHz|Hypervisor'
free -h
lsblk -d -o NAME,ROTA,SIZE,MODEL
ip -4 addr show scope global
curl -4 -s https://icanhazip.com

Вы должны увидеть тип виртуализации, модель процессора и объем оперативной памяти, который отличается от заявленного не более чем на несколько процентов. Если free -h показывает значительно больше RAM, чем указано в тарифе, скорее всего, это контейнер без lxcfs, а не бонус. Если публичный адрес из curl не отображается в ip -4 addr, значит, IPv4-адрес является общим.

Проверка 2: какова скорость одного потока и каков уровень steal при нагрузке?

sysbench cpu --cpu-max-prime=20000 --threads=1 run

Запишите строку events per second. Скорость одного потока определяет быстроту отрисовки страниц и время сборки проекта; именно по этому показателю дешевые тарифы различаются сильнее всего. Теперь загрузите все vCPU и посмотрите, что именно выделяет планировщик.

stress-ng --cpu 0 --timeout 300s &
vmstat 1 30
mpstat -P ALL 1 10

--cpu 0 запускает по одному рабочему процессу на каждый доступный CPU. Следите за столбцом st в vmstat и %steal в mpstat. Эпизодические значения в несколько процентов на общем тарифе — это нормально. Если показатель steal держится на двузначных числах в течение нескольких минут, значит, физические ядра переподписаны, и ваша задача ожидает очереди за другим арендатором. Снова запустите sysbench во время нагрузки: если результат для одного потока резко падает, значит, ваши vCPU конкурируют друг с другом (обычно это означает, что они являются соседними потоками на одном ядре, а не отдельными ядрами). Низкий результат при почти нулевом steal указывает на другой случай: ограничение CPU, наложенное хостером, которое невозможно увидеть напрямую изнутри гостевой системы.

Проверка 3: как ведет себя диск при глубине очереди 1?

Выполните две команды fio из раздела NVMe и сохраните оба результата: задержку на 99-м перцентиле при глубине очереди 1 и IOPS при глубине 32. Затем проверьте запись, так как многие тома работают в этом направлении значительно медленнее.

fio --name=wlat --filename=fiotest --size=1G --direct=1 --ioengine=libaio --rw=randwrite --bs=4k --iodepth=1 --numjobs=1 --runtime=30 --time_based --group_reporting
rm -f fiotest

Показатель последовательного чтения dd — это число, которое любят указывать в описании тарифов, но оно наименее полезно, так как базы данных и активные веб-приложения редко работают с последовательными потоками данных. Соберите этот показатель, если хотите сравнить его с другими, но ориентируйтесь на задержку.

Проверка 4: как выглядит сеть со стороны ваших пользователей?

Сначала скачайте что-нибудь объемное на VPS.

curl -o /dev/null -w 'in: %{speed_download} bytes/s\n' https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.6.tar.xz

Это проверяет только один путь к вашему серверу. Важно направление, по которому идут ваши пользователи, поэтому разместите файл и скачайте его с машины, расположенной рядом с ними.

fallocate -l 100M /var/tmp/100mb.bin
python3 -m http.server 8080 --directory /var/tmp

Затем, с ноутбука или сервера, находящегося рядом с вашей аудиторией:

curl -o /dev/null -w 'down: %{speed_download} bytes/s\n' http://YOUR_SERVER_IP:8080/100mb.bin
mtr --report --report-cycles 50 YOUR_SERVER_IP

Во время этого теста порт 8080 должен быть открыт в межсетевом экране. После завершения закройте его, удалите файл и остановите Python-сервер с помощью Ctrl+C. В выводе mtr посмотрите на столбец потерь (loss) в последней строке. Потери на промежуточном узле при отсутствии потерь на конечном — это нормально, так как маршрутизаторы обрабатывают ICMP-ответы (internet control message protocol), на которых базируется mtr, с низким приоритетом, и это не означает потерю вашего трафика. Потери в последней строке — реальны.

Повторите сетевой тест в часы пиковой нагрузки ваших пользователей. Одиночный замер в 02:00 покажет лишь состояние незагруженной сети.

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

Когда дешевый VPS — правильный выбор

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

Дешевый VPS подходит для среды разработки, CI-раннера, VPN-узла, сервера мониторинга, хранилища бэкапов или статического сайта. Все эти сервисы способны пережить кратковременную задержку. Дешевый вариант — плохой выбор, если критична задержка: страница оплаты, интерактивный API, игровой сервер или база данных, от которой зависят другие сервисы. Приведенный выше тест покажет, что именно вы приобрели, пока цена ошибки еще равна нулю.

FAQ

Что означает vCPU в дешевых предложениях VPS?

vCPU — это один виртуальный процессор, предоставляемый гостевой системе. Он соответствует потоку, который планировщик хоста запускает на физическом ядре при наличии возможности. Это право запрашивать процессорное время, а не зарезервированное оборудование, если только в описании не указано «dedicated core» или «dedicated vCPU». Хостеры продают больше vCPU, чем имеют физических ядер, и это соотношение редко публикуется, поэтому его нужно измерять. Запустите stress-ng --cpu 0 --timeout 300s и следите за столбцом st в vmstat 1. Значения steal, выраженные двузначными числами, означают, что вы ожидаете доступа к ядрам, которые заняты другими гостями.

Означает ли «безлимитный трафик» действительно отсутствие ограничений?

Нет, и лимит обычно скрыт в двух местах, не упомянутых в описании тарифа. Политика допустимого использования (AUP) устанавливает лимит «честного использования» в текстовом виде, а скорость порта задает жесткий предел в байтах. Порт 100 Mbit/s не может передать более примерно 32 ТБ за 30 дней даже при полной загрузке, поэтому уточняйте скорость порта и ищите в политике слова «fair use» и «sustained». Затем отслеживайте реальный объем передаваемых данных с помощью vnstat -m и сравнивайте его с допустимым значением.

Как узнать, действительно ли мой VPS использует NVMe?

Вы не можете подтвердить тип физического носителя изнутри гостевой системы, так как lsblk сообщает только то, что транслирует гипервизор: ROTA со значением 0 и пустую или общую строку модели. Вы можете измерить только поведение системы. Запустите fio с --direct=1 по пути --iodepth=1 и оцените задержку завершения операций на 99.00-м перцентиле. Локальный NVMe отвечает за сотни микросекунд, а сетевой том — за миллисекунды, даже если его последовательная пропускная способность выглядит внушительно. Повторите тест несколько раз в течение дня, так как производительность общего диска в 03:00 и в 20:00 различается.

Что нужно протестировать до истечения срока возврата средств?

Четыре вещи в следующем порядке. Что представляет собой сервер, согласно systemd-detect-virt, lscpu и free -h. Скорость одного потока, согласно sysbench cpu --cpu-max-prime=20000 --threads=1 run. Время steal при полной нагрузке, согласно stress-ng --cpu 0, отслеживаемое через vmstat 1. Задержка диска, измеренная fio с глубиной очереди 1. Затем измерьте сеть с машины, расположенной рядом с вашими пользователями, с помощью mtr и загрузки файла, который вы отдаете с этого сервера. На все это уйдет 30 минут, и выполнение этих тестов до миграции данных позволит использовать срок возврата средств в качестве рычага давления.