SSD Nodes Learn 🎉 VPS od $5.50/mies.
Przewodniki Matt ConnorAutor: Matt Connor

Jak czytać oferty tanich VPS i nie przepłacić

Analiza ukrytych kosztów tanich VPS. Sprawdź, jak interpretować parametry vCPU, klauzule fair use oraz ceny odnowienia. Poznaj test akceptacyjny dla serwerów z Ubuntu 24.04.

Czego nie ujawniają tanie oferty VPS

Tanie oferty VPS należy czytać od końca, ponieważ cena jest najmniej istotną liczbą na stronie. O przydatności serwera decyduje to, czego w ofercie nie wydrukowano: współczynnik oversellingu dla liczby vCPU, klauzula fair use ukryta pod słowem „unlimited”, cena odnowienia po pierwszym okresie oraz to, czy kopie zapasowe i adres IPv4 są płatne dodatkowo. Niniejszy przewodnik analizuje ofertę linijka po linijce, a następnie przedstawia test akceptacyjny, który należy wykonać na serwerze, dopóki możliwe jest jeszcze żądanie zwrotu pieniędzy.

Niska cena nie oznacza oszustwa. Starszy sprzęt, większe zagęszczenie maszyn, wsparcie samoobsługowe i mniejsza redundancja platformy to czynniki umożliwiające obniżenie kosztów. Zadaniem administratora jest świadomość zaakceptowanych kompromisów, zanim odkryją je użytkownicy. Wszystkie poniższe instrukcje działają w systemie Ubuntu 24.04 z pakietami dostępnymi w sierpniu 2026 roku.

vCPU to nie rdzeń

vCPU to slot szeregowania, a nie fizyczny krzem. W KVM (kernel-based virtual machine) każdy vCPU jest wątkiem na hoście, a harmonogram hosta przydziela ten wątek do rdzenia fizycznego, gdy nadejdzie jego kolej. Host może sprzedać cztery vCPU na jeden rdzeń fizyczny, a każdy gość nadal raportuje pełną liczbę w nproc. Liczba w ofercie to górny limit tego, o co można wnioskować, i nie mówi nic o tym, co jest faktycznie zarezerwowane.

Współczynnik oversell określa, ile vCPU host sprzedaje na jeden rdzeń fizyczny. Przy stosunku 1:1 rdzeń jest dostępny wyłącznie dla użytkownika. Tanie plany mają wyższe współczynniki, a wartość ta prawie nigdy nie jest publikowana, więc każdą ofertę, która nie zawiera zapisu "dedicated core" lub "dedicated vCPU", należy traktować jako współdzieloną. Współdzielenie sprawdza się w większości zadań, ponieważ większość serwerów przez większość czasu pozostaje bezczynna. Przestaje działać, gdy godzina szczytowego obciążenia użytkownika pokrywa się z godzinami szczytu innych klientów.

Efekt ten można zmierzyć z wnętrza systemu gościa. Gdy vCPU jest gotowe do pracy, a host przydziela rdzeń fizyczny innemu gościowi, czas oczekiwania jest liczony jako steal time: kolumna st w vmstat oraz %st w top. Steal time to sposób, w jaki hałaśliwy sąsiad objawia się w metrykach użytkownika i jest to najważniejsza liczba w tym przewodniku, ponieważ oferta nie może jej sfałszować.

Dedykowany rdzeń nadal jest współdzielony w innych aspektach. Przepustowość pamięci, pamięć podręczna ostatniego poziomu (LLC) oraz ścieżka dostępu do pamięci masowej należą do całego hosta. "Dedykowany vCPU" eliminuje największe źródło zmienności. Nie eliminuje go jednak całkowicie.

Należy również sprawdzić model procesora za pomocą lscpu. Dwa plany mogą oferować "4 vCPU", podczas gdy ich wydajność jednowątkowa różni się dwukrotnie, ponieważ jeden z hostów korzysta z procesorów starszych o kilka generacji. Stary sprzęt w niskiej cenie to uczciwa wymiana w przypadku agenta budującego, ale słaba w przypadku strony płatności.

"Nielimitowana przepustowość" to co najmniej cztery różne produkty

Ruch sieciowy jest opisywany na cztery sposoby, które nie są zamienne.

  • Limitowany przydział danych. Oferta podaje konkretną wartość, na przykład "2 TB miesięcznie". Kluczowe jest to, co dzieje się po jego przekroczeniu: naliczenie opłaty za każdy dodatkowy TB lub drastyczne ograniczenie prędkości do początku kolejnego miesiąca rozliczeniowego. Należy ustalić, który scenariusz ma miejsce, zanim zajdzie taka potrzeba.
  • Plan nielimitowany z klauzulą uczciwego użytkowania (fair use). Ruch nie jest liczony, a polityka dopuszczalnego użytkowania definiuje limity słownie, a nie liczbowo. Warto przeszukać dokument pod kątem haseł "fair use", "sustained", "excessive" oraz "abuse".
  • Ograniczenie prędkości portu. Port 100 Mbit/s stanowi fizyczną barierę, niezależnie od zapisów w polityce ruchu.
  • Połączenie dwóch powyższych: nielimitowany ruch na wolnym porcie. Jest to najczęstszy model w tanich planach; oferta jest uczciwa, o ile sprawdzono prędkość portu.
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
  }
]

Prędkość portu to sztywny limit, a obliczenia są proste. 100 Mbit/s to 12,5 megabajta na sekundę, więc 30 dni pracy portu z pełną prędkością pozwala przesłać około 32 TB. Te same 30 dni na porcie 1 Gbit/s dają 324 TB. TB oznacza tutaj 10^12 bajtów, czyli jednostkę stosowaną przez dostawców do rozliczeń. Jest to wynik matematyczny, a nie pomiar, ponieważ żaden serwer nie pracuje z pełnym obciążeniem portu przez cały miesiąc.

Druga kolumna decyduje o wyborze planu. Przesłanie jednego terabajta zajmuje około 22.2 godzin na porcie 100 Mbit/s oraz 2.2 godzin na porcie gigabitowym. Jeśli plan odzyskiwania danych zakłada pobranie kopii zapasowej i ponowne uruchomienie usługi, ta liczba określa czas przywracania.

W specyfikacji ukryte są jeszcze dwa szczegóły. "1 Gbit/s shared" oznacza, że port jest współdzielony z innymi użytkownikami, więc powyższy limit jest wartością optymalną, a nie gwarantowaną. Niektórzy dostawcy rozliczają ruch na podstawie 95. percentyla próbkowanego natężenia zamiast całkowitej objętości, co sprawia, że stałe obciążenie jest znacznie tańsze niż skokowe.

Niezależnie od zapisów w planie, należy samodzielnie mierzyć zużycie. Narzędzie vnstat odczytuje liczniki interfejsu i przechowuje historię.

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

Bezpośrednio po instalacji vnstat wyświetla Not enough data available yet., ponieważ baza danych nie zawiera jeszcze próbek. Należy sprawdzić ponownie następnego dnia, a vnstat -m poda miesięczną sumę, którą można porównać z opłacanym limitem.

Czy deklaracja NVMe jest prawdziwa i jak ją zweryfikować?

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

Wartość ROTA równa 0 oznacza, że system gościa otrzymał informację, iż urządzenie nie jest talerzowe. Wartość ta pochodzi z hypervisora, więc opisuje to, co deklaruje host, a nie fizyczny nośnik. Kolumna MODEL jest zazwyczaj pusta dla dysków typu virtio, takich jak /dev/vda, a dla urządzeń SCSI wyświetla ogólne oznaczenie QEMU HARDDISK. Analizowany dysk jest wirtualny, więc jego etykieta nie stanowi dowodu.

Właściwością wartą sprawdzenia jest opóźnienie (latency), a kluczowy podział przebiega między lokalnym NVMe a wolumenem sieciowym. Wolumen sieciowy może wykazywać dużą przepustowość sekwencyjną, a mimo to działać wolno, ponieważ przepustowość mierzy się przy wielu żądaniach w kolejce, podczas gdy baza danych oczekuje na pojedyncze, małe operacje zapisu. Należy zmierzyć opóźnienie przy głębokości kolejki 1, a następnie IOPS (operacje wejścia/wyjścia na sekundę) przy większej kolejce.

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

Należy odczytać blok clat percentiles, a w szczególności linię 99.00th. Jest to opóźnienie zakończenia operacji, jakiego doświadczył najwolniejszy jeden procent żądań; to właśnie ten parametr użytkownik odczuwa jako zacięcie. Orientacyjnie, lokalny dysk NVMe przy głębokości kolejki 1 odpowiada w czasie liczonym w setkach mikrosekund, podczas gdy wolumen sieciowy odpowiada w milisekundach. Należy porównać własne dwa uruchomienia testu zamiast polegać na pojedynczej publikowanej wartości. Testy warto powtórzyć trzykrotnie w ciągu dnia, ponieważ dysk współdzielony z innymi użytkownikami zachowuje się inaczej o godzinie 03:00, a inaczej o 20:00.

Narzędzie fio najpierw tworzy plik o rozmiarze 1 GB, dlatego należy zapewnić odpowiednią ilość miejsca na dysku. Należy pamiętać, że test zużywa limit IOPS przewidziany w planie taryfowym. Jeśli wymagany jest tylko szybki odczyt, ioping -c 20 . wyświetli opóźnienie w jednej linii. Benchmark jest wartościowy tylko wtedy, gdy można go powtórzyć, dlatego należy zachować dokładne polecenia oraz wyniki wraz z datą wykonania.

Co jest wliczone w cenę, a za co trzeba dopłacić

  • IPv4. Jeden adres jest zazwyczaj wliczony w cenę. Niektóre tanie plany oferują adres współdzielony za NAT (network address translation) z kilkoma przekierowanymi portami, co uniemożliwia uruchomienie własnych usług na porcie 443. Należy to sprawdzić za pomocą ip -4 addr show scope global oraz curl -4 https://icanhazip.com. Dwie różne odpowiedzi oznaczają pracę za NAT.
  • IPv6. Przydzielona podsieć /64 zapewnia adresy dla kontenerów oraz wszystkiego, co ma być dostępne z zewnątrz. Pojedynczy adres /128 wystarcza jedynie do ruchu wychodzącego.
  • Kopie zapasowe. Automatyczne kopie zapasowe są zazwyczaj płatnym dodatkiem. Migawki (snapshots) często są darmowe, jednak przechowuje się je na tej samej infrastrukturze co kopiowany dysk. Chronią one przed błędami użytkownika, a nie przed awarią hosta. Niezależnie od planu, zawsze należy przechowywać jedną kopię danych poza serwerem.
  • Obsługa DDoS. Wielu dostawców reaguje na atak wolumetryczny (distributed denial of service) poprzez null routing adresu IP na określony czas. Serwer pozostaje sprawny, ale staje się niedostępny z Internetu. Należy zapytać o próg aktywacji tej ochrony oraz czas trwania blokady.
  • Zakres wsparcia. W planie unmanaged administratorem systemu jesteś Ty, a odpowiedzialność dostawcy kończy się na poziomie hypervisora i sieci. Jest to największa realna różnica w kosztach między dwoma planami o identycznej specyfikacji.
  • Licencje i panele. Panel sterowania, komercyjny system operacyjny lub dodatek pocztowy mogą kosztować miesięcznie więcej niż sam serwer.

Jaki typ wirtualizacji wybrać?

systemd-detect-virt

kvm lub qemu oznacza pełną wirtualizację: własne jądro systemu oraz dowolne moduły ładowane do niego. lxc, lxc-libvirt lub openvz oznacza kontener współdzielący jądro hosta. none oznacza serwer dedykowany (bare metal).

Różnica staje się istotna w przypadku współdzielonego jądra. sudo modprobe wireguard kończy się niepowodzeniem, a ip link add dev wg0 type wireguard zwraca RTNETLINK answers: Operation not supported, ponieważ kontener nie może załadować modułu jądra, którego nie załadował host. free -h może raportować pamięć hosta zamiast przydzielonej, jeśli brakuje lxcfs, przez co monitoring wskazuje wartości niedotyczące danego serwera. Swap jest często współdzielony z innymi kontenerami, a uruchamianie maszyn wirtualnych wewnątrz VPS jest całkowicie niemożliwe. Plany oparte na kontenerach są tańsze nie bez powodu, jednak w przypadku statycznych stron lub małych aplikacji pozostają właściwym wyborem.

Jaka jest cena odnowienia?

Reklamowana cena często obejmuje tylko pierwszy okres rozliczeniowy. Należy szukać informacji o cenie odnowienia na stronie zamówienia oraz sprawdzić okres obowiązywania zniżki. Zniżka obowiązująca przez rok oraz zniżka gwarantowana na cały czas trwania planu to różne produkty, mimo że na pierwszej fakturze wyglądają podobnie.

Z taką samą uwagą należy zapoznać się z warunkami zwrotu środków. Trzeba sprawdzić, jak długo trwa okres gwarancji zwrotu pieniędzy, czy liczony jest od momentu złożenia zamówienia czy od udostępnienia usługi, czy dodatki takie jak adresy IP podlegają zwrotowi oraz czy roczna przedpłata jest zwracana proporcjonalnie. Następnie warto ustawić przypomnienie w kalendarzu na tydzień przed datą odnowienia, ponieważ najtańszy moment na rezygnację przypada przed wystawieniem faktury.

Późniejsza zmiana dostawcy również nie jest darmowa. Przeniesienie kilkuset gigabajtów danych, odtworzenie konfiguracji, oczekiwanie na wygaśnięcie wartości TTL (time to live) w systemie DNS oraz, w przypadku serwera pocztowego, odbudowa reputacji adresu IP, zajmuje cały weekend. Należy uwzględnić ten czas, gdy oszczędność wydaje się przekonująca. Ile faktycznie kosztuje VPS w skali roku to wartość, którą należy porównywać, a nie koszt pierwszego miesiąca.

Półgodzinny test akceptacyjny

Uruchom ten test na nowym serwerze przed migracją jakichkolwiek danych i dopóki obowiązuje okres zwrotu kosztów. Najpierw zabezpiecz system: pierwsze dziesięć minut na nowym VPS opisuje konfigurację konta użytkownika, kluczy oraz firewalla. Następnie zainstaluj niezbędne narzędzia.

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

Check 1: co faktycznie otrzymano?

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

Powinieneś zobaczyć typ wirtualizacji, model procesora oraz ilość pamięci RAM zbliżoną do wartości z oferty. Jeśli free -h raportuje znacznie więcej pamięci RAM, niż wynika z planu, oznacza to kontener bez lxcfs, a nie dodatkowy zasób. Publiczny adres IP z curl, który nie pojawia się w ip -4 addr, oznacza, że adres IPv4 jest współdzielony.

Check 2: jaka jest wydajność jednego wątku i poziom steal pod obciążeniem?

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

Zanotuj wynik events per second. Wydajność jednego wątku decyduje o szybkości renderowania stron i czasie budowania oprogramowania; jest to parametr, w którym tanie plany różnią się najbardziej. Teraz obciąż wszystkie vCPU i obserwuj, co faktycznie przydziela scheduler.

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

--cpu 0 uruchamia jeden proces roboczy na każdy dostępny procesor. Obserwuj kolumnę st w vmstat oraz %steal w mpstat. Sporadyczne wartości jednocyfrowe w planach współdzielonych są normalne. Wartości steal utrzymujące się na poziomie dwucyfrowym przez kilka minut oznaczają, że fizyczne rdzenie są przeciążone, a Twoje zadania czekają w kolejce za procesami innego użytkownika. Uruchom ponownie sysbench podczas obciążenia: spadek wyniku dla jednego wątku oznacza, że vCPU rywalizują o zasoby, co zazwyczaj wskazuje na współdzielenie tego samego rdzenia fizycznego przez wątki (sibling threads). Niski wynik przy niemal zerowym steal to drugi przypadek: limit procesora nałożony przez hosta, którego nie widać bezpośrednio z poziomu systemu gościa.

Check 3: jak zachowuje się dysk przy głębokości kolejki 1?

Uruchom dwa polecenia fio z sekcji NVMe i zachowaj oba wyniki: opóźnienie na poziomie 99. percentyla przy głębokości kolejki 1 oraz IOPS przy głębokości 32. Następnie sprawdź zapis, ponieważ wiele wolumenów działa znacznie wolniej w tym kierunku.

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

Wartość sekwencyjna dd to liczba często podawana w ofertach, ale jest ona najmniej użyteczna, ponieważ bazy danych i aktywne aplikacje webowe rzadko wykonują operacje sekwencyjne. Zbierz te dane, jeśli chcesz porównać ofertę. Skup się na opóźnieniach.

Check 4: jak wygląda sieć z perspektywy użytkowników?

Najpierw pobierz duży plik na serwer 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

Testuje to tylko jedną ścieżkę do serwera. Kluczowy jest kierunek, z którego korzystają użytkownicy, więc udostępnij plik i pobierz go z maszyny znajdującej się w ich pobliżu.

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

Następnie, z laptopa lub serwera blisko Twoich odbiorców:

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

Podczas testu port 8080 musi być otwarty w firewallu. Po zakończeniu zamknij go, usuń plik i zatrzymaj serwer Python za pomocą Ctrl+C. W danych wyjściowych mtr sprawdź kolumnę loss w ostatnim wierszu. Utrata pakietów na pośrednim węźle przy braku strat w miejscu docelowym jest normalna, ponieważ routery traktują odpowiedzi ICMP (internet control message protocol), na których opiera się mtr, jako ruch o niskim priorytecie. Straty w ostatnim wierszu są realne.

Powtórz test sieci w godzinach szczytu Twoich użytkowników. Pojedynczy pomiar o 02:00 pokazuje jedynie stan sieci w czasie niskiego obciążenia.

Zapisz wszystkie cztery wyniki w pliku z datą, a następnie powtórz testy po miesiącu. Plan, który działał poprawnie pierwszego dnia, a zwolnił w szóstym tygodniu, oznacza, że host został przeciążony. Posiadanie danych z pierwszego dnia pozwala odróżnić wiedzę od domysłów.

Kiedy tani VPS jest właściwym wyborem

Niska cena oznacza konkretne kompromisy techniczne. Starsze procesory, wyższy współczynnik współdzielenia zasobów (oversell ratio), wolniejsza pamięć masowa sieciowa, wsparcie techniczne typu self-service oraz ograniczona redundancja to czynniki wpływające na niski koszt. Należy dopasować je do charakteru zadania.

Tanie rozwiązanie sprawdza się w przypadku środowisk programistycznych, runnerów CI, punktów końcowych VPN, węzłów monitorujących, celów kopii zapasowych czy statycznych stron WWW. Wszystkie te usługi są odporne na chwilowe spadki wydajności. Tanie rozwiązanie jest niekorzystnym wyborem, gdy produktem jest niska latencja: strony płatności, interaktywne API, serwery gier czy bazy danych, na których polegają inne usługi. Powyższy test pozwala określić klasę zakupionego zasobu, zanim wystąpienie problemów zacznie generować realne straty.

FAQ

Co oznacza vCPU w taniej ofercie VPS?

vCPU to jeden wirtualny procesor udostępniony systemowi gościa, który jest mapowany na wątek obsługiwany przez harmonogram hosta na fizycznym rdzeniu, gdy jest to możliwe. Jest to przydział czasu procesora, a nie zarezerwowany sprzęt, chyba że oferta wyraźnie wskazuje na "dedicated core" lub "dedicated vCPU". Dostawcy sprzedają więcej vCPU niż posiadają fizycznych rdzeni, a ten stosunek rzadko jest publikowany, dlatego należy go zmierzyć. Uruchom stress-ng --cpu 0 --timeout 300s i obserwuj kolumnę st w vmstat 1. Wartość steal w dwucyfrowym zakresie oznacza oczekiwanie na rdzenie zajęte przez innych gości.

Czy "nielimitowany transfer" naprawdę oznacza brak limitów?

Nie, a limit zazwyczaj znajduje się w dwóch miejscach poza opisem planu. Polityka dopuszczalnego użytkowania (AUP) określa limit sprawiedliwego użytkowania w formie opisowej, a prędkość portu wyznacza twardy sufit w bajtach. Port 100 Mbit/s nie jest w stanie przesłać więcej niż około 32 TB w ciągu 30 dni nawet przy pełnym obciążeniu, dlatego należy sprawdzić prędkość portu i przeczytać politykę pod kątem fraz "fair use" oraz "sustained". Następnie należy monitorować faktyczny ruch za pomocą vnstat -m i porównać go z przydziałem.

Jak sprawdzić, czy mój VPS faktycznie korzysta z NVMe?

Nie można potwierdzić fizycznego nośnika z poziomu systemu gościa, ponieważ lsblk raportuje jedynie to, co deklaruje hypervisor: ROTA o wartości 0 oraz pusty lub generyczny ciąg modelu. Można natomiast zmierzyć zachowanie systemu. Uruchom fio z --direct=1 przy --iodepth=1 i odczytaj 99.00 percentyl opóźnienia zakończenia operacji. Lokalne NVMe odpowiada w setkach mikrosekund, podczas gdy wolumen sieciowy odpowiada w milisekundach, nawet jeśli jego przepustowość sekwencyjna wygląda imponująco. Test należy powtórzyć kilkukrotnie w ciągu dnia, ponieważ współdzielony dysk zachowuje się inaczej o 03:00 i o 20:00.

Co należy przetestować przed upływem okresu zwrotu środków?

Cztery elementy, w tej kolejności. Czym faktycznie jest serwer, sprawdzając systemd-detect-virt, lscpu oraz free -h. Szybkość pojedynczego wątku, sprawdzając sysbench cpu --cpu-max-prime=20000 --threads=1 run. Czas steal przy pełnym obciążeniu, sprawdzając stress-ng --cpu 0 i obserwując vmstat 1. Opóźnienie dysku, sprawdzając fio przy głębokości kolejki 1. Następnie należy zmierzyć sieć z maszyny znajdującej się blisko użytkowników końcowych za pomocą mtr oraz pobierania pliku serwowanego z VPS. Trzydzieści minut wystarczy na przeprowadzenie wszystkich testów, a wykonanie ich przed migracją danych pozwala zachować prawo do zwrotu środków jako kartę przetargową.