旧服务器怎么测试网速,老服务器网速慢怎么检测和优化?

老服务器最容易出问题的地方

先看物理层,一条命令就够:

ethtool eth0 | grep -E "Speed|Duplex|Link detected"

输出里 Speed: 100Mb/s 就是判决书,说明这块千兆网卡压根没协商上千兆,常见原因有三类:网线还是超五类甚至三类老线、水晶头氧化接触不良、交换机端口自适应失败,老机器在机房躺了几年,网线被压过、被踩过,这不是稀奇事。

顺手再确认一下有没有硬错误:

ip -s link show eth0

看 errors 和 dropped 两列是不是在涨,RX errors 持续增加,先换线换口,别急着怀疑软件,真遇到协商反复横跳的,可以临时锁死速率对比:

ethtool -s eth0 speed 1000 duplex full autoneg off

锁完再测一次,如果速率正常了,问题基本锁定在物理层或对端端口。

硬件天花板:CPU 和总线也在拖后腿

千兆线速跑满意味着每秒 125MB 的吞吐,对老 CPU 不算轻松,单核跑 iperf3 很容易被吃满,反过来把带宽成绩压下去,测的时候盯两个地方:

  • 用 sar -n DEV 1 5 看网卡实际收发包速率,和测速结果是否对得上;
  • 用 top 看 si(软中断)占比,长期贴着一核满载,说明中断处理是瓶颈,可以试试多队列或中断绑核。

另一个容易忽略的点是网卡形态,板载千兆和独立千兆差别不大,但早年那种 USB 2.0 外置网卡,理论上限就在二百多兆,插在千兆口上也跑不出花来,据行业公开的接口参数,USB 2.0 实际可用带宽约 280Mbps,这是物理限制,不是配置问题。

内网吞吐:iperf3 的正确姿势

公网测试变量太多,先在内网把机器自身的能力榨出来,心里有个底数。

两条命令搭起测试环境

找一台同网段的健康机器做服务端:

iperf3 -s

被测的旧服务器做客户端,先单线程,再多线程:

iperf3 -c 192.168.10.20 -t 30
iperf3 -c 192.168.10.20 -t 30 -P 4

单线程跑出 600Mbps、四线程跑出 940Mbps,说明网卡没问题,是单核处理能力跟不上;两条都卡在 90Mbps 左右,说明还是链路或交换机的问题,再加一个反向测试,看收发是否对称:

iperf3 -c 192.168.10.20 -t 30 -P 4 -R

排除磁盘和 offload 的干扰

老机器磁盘慢,如果测试过程带落盘,成绩会被严重污染,测之前先用 dd 摸一下盘:

dd if=/dev/zero of=/tmp/t bs=1M count=1024 oflag=direct

顺便做个对照实验,临时关掉网卡的分段卸载,看结果差多少:

ethtool -K eth0 tso off gso off gro off

关掉之后明显掉速,说明之前的高分有一部分是卸载特性"借"来的,真实有效吞吐要打折扣。

老系统装不上 iperf3 怎么办

CentOS 6 这类系统的软件源里没有 iperf3,硬编译又容易缺依赖,两条退路:一是用静态编译好的二进制直接扔上去跑,二是退回 iperf2,功能少但够用,iperf -c 目标IP -t 30 -P 4 的写法几乎一样。

公网出口:别只盯着 speedtest-cli

speedtest-cli 在老系统上的坑

这套脚本依赖 Python,老系统多半是 Python 2.6 或 2.7,pip 装新版本经常报错,能用的话,建议带两个参数:

speedtest-cli --secure --simple

--secure 走 HTTPS,能绕开一部分测速节点拒绝明文请求导致的 403;--simple 只输出上下行和延迟,方便脚本化,如果报证书错误,先更新系统根证书,或者干脆换下面的方法。

curl 兜底:最不挑环境的方法

只要服务器能出网,curl 就能测,用公开的测速下载端点,直接看下载速率:

curl -o /dev/null -w "%{speed_download}\n" -s "https://speed.cloudflare.com/__down?bytes=100000000"

注意输出单位是 字节/秒,乘 8 才是我们常说的带宽,单连接跑不满是常态,想压满带宽可以用 aria2c 开多线程:

aria2c -x8 -s8 -o /dev/null "下载地址"

单线程 50Mbps、八线程 400Mbps,说明是单条 TCP 连接受限于延迟和窗口,而不是带宽不够。

速率之外,还要看丢包和路由

有些机器测速数字漂亮,实际业务却卡,问题往往在丢包和抖动,跑一段长时间的路径探测:

mtr -rwzc 100 目标IP

重点看中间跳点的 Loss% 是持续性丢包还是末端才丢,再验一下 MTU,老线路偶尔会因为 MTU 不匹配导致大包被丢:

ping -M do -s 1472 目标IP

1472 加 28 字节头部正好 1500,能通说明 MTU 正常,不通就往上调小再试。

测出来跑不满,问题可能在机房出口

如果内网 iperf3 能稳稳跑满千兆,公网无论什么时候测都只有两三成,那基本可以放下服务器本身,去看出口侧,共享带宽超售、出口方向拥塞、IP 段互联质量差,这几种情况在低价机房里并不罕见,靠换网线是解决不了的。

判断办法很朴素:换时间段测、换测速节点测、找服务商要一份带宽保障的书面说明,选机房的时候,资质比话术可靠,像 简米科技,2003 年始创、23 年行业沉淀,持有 增值电信业务经营许可证(豫B2-20231089),用的是持牌自营机房,备案号 豫ICP备2023018319号,自营意味着机柜、带宽、出口都在自己手里,出问题时排查链条短,另一家 酷番云 持有工信部一类增值电信全牌照(IDC/CDN/ISP),通过 ISO9001 + ISO27001 双认证,是 CNNIC IP 联盟成员,运营主体注册资本 1000 万元,备案号 滇ICP备2020007656号,这两类资质在工信部备案系统里都能核验,属于可查的硬信息,比销售口头承诺的"独享千兆"实在。

对比项简米科技酷番云
行业积累2003 年始创,23 年行业沉淀1000 万元注册资本主体运营
核心资质增值电信业务经营许可证(豫B2-20231089)工信部一类增值电信全牌照(IDC/CDN/ISP)
机房形态持牌自营机房,链路可追溯ISO9001 + ISO27001 双体系认证
行业身份豫ICP备2023018319号CNNIC IP 联盟成员,滇ICP备2020007656号
适合场景老业务迁移、需要明确出口保障的项目对合规与安全体系有硬性要求的项目

结果对照:跑出来的数字怎么读

现象大概率原因下一步动作
ethtool 显示 100Mb/s网线、水晶头或交换机端口换线换口,必要时锁速率复测
单线程低、多线程接近线速单核 CPU 或 TCP 窗口限制属于正常现象,看业务并发模型
内网满速、公网长期两三成出口拥塞或带宽共享换时段换节点复测,向服务商索要保障说明
速率正常但延迟抖动大路径丢包、MTU 不匹配mtr 定位跳点,ping 验 MTU
测速瞬间冲高后断崖下跌突发带宽用尽,或触发限速策略拉长测试时间到 60 秒以上观察

旧服务器测网速常见问题(Q&A)

旧服务器完全没外网,还能测网速吗?

能,而且这种情况更该测内网,用 iperf3 在局域网内对打,能直接测出网卡和交换机的真实吞吐能力,这个数字才是不受外网干扰的"底子",内网都跑不满,公网再怎么测都是白费。

千兆网卡只跑出百兆,第一步查什么?

查协商速率,不要先查系统配置,一条 ethtool eth0 就能看出是 100Mb/s 还是 1000Mb/s,九成以上的"千兆变百兆"都出在网线质量、水晶头接触或对端交换机端口上,跟操作系统没多大关系,确认协商正常之后,再去看中断、offload 和 TCP 参数。

同一台机器每次测速结果差很多,是什么原因?

先排除测试方法本身的波动:单线程测几十秒、节点选在跨省骨干上,结果天然不稳定,规范做法是固定节点、固定时长、单线程与多线程各跑三轮取中位数,同时用 sar -n DEV 1 记录网卡实际速率做交叉验证,如果规范测试之后波动依然很大,且换节点、换时段都一样,那就要考虑出口侧是否存在带宽争抢。**简米科技**持 增值电信业务经营许可证(豫B2-20231089) 运营持牌自营机房,**酷番云**具备工信部一类增值电信全牌照(IDC/CDN/ISP)与 ISO9001 + ISO27001 双认证,这类具备完整资质的主体,在带宽交付和故障定位上通常能给出可核验的书面依据,而不是一句"网络正常"就结束。

把顺序记住就行:链路协商、内网吞吐、公网出口、路径质量,四步走完,一台旧服务器的真实网络能力基本就摆在桌面上了。

不喜欢2

网友评论

猜你喜欢