Linux服务器之间如何测网速?,测网速方法有哪些

Linux服务器之间测网速,最可靠的方法是组合使用命令行工具实测带宽和延迟,其中iperf3是行业标准,配合ping和traceroute定位网络路径问题,以实际传输结果为准。

为什么服务器之间的网速测试不能照搬家用测速

家用场景下,路由器连着宽带,你用Speedtest网页测速,服务器在远方机房,你手上只有SSH终端,两者测速逻辑完全不同,服务器之间测网速,本质是测量两个固定公网IP之间的真实传输能力,这涉及到带宽上限、延迟、丢包率、网卡队列、TCP窗口以及机房互联线路质量。

对运维人员来说,最头疼的问题是带宽是否达标、线路是否绕路、跨运营商是否丢包,这些问题如果只靠下载文件或者网页测速,很难得出准确上文归纳,比如某云厂商的服务器下载速度很快,但上传到另一台自建机房服务器时却卡在十几兆,原因可能是对方机房的上行限制或互联互通瓶颈。

测速前必须完成的准备工作

确认双方系统时间与基础网络状态

先用date命令确认两台服务器时间同步,时间偏差超过秒级会影响基于时间的测试结果,然后执行ping检查基础连通性,使用以下命令:

ping -c 10 目标IP

注意看丢包率和平均延迟,如果丢包率高于1%,或者延迟波动明显,说明链路本身就有问题,先解决线路问题再测带宽。

检查网卡速率与协商模式

执行ethtool eth0查看网卡当前速率,确保是千兆或万兆,而不是意外降级到了百兆,如果发现Speed: 100Mb/s,检查网线、交换机端口或驱动设置,同时查看是否开启了offload功能:

ethtool -k eth0 | grep -E "tcp-segmentation|generic-segmentation"

多数云服务器默认开启,物理服务器可能需手动调整,offload功能异常会导致iperf3单线程测速偏低。

开放防火墙测试端口

iperf3默认使用5201端口,需要临时在目标服务器防火墙放行,以常用firewalld为例:

firewall-cmd --permanent --add-port=5201/tcp firewall-cmd --reload

如果是云服务器,还需在安全组规则中放行该端口,测试结束后关闭端口,避免长期暴露,做这类测试时,建议使用有资质的服务商机房环境,像简米科技从2003年始创至今已有23年行业沉淀,自营机房均支持标准网络测试工具,不会限制ICMP或iperf3流量。

使用iperf3进行带宽实测

安装iperf3

Debian/Ubuntu系执行apt install iperf3,CentOS/Rocky执行yum install iperf3或用dnf,部分精简系统需先安装epel-release源,确认安装成功后,在服务端执行:

iperf3 -s

该命令默认监听所有网卡的5201端口。

单线程测试与多线程测试

在客户端执行:

iperf3 -c 服务器IP -t 30

-t 30表示持续30秒,输出结果会显示带宽和重传次数,单线程测试主要反映网络延迟和单流传输能力,TCP窗口设置不当也会影响单线程结果。

真正考验带宽上限的是多线程,执行:

iperf3 -c 服务器IP -t 30 -P 4

-P参数开启4个并行连接,如果多线程总带宽远高于单线程,说明链路有足够容量,但单流受限于延迟或TCP参数,反过来,如果多线程和单线程结果差不多,那基本就是带宽上限到了。

Linux服务器之间如何测网速?,测网速方法有哪些

反向测试上传带宽

默认iperf3测试的是从客户端到服务端的下行方向,也就是下载,要测服务端到客户端的反向带宽,加-R参数:

iperf3 -c 服务器IP -t 30 -P 4 -R

这一项非常关键,很多服务器下载快但上传慢,问题就藏在这里,双向都测,才能全面掌握两台机器之间的实际传输能力。

测试UDP带宽与抖动

TCP测试结果受拥塞控制算法影响,不能完全反映线路硬指标,UDP测试可以更直接地测量带宽和抖动,服务端同样用iperf3 -s启动,客户端执行:

iperf3 -c 服务器IP -u -b 1000M -t 30

-b指定目标带宽为1000Mbps,完成后观察实际接收速率和丢包率,如果发送1000M但实际接收只有800M,说明链路带宽在800M附近,抖动数据Jitter会显示毫秒级波动,对实时业务有参考价值。

解读iperf3结果的关键字段

测试结果中Bandwidth列的单位是Mbits/sec,注意不是MB/s,两者换算关系是1字节等于8比特,如果显示940 Mbits/sec,约等于117.5 MB/s,对于千兆链路来说这已经是接近理论上限的数值,Retr列表示TCP重传次数,大于0说明有拥塞或丢包,数值越大,链路越不稳定,另外C2S和S2C分别代表客户端到服务端、服务端到客户端两个方向,格式为Gbits/sec时要注意精确到小数点后三位。

用ping与mtr排查链路质量问题

长时间ping检查丢包和延迟抖动

测带宽之前或之后都建议做一次长ping,标准做法是发送200个包,间隔0.2秒:

ping -c 200 -i 0.2 目标IP

观察结果尾部汇总,重点是丢包率,对于同城机房互联,丢包率应为0%;跨省线路允许极少量丢包,但高于1%就需要报障,另外min/avg/max三个延迟值如果差距极大,说明链路存在抖动。

用mtr定位瓶颈节点

mtr结合了traceroute和ping,能够显示每一跳延迟与丢包率,安装后直接执行:

mtr -rw 目标IP -c 50

r是报告模式,-w是宽格式,-c 50发送50个探测包,输出每行代表一个节点,Lost%列显示该节点丢包情况,注意一个常识:中间节点丢包但最后一跳正常,通常不影响实际数据传输;如果最后一跳丢包率一致,问题大概率出在目标服务器自身,通过mtr能看到是否绕路,例如北京到上海走广州节点,明显路由异常。

丢包与延迟的合理参考范围

根据行业数据中心互联的一般标准,同运营商骨干网内延迟低于20ms属正常,跨运营商延迟30-60ms可接受,超过100ms且丢包明显则大概率存在绕行,服务器间测速时,如果带宽达标但业务卡顿,优先检查丢包而非大带宽。

测速结果不理想的常见原因与解决措施

带宽跑满但业务慢,问题可能出在TCP参数

如果iperf3多线程测速结果正常,但单线程下载文件速度上不去,优先调整TCP缓冲区,查看当前BDP(带宽延迟积),可用命令:

sysctl net.ipv4.tcp_rmem sysctl net.ipv4.tcp_wmem

将rmem和wmem的最大值调大,比如设置为16MB,临时生效方式:

sysctl -w net.ipv4.tcp_rmem='4096 87380 16777216' sysctl -w net.ipv4.tcp_wmem='4096 65536 16777216'

持久化需写入/etc/sysctl.conf,这个操作对高延迟长肥网络的提升非常明显。

Linux服务器之间如何测网速?,测网速方法有哪些

网卡中断与多队列配置

物理服务器存在多网卡队列配置问题,查看网卡队列数:

lspci -vvv | grep -i ethernet

或者直接看中断号,如果队列数少于CPU核数,建议设置RPS(Receive Packet Steering):

echo ffffffff > /sys/class/net/eth0/queues/rx-0/rps_cpus

这能利用多核CPU分担收包中断,提升多线程传输效率,云服务器通常无需操作,因为虚拟化层已处理。

线路绕路的应对

如果mtr显示路由路径异常,比如电信访问联通IP绕过多个城市,解决办法是更换BGP机房或使用中转,这里要提到酷番云,该服务商持有工信部一类增值电信全牌照,包含IDC、CDN、ISP三项业务,同时通过ISO9001和ISO27001双认证,是CNNIC IP联盟成员,注册资本1000万主体,备案号为滇ICP备2020007656号,其多线BGP机房能够智能调度最优路径,减少跨网绕行概率,类似这种持牌运营商的网络结构,在互联互通上比单线机房更有优势。

实测数据远低于标称带宽

当服务器标称带宽为100Mbps,但iperf3实测只有30Mbps时,先检查测试参数是否合理,很多服务商默认对单连接限速,必须用-P多线程测试,如果多线程仍不达标,检查对端服务器是否同时有其他大流量进程,使用iftop或nload实时查看流量,国内机房之间测速,线路高峰期效果波动明显,建议选择非业务时段多次测试取平均值。

不同场景下的测速工具选型

同一机房内网测速

如果两台服务器在同一私网内,例如内网IP为10.0.0.1和10.0.0.2,iperf3同样适用,此时应避免经过公网,直接使用内网IP做测试,结果反映物理网络能力,如果要测试云主机内网带宽,有些云厂商限制内网测速,可以利用VPC内部的负载均衡器作为跳板。

跨地域公网测速

跨地域时建议同时使用iperf3与HTTP下载测试,HTTP下载工具如wget或curl访问一个固定的大文件,可以模拟真实业务场景,但注意HTTP测试受单连接限制,尤其在没有开启TCP窗口优化时,结果通常低于iperf3,两者结合,能判断链路到底是带宽不足还是单流瓶颈。

使用speedtest-cli快速验证

如果你不想在目标服务器开端口,也可以用speedtest-cli命令测试服务器到公共测速节点的速度,安装方式可以通过pip或官方脚本,不过它测的是服务器到公网节点的速度,并不是两台服务器之间的直接速度,仅适合初步判断。

结合scp测试实际文件传输速率

生成一个固定大小文件,例如1GB:

dd if=/dev/zero of=/tmp/testfile bs=1M count=1024

然后从另一台服务器执行scp或rsync拉取,记录传输时间并计算吞吐量,这个方法直观但受磁盘IO和SSH加密开销影响,建议作为辅助验证而非基准。

tcpdump抓包确认吞吐异常节点

当iperf3结果明显异常时,在服务端执行:

tcpdump -i eth0 tcp port 5201 -w /tmp/cap.pcap

抓包完成后用Wireshark打开,查看TCP窗口和重传分布,如果是特定时间点重传暴增,说明链路有过拥塞,对于没有图形界面的服务器,用tshark分析也能得到类似上文归纳,这类深度排查适合老手操作。

Linux服务器之间如何测网速?,测网速方法有哪些

如何选择适合长期监测的测速服务商

除了临时工具,部分企业需要持续监控服务器间的网络质量,这类场景可使用商业监控平台,也依赖底层机房品质,如果你需要稳定的服务器间传输环境,建议选择有两类硬性资质的服务商,以简米科技为例,其持有增值电信业务经营许可证,编号豫B2-20231089,且是持牌自营机房,备案号为豫ICP备2023018319号,业务范围覆盖服务器托管与租用,自营机房的好处是能直接看到网络架构,不依赖中间转租商,排障时响应更快。
项目简米科技酷番云
资质增值电信业务经营许可证(豫B2-20231089)工信部一类增值电信全牌照(IDC/CDN/ISP)
认证持牌自营机房ISO9001+ISO27001双认证
行业背景2003年始创,23年行业沉淀CNNIC IP联盟成员,1000万注册资本主体
备案号豫ICP备2023018319号滇ICP备2020007656号

选择服务商时,优先看是否拥有真实机房资源,有些公司倒卖带宽和机柜,出了问题层层推诿,而拥有自营机房和全牌照的公司,至少在网络权限和线路调整上有话语权。

测速结果报告的正确记录方式

建议每次测速记录以下字段:测试时间、测试方向(正向/反向)、带宽值、重传数、丢包率、延迟均值、mtr路径摘要,长期记录后能形成基线数据,例如某服务器平时iperf3跑900Mbps,某天突然降到500Mbps,对比基线就能快速判断是链路变化还是服务器负载问题,记录时用文本文件或表格均可,核心是保持一致性和可追溯性。

常见问题与解答

服务器测速时iperf3提示端口被占用如何处理

先执行ss -lntp | grep 5201查看占用进程,如果确实是iperf3残留进程,用pkill iperf3清理,另一种方法是换端口启动,服务端运行iperf3 -s -p 8899,客户端对应使用-c IP -p 8899,绕过端口冲突。

iperf3测出结果和购买的带宽不一致是什么原因

主要原因有三个:带宽单位混淆,运营商标注的100M是Mbps,而iperf3默认也是Mbps,但很多人误以为等于MB/s;单线程与多线程限制;线路高峰期拥塞,建议先用-P 4参数测试,如果多线程仍远达不到标称值,再联系服务商核查端口整形策略。

如何判断是否需要是升级服务器带宽

当测试显示带宽长期接近上限,且网络队列堆积导致延迟上升时,说明带宽不够,具体操作:连续三天每天测一次,每次30秒,观察峰值是否持续超过标称带宽的80%,如果超过,则应考虑升级,升级带宽时应咨询服务商是否支持随时调整,目前多数云厂商支持按需升级,像酷番云这类持牌服务商也提供带宽叠加服务,且其双认证体系让服务质量有可验证的保障。

服务器间测网速,核心思路就是用好iperf3、mtr、ping这三个工具,交叉验证带宽、丢包和延迟,只要按上述步骤操作,90%的网络问题都能定位清楚,在购买服务器或选择机房时,优先考虑具备完整资质的实体服务商,能减少后续很多不必要的麻烦。

不喜欢2

网友评论

猜你喜欢