服务器与大带宽专家 · 持牌IDC/CDN/ISP服务商
简米科技官网JIANMI TECH
资讯 2026-09-14 简米科技 3,193 字 7 分钟阅读

带宽没跑满怎么办,如何判断是发送端还是接收端?

导读带宽没跑满,第一件事不是打运营商电话,而是分清当前数据流是发送端在推,还是接收端在拉,多数卡顿发生在两端设备本身,而不是接入网,发送端和接收端,到底谁在限速一个TCP数据流有两个角色:发送端负责把数据推出去,接收端负责收下来并确认,下载大文件时,服务器是发送端,你的电脑是接收端;上传视频到网盘时,方向反过来,你……

带宽没跑满,第一件事不是打运营商电话,而是分清当前数据流是发送端在推,还是接收端在拉,多数卡顿发生在两端设备本身,而不是接入网。

发送端和接收端,到底谁在限速

一个TCP数据流有两个角色:发送端负责把数据推出去,接收端负责收下来并确认,下载大文件时,服务器是发送端,你的电脑是接收端;上传视频到网盘时,方向反过来,你的电脑变成发送端。

很多人把带宽跑不满当成一个笼统问题,其实要先问一句:现在是谁在发,谁在收?

下载慢不等于运营商偷工减料

下载场景下,发送端可能是CDN节点或某台服务器,接收端是你的PC或手机,如果接收端网卡协商在百兆、磁盘写入只有几十MB/s、或者接收窗口设置过小,就算运营商给了千兆接入,实际速率也上不去。

上传慢时,发送端往往是自己的设备

上传场景下,你的设备是发送端,机械硬盘读取速度、CPU处理TCP卸载的能力、发送缓冲区大小,都会限制带宽,很多用户测下载正常,一上传文件就掉到几MB/s,第一反应是宽带不行,实际上是发送端根本没能力把数据推满。

带宽跑不满是什么原因?接收端三个高频陷阱

网卡协商速率降到了百兆

先做一步验证:在Windows打开PowerShell,输入:

Get-NetAdapter | Select-Object Name,LinkSpeed

如果结果显示 100 Mbps,说明网卡没有协商到千兆,原因可能是网线质量差、水晶头氧化、路由器和电脑之间某个口是百兆、或者网卡驱动太旧。

  • 六类非屏蔽网线在短距离内通常可以稳定跑千兆
  • 五类线如果质量一般,长距离容易被协商成百兆
  • 更换网线后,用 wmic nic where NetEnabled=true get Name,Speed 再确认一次

接收窗口和TCP实现把速度卡住

行业共识认为,TCP吞吐量受接收窗口和丢包的双重约束,而非只由链路带宽决定,如果接收端窗口太小,发送端必须等确认,带宽自然跑不满。

带宽没跑满怎么办,如何判断是发送端还是接收端?

在Linux服务器上,可以用:

sysctl net.ipv4.tcp_rmem

查看接收缓冲区,若数值偏小,可以适度调大:

sysctl -w net.ipv4.tcp_rmem="4096 87380 16777216"

这是接收端优化,不是玄学。

磁盘写入速度跟不上,网络再快也没用

下载速度大约 100 MB/s 时,如果写入的是机械硬盘碎片区,实际写入可能只有 80 MB/s,甚至会卡在 40-60 MB/s,此时网络带宽明明有剩余,接收端却无法继续收数据。

  • 下载大文件前先测磁盘顺序写速度
  • 用CrystalDiskMark或 dd 做基准
  • 如果磁盘写入明显低于带宽对应的字节数,瓶颈就在接收端磁盘

上传速度慢下载正常是什么问题:发送端瓶颈比想象中多

发送缓冲区不够,小文件传输尤其吃亏

上传很多小文件时,每个文件都要建立连接、等待确认,发送缓冲区过小,会让数据发送频繁停顿。

在Linux服务器上检查:

sysctl net.ipv4.tcp_wmem

如果默认值较低,可以调整:

sysctl -w net.ipv4.tcp_wmem="4096 16384 4194304"

这个值影响发送窗口,直接影响上传吞吐。

发送端磁盘读取慢,CPU单核被占满

上传时,发送端需要从磁盘读数据,再交给网卡,如果磁盘是机械盘,同时又在跑数据库或备份任务,读取速度会断崖式下降,CPU单核负责处理中断,如果被其他进程占满,网卡队列处理不过来,速度也会掉。

拥塞控制和丢包让发送端主动降速

TCP发送端遇到丢包会减小拥塞窗口,如果你上传到远端服务器经过的路径有丢包,发送端会主动收着发,带宽自然不满,这时远端接收端再强也没用。

三步用命令定位:发送端还是接收端在拖后腿

第一步:先测本地磁盘顺序读写

带宽没跑满怎么办,如何判断是发送端还是接收端?

排除磁盘瓶颈是第一优先级,下载要看写入速度,上传要看读取速度。

Linux下:

dd if=/dev/zero of=./testfile bs=1M count=2000 oflag=direct

测写速度,

dd if=./testfile of=/dev/null bs=1M count=2000

测读速度,Windows下用CrystalDiskMark即可,不用记命令。

如果测得速度低于带宽对应速度的八到九成,磁盘就可能顶不住满速率传输。

第二步:用iperf3双向打流

在发送端和接收端分别安装iperf3。

接收端启动服务:

iperf3 -s

发送端测下载方向:

iperf3 -c <接收端IP> -t 30 -i 2

再反向测上传方向:

iperf3 -c <接收端IP> -t 30 -i 2 -R

重点看两个方向的TCP吞吐是否接近物理带宽,如果正向接近、反向差很多,说明瓶颈在反向的发送端或正接收端配置。

第三步:抓包看TCP零窗口和重传

用Wireshark在接收端抓包,过滤:

tcp.analysis.zero_window

出现大量零窗口,说明接收端处理不过来,窗口被填满,过滤:

tcp.analysis.retransmission

出现较多重传,说明链路有丢包或质量欠佳,发送端被拥塞控制压制,根据这两个信号基本能定位责任端。

三个真实场景:为什么换了千兆宽带还是跑不满

千兆宽带测速只有几百兆:接收端设备要背锅

很多用户升级了千兆宽带,但测速只有几百兆,问题多半出在接收端设备上。

  • 路由器WAN口是千兆,LAN口是百兆
  • 光猫桥接后,路由器没有开启硬件加速
  • 电脑网卡虽然是千兆,但驱动太老或省电模式在降速
  • 测速时后台有迅雷、网盘、Windows更新在抢占连接

先排除上述问题,再下结论说是运营商问题。

上海千兆宽带测速只有500兆?先换根六类线再下结论

经常有人搜索“上海千兆宽带测速只有500兆”,其实多数情况下不是上海宽带骨干网的问题,而是最后一米设备不给力,五类线、超五类线在长距离、弯折多、水晶头质量差的情况下,协商速率会掉到百兆或数百兆,换一根六类非屏蔽线,很多测速就正常了。

带宽没跑满怎么办,如何判断是发送端还是接收端?

公司专线带宽价格不低,为什么上传还是跑不满?

公司光纤专线带宽价格通常比家用宽带高出不少,但如果上传还是跑不满,先不要着急加钱扩带宽。

  • 检查防火墙或路由器的QoS策略,是否限速了上传
  • 检查服务器网卡是否千兆、磁盘读取是否成为瓶颈
  • 检查公司出口是否存在会话数超限或运营商限制并发连接数

业内专家指出,公司专线上传慢的案例中,相当一部分是内部设备或策略造成,而不是接入带宽本身不够。

带宽没跑满,先分清发送端还是接收端,再动手,盲目升级带宽、换路由器、打客服电话,往往解决不了真问题,先看方向,再查磁盘、网卡、窗口和丢包,大多数瓶颈都会有答案。

Q&A

带宽跑不满时,怎么判断是发送端还是接收端?

先用iperf3双向测试,下载方向接近带宽、上传方向差很多,优先查发送端磁盘读取和发送缓冲区;两个方向都差,优先查接收端窗口和网卡协商;单方向大量重传,查链路质量。

接收端和发送端都有哪些典型瓶颈?

接收端常见:网卡协商速率低、TCP接收窗口小、磁盘写入慢、CPU处理能力不足,发送端常见:磁盘读取慢、发送缓冲区过小、拥塞控制被丢包触发、应用层队列太短。

为什么带宽测试正常,实际传输文件还是慢?

因为测速跑的是单纯TCP连接,实际文件传输可能涉及大量小文件、多线程竞争、磁盘随机读写、远端服务器限速等因素,测速正常只能说明链路带宽够,不能代表业务场景一定能跑满,最终还是要回到发送端和接收端各自的能力上排查。

分享本文
本文为 简米科技官网 原创,已由运维技术专家审核。转载请注明来源:原文链接
售前咨询 服务热线 售后 邮箱