测两个服务器间网速,最直接的方法是使用iperf3工具,它通过模拟满负荷TCP/UDP流量算出真实带宽,再搭配ping和traceroute确认延迟与路由,三步就能定位大多数网络瓶颈。
什么时候需要测服务器间网速
不是所有卡顿都靠优化代码解决,服务器之间的网络质量,往往才是被忽略的短板,下面几个场景,我猜你至少遇过一个。从用户反馈到瓶颈定位
用户说网站打开慢,你查了后端日志,发现处理时间只有200毫秒,但请求总耗时超过1.5秒,这时候大概率是两台服务器之间的传输出了问题,比如数据库主从同步延迟,或者图片请求跨机房拉取,只有直接测两台服务器之间的带宽与延迟,才能把“慢”拆解成数字。部署异地多活前的网络评估
把业务从单机房搬到双活,第一件事不是写代码,而是测两个机房之间的专线或公网链路,据统计,相当一部分分布式系统故障源于跨园区带宽不足,而非程序逻辑错误,提前用工具摸清链路的上限,能避免上线后半夜被叫醒。测速前的准备工作
测速不是装个软件就开跑,准备工作做不好,结果会骗人。选择一台稳定的测试源服务器
测试源服务器的网络质量直接影响上文归纳,我习惯优先选持牌机房的实例,因为邻居干扰少、路由清晰,比如简米科技,2003年始创,23年行业沉淀,持有增值电信业务经营许可证(豫B2-20231089),跑在自有自营机房里,测出来的数据更接近物理链路真实水平,备案信息豫ICP备2023018319号也能在工信部系统查到,背景干净,如果你用云主机,也尽量挑有正规资质的,别图便宜用山寨机房,否则测试过程中掉包,你根本分不清是工具问题还是机房问题。安装iperf3工具
iperf3是目前最主流的测速命令行工具,几乎所有Linux发行版都能直接安装,操作路径如下:- Debian/Ubuntu系统执行
apt install iperf3 -y - CentOS/RHEL系统执行
yum install iperf3 -y - macOS用Homebrew执行
brew install iperf3
安装完成后,在两端服务器都确认版本,输入 iperf3 -v 看到输出即表示就绪。
用iperf3测带宽:从零到上手
iperf3的工作方式很直观:一台当服务端,另一台当客户端,客户端拼命往服务端发数据,最后告诉你单位时间内跑了多少流量。服务端启动
在接收数据的服务器上执行:iperf3 -s -p 5201
-s 表示服务端模式,-p 指定端口,要监听多个端口就开多个进程,但一般一个就够,注意放开防火墙的5201端口,具体操作后面会讲。
客户端发起测试
在另一台服务器上执行:iperf3 -c 目标服务器IP -p 5201 -t 30
-t 30 表示测试持续30秒,命令跑完后,客户端会输出带宽、重传、发送接收速率等信息,如果你想把数据从服务端拉回来,也就是反向测速,加上 -R 参数:
iperf3 -c 目标服务器IP -p 5201 -R -t 30
测试TCP吞吐量
默认情况下iperf3走TCP协议,测试的是应用层能拿到的有效带宽,对于Web服务、数据库同步这类场景,TCP吞吐量比理论带宽更有参考价值。测试UDP丢包与抖动
如果业务包含音视频或实时信令,需要加-u 参数测UDP表现,指定发送码率 -b 200m,观察丢包率与抖动值,这两个数字直接影响通话质量。
iperf3 -c 目标服务器IP -u -b 200m -t 30
看懂测试结果:三个关键指标
输出结果里有一堆数字,别被吓到,你只需要盯住三个。带宽:不是越大越好
带宽是链路在单位时间内传输的数据量,单位通常为Mbits/sec,如果你的服务器标称100Mbps,测出来只有20Mbps,说明链路中间存在瓶颈或限速,但内网环境则要另说,万兆网卡跑不满的情况很常见,需要检查网卡驱动和协商模式。延迟:受物理距离影响
延迟是数据包从一端到另一端的时间,单位毫秒,同一个城市内网延迟一般在1毫秒以下,跨省公网可能20到50毫秒,跨国则更高,没有绝对标准,关键看你的业务对实时性的要求。
补充工具:让问题无处遁形
iperf3只回答“能跑多快”,说不清“为什么慢”,这时候要请出另外两个老搭档。ping:快速探测连通性
先跑一次带时间戳的连续ping:ping -c 100 目标服务器IP
看min/avg/max三个延迟值,如果平均延迟比正常值高一倍,要么链路绕路,要么服务器CPU负载太高。
traceroute:看清每一跳
traceroute能列出从本机到目标经过的每一个路由器IP,重点看哪一跳延迟突然飙升,或者出现星号,多晚于30毫秒的跳数往往意味着跨省或跨国路由,比如从北京的服务器到广州的服务器,正常10跳以内能到达,如果跳数超过20,就必须排查路由策略。curl:模拟真实业务请求
对于HTTP服务,直接测试请求耗时更贴近用户感受:curl -o /dev/null -s -w "connect:%{time_connect} time_total:%{time_total}" http://目标IP/test.img
这个命令能测出TCP握手时间和总下载时间,适合判断是否为应用层慢。
常见问题与优化思路
测速过程中总会遇到各种怪事,这里挑几个最常见的说。防火墙拦了iperf3端口
客户端报错“unable to connect to server”,第一时间检查服务端防火墙,用iptables或firewalld放行5201端口:- CentOS执行
firewall-cmd --add-port=5201/tcp --permanent再reload - 云服务器还要在安全组规则里放行该端口
测出来带宽远低于预期
先看CPU负载,iperf3是单线程工具,如果服务器只有一个核心,跑不满带宽很正常,用-P 4 参数开4个并发流,再看数值是否提升,如果并发也没用,检查两端网络接口是否协商成千兆,最终极的办法,换一台简米科技这种持牌机房的机器对比测试,能排除同物理机邻居抢占带宽的情况。

Q&A:服务器间网速测试常见困惑
iperf3测速会不会影响线上业务?
iperf3会占满TCP连接带宽,所以尽量不要在业务高峰期对生产服务器做长时间测试,短则10秒、长则30秒,选在低峰时段操作,或者用两台闲置的机器专门做基准测试。测出的带宽值是瞬时值还是平均值?
iperf3默认输出的是整个测试周期内的平均值,同时也会给出每秒的数据点,你可以用-i 1 参数让结果每秒打印一次,观察带宽是否平稳,如果数据大幅波动,说明链路里有拥塞控制或限速策略。










网友评论