公网测试工具:speedtest-cli
安装
# CentOS/RHEL系列
yum install epel-release
yum install python-pip
pip install speedtest-cli
# Ubuntu/Debian系列
apt update
# 安装 pipx
sudo apt install pipx
pipx ensurepath
# 安装应用
pipx install speedtest-cli运行
speedtest-cli
使用该命令会自动选择服务器进行测速。不过有时候自动选择的服务器不太理想,你可以手动指定。先看看附近有哪些服务器:
speedtest-cli --list | grep -i China
[root@node1 ~]# speedtest-cli --list | grep -i China
71313) 中国电信 (Xuzhou, China) [1301.96 km]
16204) JSQY - Suzhou (Suzhou, China) [1576.10 km]
选一个延迟比较低的:
speedtest-cli --server 71313iperf3:内网测试工具
speedtest-cli虽然方便,但有个问题就是测试的是到公网的速度。如果想测试内网带宽,或者两台服务器之间的带宽,那就得用iperf3了。
安装iperf3
# CentOS/RHEL
yum install iperf3
# Ubuntu/Debian
apt install iperf3测试
iperf3需要一台服务器做服务端,一台做客户端。
在服务端运行:
iperf3 -s
在客户端运行:
iperf3 -c 192.168.99.100客户端结果
服务端结果
默认测试10秒钟,也可以指定时间:
iperf3 -c 服务端IP -t 30测试UDP带宽:
iperf3 -c 192.168.99.100 -u -t 15客户端结果
服务端结果
仔细观察上面的测试结果可以看到,测试udp的速度时网速反而比tcp的要慢很多,而正常情况是udp速度要比tcp的块。出现这种状况的原因是iperf3 中 UDP 默认带宽只有1Mbps,而TCP会自动尝试使用所有可用带宽。
解决这一现象的方案是测UDP时手动设置UDP带宽。
iperf3 -u -b 1G -l 1400 -c 192.168.99.100客户端
服务端
wget/curl - 简单实用的下载测试
如果想快速测一下下载速度,不想装额外的工具,那wget和curl就够用了。
下载一个100MB的文件到/dev/null(相当于丢弃),然后显示下载速度。
wget :
wget -O /dev/null http://speedtest.tele2.net/100MB.zipcurl
curl -o /dev/null http://speedtest.tele2.net/100MB.zip
#查看更详细的信息
curl -o /dev/null -w "下载速度: %{speed_download} bytes/sec\n总时间: %{time_total}s\n" http://speedtest.tele2.net/100MB.zip
这种方法的好处是可以测试到特定服务器的速度,比如CDN节点或者合作伙伴的服务器。
nload - 实时监控网络流量
安装nload
# CentOS/RHEL
yum install nload
# Ubuntu/Debian
apt install nload运行
nload
它会显示一个实时的图表,显示当前的上传和下载速度。如果你有多个网卡,可以用左右箭头键切换。
iftop - 看看谁在占用带宽
iftop比nload更进一步,它不仅能显示总的流量,还能显示每个连接的流量情况。
安装
CentOS/RHEL
yum install iftop
# Ubuntu/Debian
apt install iftop运行(需要root权限)
iftop
iftop的界面有点像top命令,显示当前所有网络连接的流量情况。可以看到每个IP地址的上传下载速度,这对于排查网络问题特别有用。
nethogs - 进程级别的网络监控
安装
# CentOS/RHEL
yum install nethogs
# Ubuntu/Debian
apt install nethogs运行(需要root权限)
nethogsnethogs会显示每个进程的网络使用情况,包括进程名、PID、用户等信息。这对于排查哪个应用程序占用带宽特别有用。
实用的测试技巧
选择合适的测试时间
网络带宽测试最好在不同时间段多测几次,因为网络状况会随时间变化。我一般会在早上、中午、晚上各测一次,这样能得到比较全面的数据。
注意测试方向
很多人只测下载速度,忽略了上传速度。但对于服务器来说,上传速度同样重要,特别是如果你的服务器需要向用户推送大量数据的话。
考虑并发连接
单线程测试得到的带宽可能不能反映真实情况。可以试试多线程测试:
iperf3 -c 服务端IP -P 4这个命令会启动4个并行连接进行测试。
记录测试结果
把测试结果记录下来,建立一个基线。这样以后出现问题的时候,你就能快速判断是不是网络带宽的问题了。
如果测试结果不理想,可以按这个顺序排查:
- 先确认是不是测试方法的问题,换个工具再测一次
- 检查服务器的网卡配置,看看是不是限速了
- 联系网络管理员或者运营商,确认线路状况
- 检查防火墙和安全组设置,看看是不是有限制
评论 (0)