Is the advertised bandwidth on your VPS server truly being used at full capacity? What's the quality of the VPS server's network? Will the latency be high during peak hours? Often, there's a significant difference between the provider's configuration parameters and the actual user experience. Speed tests allow you to verify if the promised bandwidth is met, troubleshoot slow website responses, and even determine if it's necessary to upgrade to a server with a better network. For network-sensitive applications like gaming and real-time communication, speed testing is essential.
The simplest method, requiring no additional tools, is to test latency using ping.
ping -c 10 www.baidu.com
Focus on two key metrics: First, the `time` value, representing the round-trip time of data packets. Generally, under 50ms is considered normal, and over 100ms should raise concerns. Second, the packet loss rate; 0% packet loss is ideal, and over 2% indicates a problem with the network quality. However, ping only measures latency, not bandwidth.
To test download speed, use wget or curl.
Want to know how fast the server downloads a file from a specific node? Downloading a large file directly is the most intuitive way. The terminal will display the real-time speed, for example, "15.2 MB/s". To convert this to Mbps, multiply by 8, which is approximately 120 Mbps. Tip: You can test speed test files from different regions simultaneously to compare which node is faster. This is very helpful for choosing a server location.
Professional Speed Test Tools
speedtest-cli is the most convenient tool for testing public network bandwidth. This is the official command-line tool from Speedtest, and its usage is as simple as the web version. Installation Methods:
Ubuntu/Debian
sudo apt install speedtest-cli
CentOS/RHEL
sudo yum install speedtest-cli
One-click speed test:
speedtest-cli
Output only key data (suitable for script calls):
speedtest-cli --simple
Test return speed to China from a specified domestic node:
speedtest-cli --list | grep -i china
speedtest-cli --server nodeID
speedtest-cli automatically selects the nearest server. The test results include Ping value, download speed, and upload speed, providing broad coverage and making it ideal for quickly evaluating the bandwidth quality from a server to various nodes worldwide.
iperf3 measures the actual bandwidth between two servers.
While speedtest measures bandwidth to a public node, iperf3 can test the actual transmission speed between two servers you control, providing results closer to real-world business scenarios. Both need to be installed.
Install iperf3 on both servers:
sudo apt install iperf3 -y
Start listening on the receiving end (server):
iperf3 -s
Execute tests on the sending end (client):
Basic test, default 10 seconds
iperf3 -c server_IP
Test for 30 seconds, taking a more stable average
iperf3 -c server_IP -t 30
Test reverse bandwidth (server → client, i.e., download speed)
iperf3 -c server_IP -R
Multi-concurrency stream test, simulating a real multi-user scenario
iperf3 -c server_IP -P 4
Test UDP bandwidth and packet loss rate
iperf3 -c server_IP -u -b 100M
Focus on Bandwidth (actual transmission rate) and Retr (TCP retransmission count) in the iperf3 output. A lower retransmission count indicates better line quality. In UDP mode, focus on the Lost/Total packet loss rate.
mtr: Continuous Monitoring of Latency and Packet Loss
mtr combines the functionality of ping and traceroute, displaying real-time latency and packet loss for each hop of a data packet.
Installation
sudo apt install mtr -y
Interactive Mode (Real-time Refresh)
mtr target IP
Report Mode (Outputs after 100 packets)
mtr --report --report-cycles 100 target IP
In the mtr output, the Loss% column shows the packet loss rate, and the Avg column shows the average latency. If the packet loss rate suddenly increases after a certain hop, the problem lies with that network node.
One-Click Speed Test Scripts: A Time-Saving and Effortless Solution
If you find manually running the tools above too cumbersome, there are many one-click scripts available in the community. A single command can test CPU, memory, disk, and network bandwidth, and provide a comprehensive report.
bench.sh (Qiushui Yibing Script): The most classic one-click script, displaying system information, performing IO tests (averaging three times), and global multi-node speed tests.
wget -qO- bench.sh |
SuperBench: Adds server virtualization architecture detection and speed test nodes for the three major Chinese mobile networks (China Telecom, China Unicom, and China Mobile) to the `bench.sh` file.
curl -LsO https://raw.githubusercontent.com/FunctionClub/ZBench/master/ZBench-CN.sh && ZBench-CN.sh
How to interpret the speed test results?
After obtaining the speed test results, how do you determine if the server is up to par? A simple and direct method is to find a test IP, ping it during the day, and then ping it again at 8 PM. If the latency spikes from 50ms to over 200ms, and the packet loss rate exceeds 3%, it indicates that this network is not suitable for serving domestic users.
Here are some reference standards:
| Test | Excellent | Pass | Needs Optimization |
| Ping Latency (Domestic - US West Coast) | <150ms | 150-200ms | >200ms |
| Download Speed (Nominal Bandwidth Percentage) | >90% | 70%-90% | <70% |
| Peak Packet Loss Rate | <1% | 1%-3% | >3% |
| TCP Retransmission Count | <10 | 10-50 | >50 |
What can you do after speed testing?
Speed testing is not just about identifying problems, but also about solving them. If you find that your server's network performance is poor, there are several optimization directions you can try.
Enable the BBR congestion control algorithm. BBR is a TCP congestion control algorithm developed by Google. Compared to the traditional CUBIC algorithm, in network environments with some packet loss (such as trans-Pacific links), BBR can make fuller use of bandwidth, improving transmission speed by 20%-300%.
Check kernel version (4.9 or higher required)
uname -r
Enable BBR, edit the `sysctl.conf` file
sudo nano /etc/sysctl.conf
Add the following to the end of the file:
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr
Save and apply:
sudo sysctl -p
Change the network connection. If enabling BBR still doesn't improve performance, consider changing the server region or choosing a high-quality connection like CN2 GIA or 9929.
Speed testing isn't a one-time event. Network conditions vary greatly at different times; it's recommended to run several tests and average the results. Record historical data to establish a performance baseline for future comparisons.
Run a complete test immediately after purchasing a new server to confirm the configuration meets requirements. Repeat the test periodically to monitor performance stability. Focus your testing on your business scenario—for database-centric servers, test disk I/O more; for websites serving domestic users, test backhaul routes and packet loss during peak hours. Once you master these methods, you'll be able to judge for yourself whether your server is up to par.
EN
CN