SSD Nodes Learn 🎉 VPS від $5.50/міс
Посібники Matt ConnorВід Matt Connor

Як читати пропозицію дешевого VPS перед оплатою

Розбір пропозиції VPS рядок за рядком: overselling vCPU, умови fair use для unlimited bandwidth, NVMe, ціна продовження та acceptance test на 30 хвилин.

Що не вказано в пропозиції дешевого VPS

Читайте пропозицію дешевого VPS у зворотному порядку, оскільки ціна — найменш корисне число на сторінці. Якість сервера визначають характеристики, яких немає в описі: коефіцієнт overselling, що стоїть за кількістю vCPU, умова fair use, прихована за словом "unlimited", ціна продовження після першого періоду, а також те, чи оплачуються резервні копії та IPv4-адреса окремо. У цьому посібнику ми розберемо опис рядок за рядком, а потім наведемо acceptance test, який можна виконати на сервері, поки ви ще можете попросити повернути кошти.

Це не означає, що низька ціна обов’язково є хитрощами. Старіше обладнання, щільніше розміщення віртуальних машин, self-service підтримка та менша надлишковість платформи — саме завдяки цьому низька ціна взагалі можлива. Ваше завдання — заздалегідь зрозуміти, на який компроміс ви погодилися, перш ніж це з’ясують ваші користувачі. Усе нижче виконується на Ubuntu 24.04 з пакетами, доступними в August 2026.

vCPU — це не ядро

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

Коефіцієнт overselling показує, скільки vCPU хост продає на одне фізичне ядро. За співвідношення 1:1 ядро належить лише вам. У дешевих тарифах коефіцієнт вищий, а його майже ніколи не публікують. Тому будь-який тариф, де не вказано "dedicated core" або "dedicated vCPU", слід вважати спільним. Спільні ресурси підходять для більшості завдань, оскільки більшість серверів більшу частину часу простоює. Проблеми починаються, коли ваш період високого навантаження збігається з таким самим періодом у всіх інших клієнтів.

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

Dedicated core усе одно може бути спільним в інших аспектах. Пропускна здатність пам’яті, кеш останнього рівня та шлях до сховища належать усьому хосту. "Dedicated vCPU" усуває найбільше джерело нестабільності. Але не усуває її повністю.

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

«Необмежена пропускна здатність» — це щонайменше чотири різні продукти

Трафік описують чотирма способами, і їх не можна взаємозамінювати.

  • Лімітований обсяг. В описі вказано певний обсяг, наприклад «2 TB на місяць». Важливо знати, що відбувається після його вичерпання: стягується плата за кожен додатковий TB чи швидкість знижується до дуже низького рівня до початку нового місяця. З’ясуйте це до того, як вам доведеться перевіряти на практиці.
  • План без обліку трафіку з умовою fair use. Трафік не підраховується, а acceptable use policy визначає обмеження словами, а не числами. Знайдіть у цьому документі слова «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 байтів — саме в цій одиниці хостери нараховують плату. Це розрахунок, а не вимірювання. Жоден реальний сервер не використовує порт на повній швидкості протягом усього місяця.

Другий показник визначає різницю між планами. Передавання одного TB займає приблизно 22.2 годин через порт 100 Mbit/s і 2.2 годин через гігабітний порт. Якщо ваш план відновлення полягає в тому, щоб «завантажити резервну копію та почати знову», це число визначає час відновлення.

У цьому рядку специфікації є ще дві важливі деталі. «1 Gbit/s shared» означає, що порт спільно використовується з іншими клієнтами, тому наведена вище межа є найкращим сценарієм, а не гарантією. Деякі хостери також нараховують плату за 95-м перцентилем виміряної швидкості, а не за загальним обсягом. За такого підходу стабільне навантаження коштує значно дорожче, ніж короткочасні піки.

Незалежно від умов плану вимірюйте власне використання. 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 зазвичай порожній для диска virtio, наприклад /dev/vda, і містить загальне значення QEMU HARDDISK для диска, підключеного через SCSI. Ви працюєте з віртуальним диском, тому його мітка нічого не доводить.

Властивість, яку варто перевіряти, — це затримка. Важливе розділення проходить між локальним 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 достатньо для вихідного трафіку та майже ні для чого іншого.
  • Резервні копії. Автоматичні резервні копії зазвичай оплачуються додатково. Знімки часто безкоштовні, але знімок зберігається в тій самій інфраструктурі, що й диск, з якого його створено. Тому він захищає від власних помилок, але не від втрати хоста. Незалежно від умов плану зберігайте одну копію за межами сервера.
  • Захист від DDoS. У разі об’ємної атаки (distributed denial of service) багато хостинг-провайдерів застосовують null routing до вашої IP-адреси на фіксований період. Сервер залишається працездатним. Просто він стає недоступним з інтернету. Уточніть поріг спрацювання та тривалість дії null route.
  • Обсяг підтримки. У плані без керування ви є системним адміністратором, а відповідальність хостинг-провайдера обмежується гіпервізором і мережею. Це найбільша фактична різниця у вартості між двома планами з однаковими характеристиками.
  • Ліцензії та панелі керування. Панель керування, комерційна операційна система або поштовий додаток можуть щомісяця коштувати дорожче, ніж сам сервер.

Який тип віртуалізації ви купуєте?

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-адреси, і чи повертається річна передплата пропорційно невикористаному періоду. Потім установіть у календарі нагадування за тиждень до дати продовження, оскільки найдешевше відмовитися від послуги до виставлення рахунку.

Пізніший перехід також не буде безкоштовним. Перенесення кількох сотень гігабайтів даних, відновлення конфігурації, очікування завершення дії значень time to live у DNS (domain name system) і, для поштового сервера, відновлення репутації IP-адреси можуть зайняти цілі вихідні. Врахуйте ці витрати часу, коли економія здається переконливою. Скільки насправді коштує VPS за рік — це показник для порівняння, а не ціна першого місяця.

Приймальне тестування за тридцять хвилин

Виконайте це на новому сервері до міграції будь-яких даних і поки ще можна скористатися періодом повернення коштів. Спочатку захистіть сервер: у розділі перші десять хвилин на новому VPS описано налаштування облікового запису користувача, ключів і firewall. Потім установіть потрібні інструменти.

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

Ви маєте побачити тип віртуалізації, модель CPU і обсяг пам’яті, що відрізняється від придбаних значень не більше ніж на кілька відсотків. 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 запускає по одному worker на кожен доступний CPU. Стежте за стовпцем st у vmstat і за %steal у mpstat. Поодинокі однозначні значення на спільному тарифі є нормальними. Значення steal у двозначному діапазоні протягом кількох хвилин означає, що фізичні ядра перевантажені, тому ваші завдання стоять у черзі за завданнями іншого орендаря. Повторно виконайте sysbench під час навантаження: різке падіння результату для одного потоку означає, що ваші vCPU конкурують між собою. Зазвичай це означає, що вони є sibling-потоками одного ядра, а не окремими ядрами. Низький результат за майже нульового steal означає інший сценарій: host застосовує обмеження CPU, яке безпосередньо з guest побачити неможливо.

Перевірка 3: як диск працює за queue depth 1?

Виконайте дві команди fio з розділу про NVMe і збережіть обидва результати: latency на 99-му перцентилі за queue depth 1 та IOPS за depth 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 — це значення, яке часто наводять в описі тарифу, але найменш корисний результат, який можна отримати. Послідовна передача даних не є типовим навантаженням для бази даних або зайнятого вебзастосунку. За потреби зберіть цей показник для порівняння. Основне рішення приймайте за latency.

Перевірка 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 має бути відкритий у firewall. Після цього закрийте його, видаліть файл і зупиніть Python server за допомогою Ctrl+C. У виводі mtr перегляньте стовпець втрат у фінальному рядку. Втрати на проміжному вузлі за відсутності втрат на вузлі призначення є нормальними. Маршрутизатори обробляють відповіді ICMP (internet control message protocol), які підраховує mtr, із низьким пріоритетом. Це не означає втрати вашого мережевого трафіку. Втрати в останньому рядку є реальними.

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

Збережіть усі чотири результати у файлі із зазначенням дати, а через місяць виконайте перевірки повторно. Якщо тариф працював нормально в перший день, але сповільнився на шостому тижні, це означає, що host заповнився. Дані за перший день допоможуть встановити це, а не лише припускати.

Коли дешевий VPS є правильним вибором

Низька ціна має реальні переваги та реальні обмеження. Старіші CPU, вищий коефіцієнт overselling, повільніше мережеве сховище, підтримка за принципом self-service і менша резервованість — саме це зменшує ціну. Вибір має відповідати завданню.

Дешевий VPS підходить для development box, CI runner, VPN endpoint, monitoring node, backup target або static site. Усі вони можуть пережити повільну хвилину. Дешевий VPS — невигідний компроміс там, де latency є частиною продукту: для checkout page, інтерактивного API, game server або бази даних, на яку очікує інший сервіс. Наведений вище тест показує, що саме ви придбали, і робить це доти, доки відповідь ще нічого не коштує.

FAQ

Що означає vCPU у пропозиції дешевого VPS?

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

Чи справді «unlimited bandwidth» означає необмежений трафік?

Ні. Обмеження зазвичай визначаються у двох місцях поза описом тарифу. Політика прийнятного використання встановлює обмеження fair use у текстовій формі, а швидкість порту задає жорстку межу в байтах. Порт зі швидкістю 100 Mbit/s не може передати більше ніж приблизно 32 TB за 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 з queue depth 1. Потім виміряйте мережу з машини, розташованої поблизу ваших користувачів, за допомогою mtr і завантаження файлу, який ви роздаєте із сервера. Тридцяти хвилин достатньо для всіх перевірок. Виконайте їх до міграції будь-яких даних, щоб зберегти можливість скористатися періодом повернення коштів.