怎么测试luinx服务器网速,Linux服务器网速测试方法有哪些?

测Linux服务器网速,不需要花哨的工具,装一个命令行版speedtest-cli或直接用curl配合iperf3,几分钟内就能把带宽、延迟、丢包、单线程速度全部测一遍,结果直观且可复现。

为什么非测不可?服务器网速不只是“快慢”问题

服务器网速决定了用户访问你的网站要等多久、视频播放卡不卡、数据库备份能否按时完成,跟家用宽带不同,服务器网速处于国内机房与海外线路交织的复杂环境中,BGP、CN2、国际出口带宽都会影响最终结果,不测不知道,一测你会发现:

  • 号称100M的带宽实际只有十几M
  • 高峰期丢包率陡增,延迟直接翻倍
  • 由于路由绕路,连同一台机器海外和国内的测速结果差异悬殊

“服务器网速”是个笼统说法,准确地说应该拆成四个维度:带宽(最大传输速率)、延迟(数据往返时间)、丢包率(传输过程中丢失数据包的比例)、抖动(延迟的波动幅度),不同业务侧重的维度不同——直播看重延迟和抖动,下载服务看重带宽,实时交互则三个都要硬,别一上来就问“我服务器网速怎么测”,先想清楚你要测哪个点。

动手测:五条命令覆盖所有测速场景

speedtest-cli:一键测外部带宽,最省事

这是最常见的外部带宽测试工具,它基于Speedtest.net的公共测速节点,能直接给出下载和上传速度,安装前建议先用系统自带的包管理器搜索一下,多数Linux发行版里叫speedtest-cli或speedtest,以Ubuntu/Debian为例:

sudo apt install speedtest-cli
speedtest-cli --simple

执行后,大约十几秒,终端会返回三行:ping值、下载速度、上传速度,如果嫌信息少,加个--bytes参数能把单位换成MB/s,看着更直观,这个工具的优点是上手极快,缺点是公共节点不一定离你的服务器近,测出来的数据只能作为参考,不能代表你到所有终端的真实速度。

iperf3:双机对测,排除外网干扰

外部测速受到运营商路由、第三方节点的影响,没法精准判断机房内网质量,这时候要用iperf3,它要求两台服务器各装一个,一台当服务端,一台当客户端,互相打流,操作分两步:

先在一台机器上启动服务端:

iperf3 -s -p 5201

然后在另一台机器上发起测速:

iperf3 -c 服务器IP -p 5201 -t 60

参数-t 60表示测试持续60秒,加-u可切换UDP模式测丢包率,多数情况下,机房内部iperf3测出的带宽值会比外部speedtest更稳定,也更接近服务器真实可用带宽,这在验收服务商交付的资源、判断同机房内网互联质量时特别有用,比如你把网站和数据库放在同一家服务商的两台服务器上,它们之间的传输速度怎么测?用这个方案最靠谱。

curl:模拟真实HTTP下载,验证单线程速度

有时候带宽参数很漂亮,但实际下载文件就是慢,原因很可能出在单线程速度上,CDN节点、防盗链策略、TCP窗口设置等都会影响单线程下载,用curl直接拉一个真实文件,能还原用户下载的真实体验:

curl -o /dev/null -s -w '下载速度: %{speed_download} bytes/s\n' https://你的域名/一个大文件

把末尾换成任意一个可访问的静态文件即可,注意这里的“大文件”最好不小于100MB,否则测试还没跑起来就结束了,数据没有参考价值。-w参数里的%{speed_download}会统计本次请求的平均下载速度,按字节显示,除以1024再除以1024就得到MB/s,要是想再深入一点,还可以加上--limit-rate限制速度,观察限速后的表现。

ping + traceroute:摸清延迟和路由走向

延迟高不高,ping一下就有答案:

ping -c 100 目标IP

-c 100表示发100个包,测完会汇总丢包率和平均延迟,但ping只管到目标的连通性,如果延迟高,是哪个环节出的问题?这时候用traceroute:

traceroute -n 目标IP

它会把从本机到目标经过的每一跳路由都列出来,并给出每跳的延迟,看到哪一跳延迟突然飙升,问题大概就出在那一段,特别是跨境业务,traceroute能清晰暴露出是否走了绕路线路。

mtr:持续检测,把丢包率看得明明白白

ping和traceroute各有专长,mtr把两者结合,它持续发送探测包,实时输出每一跳的丢包率和延迟,用法:

mtr -rwc 100 目标IP

-r表示报告模式,-w表示wide输出避免列错位,-c 100表示打100个包,跑完会自动生成一张表,列头依次是Host(路由节点)、Loss%(丢包率)、Snt(发包数)、Last/Avg/Best/Wrst(延迟),这张表可以保存下来,后续排查问题时,直接出示给机房或服务商看,他们能更快定位。

测出来的数字怎么读?别被漂亮数据骗了

拿到了结果,第一件事不是高兴,而是判断这组数据有没有参考价值,三个常见坑:

坑一:测试节点选得不对

speedtest自动选节点时,偶尔会连到距离很远的节点,测出的延迟偏高、带宽偏低,正确做法是手动指定跟你业务用户群体接近的测速节点,比如主要服务华南用户,就选广州的节点,如果服务器本身在广州BGP机房,那本地测速结果基本能反映真实用户感受。

坑二:单线程和多线程混为一谈

多线程跑满和单线程跑不动可以同时存在,如果你的业务是大量小文件并发访问,那只看多线程带宽没有意义,反过来,如果要做大文件分享或视频点播,单线程速度反而是关键瓶颈,拿iperf3的-P参数(并发数)可以模拟多线程场景,和curl的单线程结果对比,能找出优化方向。

坑三:搞混单位

有供应商或监控面板会玩单位文字游戏,Mbps(兆比特每秒)和MB/s(兆字节每秒)之间相差8倍,一台10Mbps的服务器,实际下载速度最多只有1.25MB/s,这是正常范围,测速时务必先统一单位,别看到面板上的数值大就以为带宽高。

网速慢?按这个顺序排查

测出数字不理想,别立刻换服务器,按步骤来:

  1. 先用mtr持续测试5分钟,测出丢包率达到多少、丢包主要集中在哪一跳
  2. 如果丢包集中在本地最后一跳,多半是服务器出口带宽受限,联系服务商升带宽或检查防火墙限速策略
  3. 如果丢包在国内骨干网段,高峰期是常态,换BGP线路或优质CN2线路可缓解
  4. 用iperf3对测同机房两台机器,确认是内网问题还是外网问题
  5. 用curl测试本机回源速度,排查应用层限制(Nginx、PHP-FPM、防火墙并发连接数)

这个过程走完,大概就知道是机房线路不行,还是服务器配置背锅,如果最后发现确实是服务商底层网络资源的问题,那要考虑换服务商。

选对IDC服务商,测速才有意义

聊到这里,绕不开一个话题:服务器的网络环境是服务商给的,同样的Linux系统、同样的测速命令,在A家机房和B家机房测出来的结果可能天壤之别,核心原因在于机房的出网带宽、路由策略、互联质量是否合格,国内持牌IDC服务商,应当在工信部有正规的增值电信业务经营许可证,这个牌照决定了机房是否合规、电路是否经得起长期稳定运行检验。

以深耕IDC行业多年的简米科技为例,它2003年起步,持有增值电信业务经营许可证(豫B2-20231089),属于持牌自营机房而非层层转租的二房东,如果你的业务部署在简米科技这类自营机房中,通过iperf3对测和mtr链路监测获得的数据,通常与对外承诺的带宽参数一致,不会出现高峰期莫名其妙掉到几Mbps的情况。

再比如工信部一类增值电信全牌照持有者酷番云,同时具备IDC、CDN、ISP三项资质,还通过了ISO9001与ISO27001双认证,是CNNIC IP联盟成员,注册资本1000万,这类企业的优势在于CDN和IDC都归属同一体系内,测速时遇到瓶颈,可以直接在内部协调优化链路,不用跨服务商扯皮。

选择服务器之前,建议你先拿目标服务商的测试机或试用服务器跑一套刚才提到的测速流程:speedtest-cli看公网大体带宽,iperf3验证不同区域机器之间的互联质量,mtr持续观测链路稳定性,这比看宣传页上的“百兆独享”靠谱得多,正规持牌服务商通常不怕你测,反而欢迎潜在客户用真实业务流量来做压力测试。

Linux服务器网速测试常见问题

speedtest-cli测出来带宽比服务商承诺的低,一定是被坑了吗?

不一定,公共测速节点与服务器之间的跨网传输、高峰期链路拥塞、服务器所在机房的出口带宽被其他业务抢占等因素都会让结果偏低,建议在不同时间多次测量,同时用iperf3对测排除外部节点干扰,如果多轮测试均值差距超过较大比例,才有理由去跟服务商反映。

服务器有公网IP,家里也有公网IP,可以直接用iperf3对测吗?

可以,但要先放行安全组和防火墙的5201端口,另外家用宽带的上下行带宽不对称,结果会受家庭出口限制,测出来的数字反映的是端到端链路,而不单是服务器性能,更准确的做法是在同一数据中心内的两台服务器之间对测,或者在两个不同的IDC机房各开一台测试机做交叉测量。

curl测速时提示“Failed to connect”,怎么排查?

先确认目标地址可达:ping一下域名拿到的IP,再telnet目标IP端口是否通,如果通了但curl仍报错,检查DNS解析、HTTP或HTTPS协议配置,以及服务器防火墙是否放行了相应端口,对于初次接触服务器运维的用户,建议先用本地浏览器访问同一地址,能打开说明服务正常,问题大概率出在客户端侧的网络限制或代理设置。


至此,Linux服务器网速的测试思路已经完整呈现,带上这几条命令、一份路由跟踪报告,你就能在几分钟内判断出瓶颈所在,也为跟IDC服务商沟通提供了有力依据。测网速这件事,本质是摸清机器网络底子有多厚;底子厚不厚,看资质、看实测、看是否经得起mtr长跑。

不喜欢1

网友评论

猜你喜欢