Speedtest Script - Hướng dẫn chi tiết
Script kiểm tra hiệu năng server toàn diện với khả năng tự động cài đặt dependencies và chạy trên cả Linux lẫn Windows.
Tính năng
1. System Information
- CPU: Model, số cores/threads, tốc độ xung nhịp
- RAM: Tổng dung lượng và đã sử dụng
- Disk: Dung lượng ổ đĩa và % sử dụng
- OS: Phiên bản hệ điều hành, kernel, architecture
- Network: IP public, uptime, load average
2. Disk Speed Test
- Sequential Write (dd): Tốc độ ghi tuần tự (3 lần chạy)
- Random I/O (fio/diskspd): IOPS và throughput cho random read/write
- Tự động cài đặt
fio(Linux) hoặcDiskSpd(Windows) nếu chưa có
3. Network Speed Test
- International Servers: CloudFlare CDN, Linode US/Tokyo, Vultr Singapore
- Vietnam ISPs: VNPT, Viettel, FPT, CMC Telecom
- Latency Test: Ping đến các servers quốc tế và nội địa
Cách sử dụng
Linux / macOS
Chạy trực tiếp (khuyến nghị):
curl -Lso- bacpv.com/speedtest.sh | bash
Tải về và chạy:
curl -O https://bacpv.com/speedtest.sh
chmod +x speedtest.sh
./speedtest.sh
Yêu cầu:
- Script tự động cài đặt:
curl,dig(dnsutils),fio - Cần quyền
sudođể cài đặt dependencies - Hỗ trợ: Ubuntu, Debian, CentOS, RHEL, AlmaLinux, Rocky Linux, Fedora, Arch, macOS
Windows PowerShell
Chạy trực tiếp (khuyến nghị):
iwr bacpv.com/speedtest.ps1 | iex
Hoặc dùng lệnh đầy đủ:
Invoke-Expression (Invoke-WebRequest -Uri "https://bacpv.com/speedtest.ps1" -UseBasicParsing).Content
Tải về và chạy:
Invoke-WebRequest -Uri "https://bacpv.com/speedtest.ps1" -OutFile speedtest.ps1
.\speedtest.ps1
Yêu cầu:
- PowerShell 5.0+ (Windows 10+ có sẵn)
- Chạy as Administrator để cài đặt DiskSpd (khuyến nghị)
- Kết nối internet
Hiểu kết quả test
System Information
CPU Model: Intel(R) Xeon(R) CPU E5-2680 v4 @ 2.40GHz
CPU Cores: 8 cores
CPU Frequency: 2400 MHz
Total RAM: 15.79 GB
Used RAM: 8.24 GB
Total Disk (C:): 223.46 GB
Used Disk (C:): 197.41 GB (88.35%)
Operating System: Ubuntu 22.04 LTS
Public IP: 160.191.101.63
Đánh giá:
- CPU: Số cores/threads cao → xử lý tốt multi-tasking
- RAM Used: < 80% → Tốt, > 90% → Cân nhắc upgrade
- Disk Used: < 80% → An toàn, > 90% → Nguy cơ đầy ổ đĩa
- Public IP: Xác định vị trí server và ISP
Disk Speed Test
Sequential Write (dd)
Sequential Write (dd):
Run 1: 520 MB/s
Run 2: 480 MB/s
Run 3: 465 MB/s
Benchmark so sánh:
| Loại ổ đĩa | Tốc độ ghi thông thường |
|---|---|
| HDD 7200rpm | 80-160 MB/s |
| SATA SSD | 400-550 MB/s |
| NVMe SSD | 1000-3500 MB/s |
| Cloud VPS (shared) | 100-500 MB/s |
| Cloud VPS (dedicated) | 500-2000 MB/s |
Đánh giá kết quả:
- < 100 MB/s: HDD hoặc VPS shared storage chậm
- 100-500 MB/s: SATA SSD hoặc VPS tốt
- 500-1000 MB/s: SATA SSD nhanh hoặc NVMe entry
- > 1000 MB/s: NVMe SSD hiệu năng cao
Random I/O (fio/diskspd)
Random I/O Test (fio):
Read: 234.5 MB/s | 60032 IOPS
Write: 189.2 MB/s | 48435 IOPS
Benchmark IOPS:
| Loại ổ đĩa | Random Read IOPS | Random Write IOPS |
|---|---|---|
| HDD 7200rpm | 80-120 | 60-100 |
| SATA SSD | 30,000-90,000 | 20,000-80,000 |
| NVMe SSD | 100,000-500,000+ | 80,000-400,000+ |
| Cloud VPS | 5,000-50,000 | 3,000-40,000 |
Đánh giá:
- < 5,000 IOPS: Hiệu năng thấp, không phù hợp database
- 5,000-30,000 IOPS: Đủ dùng cho web server, small database
- 30,000-100,000 IOPS: Tốt cho database, high-traffic applications
- > 100,000 IOPS: Xuất sắc, phù hợp enterprise workloads
Lưu ý: IOPS quan trọng hơn throughput cho database và ứng dụng có nhiều small random operations.
Network Speed Test
International Servers
Server IP Address Speed
─────────────────────────────────────────────────────────────────
CloudFlare CDN 162.159.140.220 19.2 MB/s
Linode US (Newark) 96.126.123.45 5.8 MB/s
Vultr Singapore 45.32.101.23 6.3 MB/s
Linode Tokyo 139.162.65.37 22.1 MB/s
Đánh giá theo vị trí server:
Server tại Việt Nam:
- CloudFlare CDN: 10-50 MB/s (tốt, có edge server gần)
- Singapore: 5-20 MB/s (tốt, khoảng cách địa lý gần)
- Tokyo: 8-25 MB/s (tốt)
- US/EU: 3-10 MB/s (chấp nhận được)
Server tại Singapore:
- CloudFlare CDN: 50-200 MB/s
- Singapore local: 50-300 MB/s
- Tokyo: 20-80 MB/s
- Vietnam: 5-30 MB/s
Server tại US/EU:
- CloudFlare CDN: 100-500 MB/s
- US/EU local: 100-1000 MB/s
- Asia: 5-50 MB/s
Vietnam Domestic Servers
Server IP Address Speed
─────────────────────────────────────────────────────────────────
VNPT Ha Noi 113.164.16.66 103.2 MB/s
Viettel 27.68.226.129 410.5 MB/s
FPT Ha Noi 118.70.115.12 343.8 MB/s
CMC Telecom 101.99.5.8 41.7 MB/s
Đánh giá (cho server tại Việt Nam):
- Viettel/FPT: 200-500 MB/s → Xuất sắc (backbone tốt)
- VNPT: 50-150 MB/s → Tốt
- CMC: 30-80 MB/s → Trung bình
- < 30 MB/s: Kém, có thể bị throttle hoặc routing không tối ưu
Lưu ý: Tốc độ cao với domestic ISPs quan trọng cho website phục vụ user Việt Nam.
Latency Test
International:
Google DNS: 2.3 ms
CloudFlare DNS: 1.8 ms
US East: 185.4 ms
Singapore: 33.2 ms
Tokyo: 68.5 ms
Vietnam Domestic:
VNPT: 0.8 ms
Viettel: 1.2 ms
FPT: 2.1 ms
CMC: 10.3 ms
Gateway: 0.3 ms
Benchmark latency:
| Khoảng cách | Latency tốt | Latency chấp nhận | Latency cao |
|---|---|---|---|
| Local/Same DC | < 1 ms | 1-5 ms | > 5 ms |
| Same country | < 10 ms | 10-30 ms | > 30 ms |
| Same region (VN-SG) | < 40 ms | 40-80 ms | > 80 ms |
| Cross-continent | < 150 ms | 150-250 ms | > 250 ms |
Ảnh hưởng của latency:
- < 50 ms: Xuất sắc cho real-time apps (gaming, video call)
- 50-100 ms: Tốt cho web browsing, API calls
- 100-200 ms: Chấp nhận được cho web thông thường
- > 200 ms: User có thể cảm nhận lag, không phù hợp real-time
Ứng dụng thực tế:
- Website phục vụ VN: Chọn server VN (latency < 10ms với ISPs VN)
- API phục vụ toàn cầu: Chọn Singapore (latency cân bằng với châu Á)
- App phục vụ US/EU: Chọn server tại US/EU
Use Cases thực tế
1. So sánh VPS providers
Chạy speedtest trên nhiều VPS khác nhau để so sánh:
# VPS A
curl -Lso- bacpv.com/speedtest.sh | bash > vps-a-result.txt
# VPS B
curl -Lso- bacpv.com/speedtest.sh | bash > vps-b-result.txt
# Compare
diff vps-a-result.txt vps-b-result.txt
So sánh chỉ số quan trọng:
- Disk IOPS (cho database)
- Network speed đến target audience
- Latency đến target regions
2. Troubleshooting hiệu năng
Disk chậm:
Sequential Write: 45 MB/s (thấp bất thường)
Random IOPS: 800 (rất thấp)
→ Nguyên nhân: Disk đang full, có I/O wait cao, hoặc shared storage bị overload
→ Giải pháp: Kiểm tra df -h, iostat, xem có process nào đang ghi nhiều
Network chậm đến Vietnam:
Viettel: 5 MB/s (thấp)
FPT: 8 MB/s (thấp)
→ Nguyên nhân: Server ở nước ngoài, routing không tối ưu → Giải pháp: Dùng CDN có edge server tại VN hoặc chuyển server về VN
Latency cao:
Gateway: 15 ms (cao bất thường)
→ Nguyên nhân: Network của VPS provider có vấn đề → Giải pháp: Liên hệ support hoặc đổi provider
3. Kiểm tra sau upgrade
Chạy speedtest trước và sau khi upgrade hardware:
# Trước upgrade
curl -Lso- bacpv.com/speedtest.sh | bash > before-upgrade.txt
# Sau upgrade SSD → NVMe
curl -Lso- bacpv.com/speedtest.sh | bash > after-upgrade.txt
So sánh để xác nhận hiệu quả của upgrade.
4. Monitoring định kỳ
Thêm vào cron job để chạy hàng ngày:
# Chạy lúc 3:00 sáng hàng ngày
0 3 * * * curl -Lso- bacpv.com/speedtest.sh | bash >> /var/log/speedtest-daily.log 2>&1
Phát hiện sớm sự suy giảm hiệu năng theo thời gian.
Tips và Best Practices
1. Chạy test nhiều lần
- Chạy ít nhất 3 lần vào các thời điểm khác nhau
- Loại bỏ kết quả bất thường (outliers)
- Lấy trung bình để có kết quả chính xác
2. Chạy vào giờ thấp điểm
- Network test nên chạy khi traffic thấp (2-5 giờ sáng)
- Disk test có thể chạy bất kỳ lúc nào
- Tránh chạy khi server đang load cao
3. So sánh với baseline
- Lưu lại kết quả lần đầu làm baseline
- Định kỳ so sánh để phát hiện degradation
- Alert khi hiệu năng giảm > 30% so với baseline
4. Kết hợp với monitoring tools
- Speedtest cho snapshot tại 1 thời điểm
- Dùng Netdata/Prometheus cho continuous monitoring
- Speedtest để verify khi có alert từ monitoring
5. Hiểu giới hạn của provider
- Mỗi VPS plan có bandwidth limit
- Shared storage có IOPS limit
- Không kỳ vọng vượt quá spec của plan
Troubleshooting
Script không chạy được
Linux:
# Kiểm tra curl
which curl
# Nếu không có, cài thủ công
sudo apt install curl -y # Ubuntu/Debian
sudo yum install curl -y # CentOS/RHEL
Windows:
# Kiểm tra PowerShell version
$PSVersionTable.PSVersion
# Nếu < 5.0, update PowerShell
# Download từ: https://aka.ms/pscore
Dependencies không tự động cài
Linux - Cài thủ công:
# Ubuntu/Debian
sudo apt update
sudo apt install curl dnsutils fio -y
# CentOS/RHEL
sudo yum install curl bind-utils fio -y
Windows - Cài DiskSpd thủ công:
# Qua winget (khuyến nghị)
winget install Microsoft.DiskSpd
# Hoặc download từ GitHub
# https://github.com/microsoft/diskspd/releases
Kết quả không chính xác
- Disk speed thấp: Server đang busy, chạy lại sau
- Network speed thấp: ISP đang throttle, thử đổi DNS
- Latency cao: Routing issue, kiểm tra
mtrhoặctraceroute
Kết luận
Speedtest script là công cụ hữu ích để:
- ✅ Đánh giá nhanh hiệu năng server
- ✅ So sánh các VPS providers
- ✅ Phát hiện vấn đề về disk/network
- ✅ Monitoring định kỳ
Nhớ:
- Chạy nhiều lần để có kết quả chính xác
- So sánh với benchmark phù hợp loại server
- Kết hợp với tools khác cho monitoring toàn diện