SSD Nodes Learn 🎉 VPS từ $5.50/tháng
Hướng dẫn Matt ConnorBởi Matt Connor

Cách đọc thông tin VPS giá rẻ trước khi mua

Phân tích từng dòng VPS giá rẻ: oversell vCPU, “unlimited” kèm fair use, NVMe, giá gia hạn và bài test nghiệm thu 30 phút để yêu cầu hoàn tiền.

Một gói VPS giá rẻ thường không nói rõ điều gì

Hãy đọc một gói VPS giá rẻ theo hướng ngược lại, vì giá là con số ít hữu ích nhất trên trang đó. Chất lượng máy chủ phụ thuộc vào những phần mà thông tin chào bán không nêu: tỷ lệ oversell phía sau số vCPU, điều khoản fair use phía sau từ “unlimited”, giá gia hạn sau kỳ đầu tiên, và việc backup cùng địa chỉ IPv4 có bị tính thêm phí hay không. Hướng dẫn này phân tích từng dòng trong thông tin chào bán, sau đó đưa ra bài kiểm tra nghiệm thu để bạn chạy trên máy chủ khi vẫn còn có thể yêu cầu hoàn tiền.

Điều này không có nghĩa giá thấp luôn là một mánh khóe. Phần cứng cũ hơn, mật độ máy chủ cao hơn, hỗ trợ self-service và mức dự phòng nền tảng thấp hơn là những yếu tố giúp mức giá thấp trở nên khả thi. Bạn cần biết mình đã chấp nhận đánh đổi điều gì trước khi người dùng phát hiện ra điều đó thay bạn. Toàn bộ nội dung dưới đây chạy trên Ubuntu 24.04 với các package có sẵn vào tháng 8 năm 2026.

vCPU không phải là một core

vCPU là một slot lập lịch, không phải một phần silicon. Trên KVM (kernel-based virtual machine), mỗi vCPU là một thread trên host. Scheduler của host sẽ đưa thread đó lên một core vật lý khi đến lượt. Một host có thể bán 4 vCPU trên 1 core vật lý, trong khi mỗi guest vẫn báo đủ số lượng của mình trong nproc. Con số trong listing chỉ là giới hạn tối đa bạn có thể yêu cầu. Nó không cho biết tài nguyên nào được giữ riêng cho bạn.

Tỷ lệ oversell là số vCPU mà host bán trên mỗi core vật lý. Ở tỷ lệ 1:1, core đó chỉ dành cho bạn. Các gói giá rẻ thường có tỷ lệ cao hơn. Tỷ lệ này gần như không bao giờ được công bố, nên hãy xem mọi listing không ghi rõ "dedicated core" hoặc "dedicated vCPU" là tài nguyên dùng chung. Shared phù hợp với hầu hết công việc, vì phần lớn server thường idle. Nó không còn phù hợp khi giờ cao điểm của bạn cũng là giờ cao điểm của mọi người khác.

Bạn có thể đo tác động này từ bên trong guest. Khi vCPU của bạn đã sẵn sàng chạy nhưng host cấp core vật lý cho guest khác, thời gian chờ đó được tính là steal time: cột st trong vmstat%st trong top. Steal time cho thấy noisy neighbour trong chính metric của bạn, và đây là con số hữu ích nhất trong hướng dẫn này, vì listing không thể làm giả nó.

Một dedicated core vẫn dùng chung theo những cách khác. Memory bandwidth, last level cache và đường dẫn storage thuộc về toàn bộ host. "Dedicated vCPU" loại bỏ nguồn biến động lớn nhất. Nó không loại bỏ hoàn toàn mọi biến động.

Hãy kiểm tra cả CPU model bằng lscpu. Hai gói đều có thể ghi "4 vCPU", nhưng tốc độ single thread có thể chênh lệch gấp đôi vì một host dùng CPU cũ hơn vài thế hệ. Silicon cũ với giá thấp là lựa chọn hợp lý cho build agent, nhưng không phù hợp cho trang checkout.

“Băng thông không giới hạn” thực tế là ít nhất 4 loại dịch vụ khác nhau

Lưu lượng thường được mô tả theo 4 cách, và chúng không thể thay thế cho nhau.

  • Hạn mức có tính lưu lượng. Gói dịch vụ nêu một con số, chẳng hạn “2 TB mỗi tháng”. Điều cần biết là chuyện gì xảy ra sau khi vượt hạn mức: tính phí cho mỗi TB bổ sung, hoặc giảm tốc độ xuống mức rất thấp cho đến khi sang tháng mới. Hãy tìm hiểu trước khi bạn cần biết.
  • Gói không tính lưu lượng kèm điều khoản sử dụng hợp lý. Lưu lượng không bị đếm, còn chính sách sử dụng chấp nhận được quy định giới hạn bằng câu chữ thay vì con số. Hãy tìm trong tài liệu đó các cụm “fair use”, “sustained”, “excessive” và “abuse”.
  • Giới hạn tốc độ cổng. Cổng 100 Mbit/s giới hạn bạn theo tốc độ vật lý, bất kể chính sách lưu lượng quy định gì.
  • Kết hợp 2 loại cuối: lưu lượng không tính phí trên một cổng có tốc độ thấp. Đây là dạng phổ biến nhất ở các gói giá rẻ, và là một ưu đãi rõ ràng miễn là bạn đọc tốc độ cổng.
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
  }
]

Tốc độ cổng là giới hạn cứng, và phép tính rất đơn giản. 100 Mbit/s tương đương 12.5 megabyte mỗi giây, nên 30 ngày chạy hết tốc độ trên cổng đó truyền được khoảng 32 TB. Cùng 30 ngày trên cổng 1 Gbit/s truyền được 324 TB. TB ở đây là 10^12 byte, tức đơn vị mà các host dùng để tính phí. Đây là phép tính lý thuyết, không phải số đo thực tế; không có server thực nào chạy cổng hết công suất trong cả tháng.

Cột thứ 2 mới là yếu tố làm các gói dịch vụ khác nhau. Truyền 1 terabyte mất khoảng 22.2 giờ trên cổng 100 Mbit/s và 2.2 giờ trên cổng gigabit. Nếu kế hoạch khôi phục của bạn là “tải backup xuống rồi khởi động lại”, con số đó chính là thời gian khôi phục.

Có thêm 2 chi tiết thường bị bỏ qua trong dòng thông số này. “1 Gbit/s shared” nghĩa là cổng được dùng chung với các guest khác, nên giới hạn tính ở trên chỉ là trường hợp tốt nhất, không phải cam kết. Một số host cũng tính phí lưu lượng theo mức bách phân vị thứ 95 của tốc độ được lấy mẫu thay vì tổng dung lượng, nên tải ổn định có thể rẻ hơn nhiều so với tải tăng giảm đột ngột.

Dù gói dịch vụ quy định thế nào, hãy đo mức sử dụng của chính bạn. vnstat đọc bộ đếm của interface và lưu lịch sử.

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

Ngay sau khi cài đặt, vnstat hiển thị Not enough data available yet. vì database chưa có mẫu dữ liệu. Hãy kiểm tra lại vào ngày hôm sau; vnstat -m sẽ cho bạn tổng lưu lượng theo tháng để so sánh với hạn mức mà bạn đang trả tiền.

Giá trị NVMe có đúng không, và bạn có thể kiểm tra không?

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

ROTA bằng 0 nghĩa là guest được thông báo rằng thiết bị không quay. Giá trị này đến từ hypervisor, nên mô tả thông tin host quảng bá chứ không phải loại media bên dưới. Cột MODEL thường trống với disk virtio như /dev/vda, và hiển thị QEMU HARDDISK chung cho disk gắn qua SCSI. Bạn đang xem một virtual disk, nên nhãn của nó không chứng minh được điều gì.

Thuộc tính đáng kiểm tra là latency. Khác biệt thực sự nằm giữa NVMe cục bộ và volume gắn qua network. Network volume có thể báo throughput tuần tự cao nhưng vẫn phản hồi chậm, vì throughput được đo với nhiều request đang chờ xử lý, trong khi database phải chờ từng lần ghi nhỏ. Đo ở queue depth 1 để kiểm tra latency, sau đó đo ở queue sâu hơn để kiểm tra IOPS (input/output operations per second).

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

Đọc block clat percentiles, cụ thể là dòng 99.00th. Đây là completion latency mà 1% request chậm nhất của bạn gặp phải. Người dùng sẽ cảm nhận giá trị này như một lần treo. Theo mức tham khảo, NVMe cục bộ ở queue depth 1 phản hồi trong vài trăm microsecond, còn volume gắn qua network phản hồi trong vài millisecond. Hãy so sánh hai lần chạy của chính bạn thay vì tin vào một con số được công bố, và chạy cả cặp ba lần trong ngày, vì disk dùng chung với tenant khác sẽ hoạt động khác nhau lúc 03:00 và 20:00.

fio tạo file 1 GB trước, nên hãy chừa đủ dung lượng trên disk. Nhớ rằng bài test sẽ sử dụng hết hạn mức IOPS mà plan áp dụng. Khi chỉ cần đọc nhanh, ioping -c 20 . cho bạn latency trên một dòng. Benchmark chỉ có giá trị khi bạn có thể lặp lại nó, nên lưu lại chính xác các dòng lệnh và output kèm ngày chạy.

Nội dung bao gồm và các khoản tính thêm

  • IPv4. Thông thường đã bao gồm một địa chỉ. Một số gói giá rẻ cấp cho bạn địa chỉ dùng chung phía sau NAT (network address translation), cùng một vài cổng được forward. Điều này có nghĩa là bạn không thể tự chạy dịch vụ trên cổng 443. Kiểm tra bằng ip -4 addr show scope globalcurl -4 https://icanhazip.com. Nếu nhận được hai câu trả lời khác nhau, bạn đang ở phía sau NAT.
  • IPv6. Một dải /64 được route đến máy cho bạn các địa chỉ để dùng cho container và mọi dịch vụ cần truy cập từ bên ngoài. Một địa chỉ /128 chỉ đáp ứng traffic outbound và hầu như không làm được việc gì khác.
  • Backup. Backup tự động thường là add-on tính phí. Snapshot thường miễn phí, nhưng snapshot nằm trên cùng hạ tầng với disk mà nó sao chép. Vì vậy, nó bảo vệ bạn khỏi lỗi thao tác của chính mình, không bảo vệ khỏi việc mất host. Dù gói dịch vụ bao gồm những gì, hãy luôn giữ một bản sao ngoài máy chủ.
  • Xử lý DDoS. Nhiều host phản ứng với một cuộc tấn công volumetric (distributed denial of service) bằng cách null route địa chỉ IP của bạn trong một khoảng thời gian cố định. Server vẫn hoạt động bình thường. Chỉ là nó không thể truy cập từ Internet. Hãy hỏi ngưỡng kích hoạt và thời gian null route được duy trì.
  • Phạm vi hỗ trợ. Với gói unmanaged, bạn là system administrator, còn trách nhiệm của host kết thúc ở hypervisor và network. Đây là khác biệt chi phí thực tế lớn nhất giữa hai gói có thông số giống hệt nhau.
  • License và panel. Control panel, operating system thương mại hoặc mail add-on có thể khiến chi phí mỗi tháng cao hơn cả tiền thuê server.

Bạn đang mua loại virtualization nào?

systemd-detect-virt

kvm hoặc qemu nghĩa là full virtualization: bạn có kernel riêng và tự chọn các module sẽ nạp vào kernel đó. lxc, lxc-libvirt hoặc openvz nghĩa là container dùng chung kernel của host. none nghĩa là bare metal.

Sự khác biệt thể hiện rõ khi dùng chung kernel. sudo modprobe wireguard sẽ thất bại và ip link add dev wg0 type wireguard trả về RTNETLINK answers: Operation not supported vì container không thể nạp một kernel module mà host chưa nạp. Khi thiếu lxcfs, free -h có thể báo bộ nhớ của host thay vì bộ nhớ của bạn. Khi đó, hệ thống monitoring sẽ đọc các số liệu không phản ánh server của bạn. Swap thường được dùng chung với các container khác. Bạn cũng hoàn toàn không thể chạy virtual machine bên trong VPS của mình. Các gói container rẻ hơn là có lý do. Tuy vậy, với một static site hoặc ứng dụng nhỏ, chúng vẫn là lựa chọn phù hợp.

Giá gia hạn là bao nhiêu?

Giá được quảng cáo thường chỉ áp dụng cho kỳ đầu tiên. Hãy tìm cụm từ "renews at" trên trang đặt hàng và kiểm tra thời hạn áp dụng cho mức giảm giá. Mức giảm giá kéo dài một năm và mức giảm giá được giữ nguyên trong suốt thời hạn gói là hai sản phẩm khác nhau, dù cùng xuất hiện trên hóa đơn đầu tiên.

Hãy đọc điều khoản hoàn tiền cẩn thận như vậy. Kiểm tra thời hạn hoàn tiền, thời hạn đó bắt đầu từ lúc đặt hàng hay lúc cấp dịch vụ, các add-on như địa chỉ IP bổ sung có được hoàn tiền không và khoản thanh toán trước cho cả năm có được hoàn theo tỷ lệ thời gian còn lại không. Sau đó đặt lời nhắc trong lịch trước ngày gia hạn một tuần, vì thời điểm rời đi ít tốn kém nhất là trước khi hóa đơn được phát hành.

Chuyển sang nhà cung cấp khác sau đó cũng không miễn phí. Việc di chuyển vài trăm gigabyte dữ liệu, dựng lại cấu hình, chờ các giá trị time to live của DNS (domain name system) hết hiệu lực và, với mail server, xây dựng lại uy tín IP có thể chiếm trọn một cuối tuần. Hãy tính cả cuối tuần đó khi một khoản tiết kiệm có vẻ hấp dẫn. Chi phí thực tế của một VPS trong một năm mới là con số cần so sánh, không phải tháng đầu tiên.

Bài kiểm tra nghiệm thu trong ba mươi phút

Chạy bài kiểm tra này trên máy chủ mới trước khi di chuyển bất kỳ thứ gì, khi thời hạn hoàn tiền vẫn còn. Hãy bảo mật máy trước: mười phút đầu tiên trên một VPS mới bao quát tài khoản người dùng, các key và firewall. Sau đó cài các công cụ.

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

Kiểm tra 1: họ thực sự cấp cho tôi những gì?

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

Bạn sẽ thấy loại virtualization, model CPU và dung lượng memory gần với thông số đã mua, sai số chỉ vài phần trăm. free -h báo RAM cao hơn nhiều so với gói cung cấp thường là container không có lxcfs, không phải phần RAM được tặng thêm. Một địa chỉ public từ curl nhưng không bao giờ xuất hiện trong ip -4 addr nghĩa là địa chỉ IPv4 đó được dùng chung.

Kiểm tra 2: tốc độ của một thread là bao nhiêu và steal tăng đến mức nào khi có tải?

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

Ghi lại dòng events per second. Tốc độ single thread quyết định tốc độ render một trang và thời gian build, đồng thời đây là thông số khác biệt rõ nhất giữa các gói giá rẻ. Bây giờ tạo tải trên mọi vCPU và xem scheduler thực sự cấp cho bạn bao nhiêu tài nguyên.

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

--cpu 0 khởi chạy một worker cho mỗi CPU đang online. Theo dõi cột st trong vmstat%steal trong mpstat. Trên gói dùng chung, steal thỉnh thoảng ở mức một chữ số là bình thường. Steal ở mức hai chữ số trong nhiều phút nghĩa là các core vật lý bị cấp phát quá mức, nên công việc của bạn phải xếp hàng sau tenant khác. Chạy lại sysbench khi tải vẫn đang hoạt động: nếu điểm single thread sụt mạnh, các vCPU của bạn đang tranh chấp với nhau. Điều này thường nghĩa là chúng là các thread cùng nằm trên một core thay vì các core riêng biệt. Trường hợp còn lại là điểm số thấp nhưng steal gần bằng 0, cho thấy host đã áp dụng giới hạn CPU. Bạn không thể nhìn thấy trực tiếp giới hạn này từ bên trong guest.

Kiểm tra 3: disk hoạt động thế nào ở queue depth 1?

Chạy hai lệnh fio trong phần NVMe và giữ lại cả hai kết quả: latency percentile 99 ở queue depth 1 và IOPS ở depth 32. Sau đó kiểm tra tốc độ ghi, vì nhiều volume chậm hơn đáng kể theo hướng này.

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

Thông số tuần tự dd là con số mà trang listing thích đưa ra nhất, nhưng lại ít hữu ích nhất trong các số liệu bạn có thể thu thập. Lý do là database hoặc web application đang có tải không dành cả ngày để streaming tuần tự. Bạn vẫn có thể thu thập số liệu này nếu muốn so sánh. Hãy dựa vào latency để quyết định.

Kiểm tra 4: network trông thế nào từ vị trí người dùng của bạn?

Trước tiên, tải một file lớn xuống 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

Việc này chỉ kiểm tra một đường truyền vào server, không kiểm tra gì khác. Hướng quan trọng là hướng người dùng truy cập, vì vậy hãy serve một file rồi tải file đó từ một máy gần họ.

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

Sau đó, từ laptop hoặc server gần nhóm người dùng của bạn:

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

Cổng 8080 phải được mở trên firewall trong lúc kiểm tra. Sau khi xong, hãy đóng cổng này, xóa file và dừng Python server bằng Ctrl+C. Trong output của mtr, đọc cột loss ở dòng cuối. Loss tại một hop trung gian nhưng không có loss ở đích là bình thường, vì router trả lời các gói ICMP (internet control message protocol) mà mtr đếm với độ ưu tiên thấp. Đây không phải loss trên network traffic của bạn. Loss ở dòng cuối là loss thực sự.

Lặp lại bài kiểm tra network vào giờ cao điểm của người dùng. Một mẫu duy nhất lúc 02:00 chỉ cho bạn biết network đang yên tĩnh.

Lưu cả bốn kết quả vào một file kèm ngày tháng, rồi chạy lại sau một tháng. Một gói hoạt động tốt vào ngày đầu nhưng chậm vào tuần thứ sáu là gói có host đã bị lấp đầy. Có số liệu của ngày đầu là khác biệt giữa việc biết nguyên nhân và chỉ đoán.

Khi nào nên chọn VPS giá rẻ

Mức giá thấp luôn đi kèm với những lợi ích và đánh đổi cụ thể. CPU cũ hơn, tỷ lệ oversell cao hơn, storage qua network chậm hơn, hỗ trợ self-service và khả năng dự phòng hạn chế hơn là những yếu tố giúp giảm giá. Hãy chọn VPS phù hợp với công việc.

VPS giá rẻ phù hợp cho máy development, CI runner, VPN endpoint, monitoring node, backup target hoặc static site. Tất cả các tác vụ này đều chịu được một phút xử lý chậm. VPS giá rẻ là lựa chọn không phù hợp khi latency chính là yếu tố quyết định, chẳng hạn như trang checkout, API tương tác, game server hoặc database mà service khác phải chờ phản hồi. Bài kiểm tra trên cho bạn biết mình đã mua loại nào, và cho biết điều đó khi việc kiểm tra vẫn chưa tốn chi phí.

FAQ

vCPU trong gói VPS giá rẻ có nghĩa là gì?

vCPU là một bộ xử lý ảo được cung cấp cho guest của bạn. Khi có thể, nó được ánh xạ vào một thread mà scheduler của host chạy trên một core vật lý. Đây là quyền yêu cầu thời gian CPU, không phải phần cứng được dành riêng, trừ khi thông tin gói ghi rõ "dedicated core" hoặc "dedicated vCPU". Host thường bán nhiều vCPU hơn số core thực có. Tỷ lệ này hiếm khi được công bố, vì vậy bạn nên tự đo. Chạy stress-ng --cpu 0 --timeout 300s và theo dõi cột st trong vmstat 1. Giá trị steal ở mức hai chữ số nghĩa là bạn đang chờ các core mà guest khác đang sử dụng.

"Unlimited bandwidth" có thực sự là không giới hạn không?

Không. Giới hạn thường nằm ở hai nơi không được nêu trong phần mô tả gói. Chính sách sử dụng hợp lý quy định giới hạn fair use bằng văn bản. Tốc độ port đặt ra mức trần cứng tính theo byte. Port 100 Mbit/s không thể truyền quá khoảng 32 TB trong 30 ngày, ngay cả khi chạy hết tốc độ. Vì vậy, hãy hỏi tốc độ port và đọc chính sách để tìm các cụm từ "fair use" và "sustained". Sau đó, theo dõi lượng dữ liệu bạn thực sự gửi bằng vnstat -m và so sánh với hạn mức.

Làm thế nào để biết VPS của tôi thực sự dùng NVMe?

Bạn không thể xác nhận loại thiết bị lưu trữ vật lý từ bên trong guest, vì lsblk chỉ báo cáo thông tin mà hypervisor quảng bá: ROTA bằng 0 và chuỗi model rỗng hoặc chung chung. Bạn có thể đo hành vi của thiết bị. Chạy fio với --direct=1 tại --iodepth=1 và đọc độ trễ hoàn tất ở percentile 99.00. NVMe cục bộ phản hồi trong khoảng hàng trăm microsecond. Volume gắn qua network phản hồi trong khoảng millisecond, ngay cả khi sequential throughput trông rất tốt. Hãy lặp lại phép đo vài lần trong ngày, vì shared disk lúc 03:00 không giống lúc 20:00.

Tôi nên kiểm tra gì trước khi hết thời hạn refund?

Hãy kiểm tra 4 nhóm sau theo thứ tự này. Cấu hình thực tế của máy, từ systemd-detect-virt, lscpufree -h. Tốc độ single-thread, từ sysbench cpu --cpu-max-prime=20000 --threads=1 run. Steal time khi tải đầy, từ stress-ng --cpu 0 và theo dõi bằng vmstat 1. Độ trễ disk, bằng fio với queue depth 1. Sau đó đo network từ một máy gần người dùng của bạn bằng mtr và tải xuống một file được phục vụ từ máy này. 30 phút là đủ để kiểm tra toàn bộ. Thực hiện trước khi migrate bất kỳ thứ gì để vẫn có thể dùng thời hạn refund làm đòn bẩy.