VPS带宽测试
环境说明
本次测试基于下面的环境:
2核2G、200Mbps带宽的云服务器
三网精品线路,电信CN2 GIA,移动CMIN2,联通9929
操作系统版本:Ubuntu 22.04
内核版本:5.15.0-135-generic
测试方法
生成测试文件
以root用户登录进去之后,工作目录就是在“/root”下面,后面没有明确指定路径的情况下,都是以这个目录做参考。
# 生成一个500MB的测试文件
dd if=/dev/urandom of=./testfile.bin bs=1M count=500iPerf测试
iPerf 是一个网络吞吐量测试软件,可以用来测量网络速度和质量。由于ECS在美国区域,而美国正好有开放的iPerf测速节点,可以借用这类节点查看ECS本身的带宽是否能够满载。首先安装iperf3工具之后测试TCP上行速度(也就是ECS往测速节点发送大量测试数据),实测结果如下:
apt install iperf3 -y
iperf3 -c speedtest.lax12.us.leaseweb.net -t 10 -p 5210 -b 200M
# 实测上行数据如下
root@f1a9c051-ad56-47fe-9def-9e1195d79424:~# iperf3 -c speedtest.lax12.us.leaseweb.net -p 5210 -b 200M
Connecting to host speedtest.lax12.us.leaseweb.net, port 5210
[ 5] local 38.146.29.241 port 55268 connected to 23.105.41.222 port 5210
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-1.00 sec 23.9 MBytes 200 Mbits/sec 0 495 KBytes
[ 5] 1.00-2.00 sec 23.9 MBytes 200 Mbits/sec 0 570 KBytes
[ 5] 2.00-3.00 sec 23.9 MBytes 200 Mbits/sec 0 570 KBytes
[ 5] 3.00-4.00 sec 23.8 MBytes 199 Mbits/sec 0 570 KBytes
[ 5] 4.00-5.00 sec 23.9 MBytes 200 Mbits/sec 0 570 KBytes
[ 5] 5.00-6.00 sec 23.9 MBytes 200 Mbits/sec 0 570 KBytes
[ 5] 6.00-7.00 sec 23.9 MBytes 200 Mbits/sec 0 570 KBytes
[ 5] 7.00-8.00 sec 23.8 MBytes 199 Mbits/sec 0 570 KBytes
[ 5] 8.00-9.00 sec 23.9 MBytes 200 Mbits/sec 0 570 KBytes
[ 5] 9.00-10.00 sec 23.9 MBytes 200 Mbits/sec 0 570 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.00 sec 238 MBytes 200 Mbits/sec 0 sender
[ 5] 0.00-10.04 sec 238 MBytes 199 Mbits/sec receiver
iperf Done.然后使用测试ECS下行速度(也就是ECS从测速节点下载大量测试数据),实测结果如下:
root@f1a9c051-ad56-47fe-9def-9e1195d79424:~# iperf3 -c speedtest.lax12.us.leaseweb.net -p 5210 -b 200M -R
Connecting to host speedtest.lax12.us.leaseweb.net, port 5210
Reverse mode, remote host speedtest.lax12.us.leaseweb.net is sending
[ 5] local 38.146.29.241 port 56780 connected to 23.105.41.222 port 5210
[ ID] Interval Transfer Bitrate
[ 5] 0.00-1.00 sec 24.8 MBytes 208 Mbits/sec
[ 5] 1.00-2.00 sec 23.8 MBytes 199 Mbits/sec
[ 5] 2.00-3.00 sec 23.9 MBytes 200 Mbits/sec
[ 5] 3.00-4.00 sec 23.9 MBytes 200 Mbits/sec
[ 5] 4.00-5.00 sec 23.9 MBytes 200 Mbits/sec
[ 5] 5.00-6.00 sec 23.8 MBytes 199 Mbits/sec
[ 5] 6.00-7.00 sec 23.9 MBytes 200 Mbits/sec
[ 5] 7.00-8.00 sec 23.9 MBytes 200 Mbits/sec
[ 5] 8.00-9.00 sec 23.9 MBytes 200 Mbits/sec
[ 5] 9.00-10.00 sec 23.8 MBytes 199 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.04 sec 239 MBytes 200 Mbits/sec 21 sender
[ 5] 0.00-10.00 sec 239 MBytes 201 Mbits/sec receiver
iperf Done.从测试结果来看,在没有经过跨洋线路的情况下,机器网络带宽正常,能够跑满机器带宽。后续再测试跨洋线路的情况。
TCP下载测试
iPerf工具同样能够测试跨洋线路的情况,这里先使用更加贴近使用场景的方式测试跨洋线路的网速。即在ECS中生成一个大体积测试文件之后开启一个HTTP服务器,然后使用wget或者浏览器进行下载测试,看看能否跑满机器带宽。在测试线路之前,需要在ECS的安全组中将工具使用端口的端口放行,由于8000端口属于默认打开的,这里测试使用就使用8000端口。先在ECS中生成测试文件并开启HTTP服务。
cd ~
# ubuntu 22.04中自带python3,因此可以直接开启一个简单的HTTP服务
nohup python3 -m http.server &
# 确认已经监听了8000端口
ss -tln为了方便监控ECS的网速,ECS上安装一个查看网卡流量的命令行工具。
apt install nload -y
# 运行nload,界面上Incoming表示ECS的下行流量,Outgoing表示ECS的上行流量。
# 本ECS的网卡名称叫ens3
nload ens3国内机器测试下载速度时,可以使用wget、scp、浏览器下载等多种方式。注意:由于国际线路延时较高,通常需要启多个下载任务才能够跑满带宽。
方法1:在终端中使用wget启用多个下载任务
wget http://38.146.29.241:8000/testfile.bin当前使用的Linux客户端机器,先启用一个任务看看网速能够到多少。
user@almalinux:~/temp$ wget http://38.146.29.241:8000/testfile.bin
--2025-11-24 17:31:11-- http://38.146.29.241:8000/testfile.bin
正在连接 38.146.29.241:8000... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:524288000 (500M) [application/octet-stream]
正在保存至: “testfile.bin”
testfile.bin 21%[=======> ] 106.81M 14.3MB/s 剩余 32s 单个任务下载速度只能够到14MB/s左右的速度,因此启动三个任务能够达到满带宽。下面是nload的显示结果:
Device ens3 [38.146.29.241] (1/1):
========================================================================================================
Incoming:
. #. .. #
| # # . ##.| | . ## . || .#. .. . .#.
||.|.|###||| # # .## # |##### ##.##. ##||##|.##.## ###.## . .##| ### Curr: 4.68 MBit/s
############|######################################.########|######## Avg: 830.50 kBit/s
##################################################################### Min: 35.66 kBit/s
##################################################################### Max: 8.78 MBit/s
##################################################################### Ttl: 444.74 MByte
Outgoing:
#####################################################################
#####################################################################
#####################################################################
#####################################################################
#####################################################################
#####################################################################
#####################################################################
##################################################################### Curr: 217.53 MBit/s
##################################################################### Avg: 35.57 MBit/s
##################################################################### Min: 6.02 kBit/s
##################################################################### Max: 342.81 MBit/s
##################################################################### Ttl: 1.96 GByte方法2:在Linux终端中启用多个拷贝任务,同样使用三个任务能够达到满带宽。可以参考前面的方法使用nload查看ECS上行速度。
scp root@38.146.29.241:/root/testfile.bin ./方法3:在浏览器地址栏中直接输入全路径,三个任务能够达到满带宽。可以参考前面的方法使用nload查看ECS上行速度。
# 测试文件全路径,将全路径输入到浏览器地址栏
http://38.146.29.241:8000/testfile.binTCP上传测试
由于python3的简单HTTP服务器不支持从客户端接收文件,因此测试上传速度的时候,我们使用scp传输文件即可。本地机器生成测试文件,并开启多个传输任务(类似下载速度测试方法)。
dd if=/dev/urandom of=./testupload bs=1M count=500由于本地机器的线路,上传速度远远小于下行速度,只能够接近跑满本地机器的上行带宽速度。
Device ens3 [38.146.29.241] (1/1):
========================================================================================================
Incoming:
#####################################################################
#####################################################################
#####################################################################
#####################################################################
#####################################################################
#####################################################################
#####################################################################
##################################################################### Curr: 162.68 MBit/s
##################################################################### Avg: 65.88 MBit/s
##################################################################### Min: 8.60 kBit/s
##################################################################### Max: 237.96 MBit/s
##################################################################### Ttl: 2.89 GByte
Outgoing:
Curr: 2.07 MBit/s
Avg: 820.65 kBit/s
.|. . .... .... ... .. ... .... Min: 6.81 kBit/s
.||||||||..||#######|.##########################|#################### Max: 327.89 MBit/s
##################################################################### Ttl: 3.87 GByte测速时注意事项
由于跨洋通信情况比较特殊,一般有下面一些问题,有些属于是正常现象,需要具体问题具体分析处理:
机器中的防火墙需要关闭或者放行必要的测试端口。
单个任务的速度(单线程任务)一般都只有在15-20MB/S的速度,这个是正常的,同时开启多个任务即可。
由于国内家庭带宽的上下行带宽严重不对等(一般家庭用户宽带的上行带宽只有下行带宽的5分之一甚至更少),因此如果需要跑满ECS的下行速度,往往需要多个国内机器同时进行上传,才能够达到效果。
互联网上通信情况时刻都在变化,因此某一个时间段的测速情况可能会和其它时间段的情况不一样,需要在不同时间段多次测试之后进行结果对比。
注:上述IP来源于VMRACK
联系邮箱:sales@99cdn.com
授权平台:www.99cdn.com
云平台:www.vmrack.com