0

0

Linux 网络拥塞排查与解决方法

舞夢輝影

舞夢輝影

发布时间:2026-02-24 14:13:17

|

109人浏览过

|

来源于php中文网

原创

判断网络拥塞需综合ss -i(重传、rwnd)、tc qdisc(backlog持续>0)、/proc/net/snmp(tcpretranssegs陡增)等指标;ping丢包率比延迟更敏感;调优需匹配算法(如bbr+fq)、关闭干扰offload,并协同端到端队列控制。

linux 网络拥塞排查与解决方法

怎么看当前有没有网络拥塞

Linux 本身不直接报“拥塞”这种语义错误,得看底层指标是否异常。最直接的信号是 ss -inetstat -s 里大量重传、SACK 丢弃、接收窗口收缩;tc qdisc show 显示队列已满(backlog 持续 >0);cat /proc/net/snmpTcpRetransSegs 短时间陡增。

  • ss -i 能看到每个连接的重传数(retrans 字段)、RTT 估算(rtt)、接收窗口(rwnd)。如果某连接 retrans > 0 且 rwnd 接近 0,基本就是接收方被压垮了
  • tc qdisc show dev eth0 如果显示 backlog 12345b 且持续不降,说明内核发送队列在排队,不是应用慢,是链路或中间设备卡住了
  • 不要只盯 ping 延迟:拥塞时 RTT 可能只涨几十毫秒,但丢包率和重传会明显上升;ping -c 10 -q google.com 后看丢包率比看平均延迟更有效

为什么改 net.ipv4.tcp_congestion_control 有时没用

换算法(比如从 cubic 切到 bbr)不等于立刻改善,它只影响发端行为,前提是路径支持、接收方不拖后腿、且你真在受控链路上。

  • bbr 需要内核 ≥ 4.9,且必须加载 tcp_bbr 模块:modprobe tcp_bbr && echo "tcp_bbr" > /etc/modules;否则 sysctl -w net.ipv4.tcp_congestion_control=bbr 会静默失败
  • bbr 在纯丢包场景(如 Wi-Fi 干扰)下反而不如 cubic,因为它靠测量带宽而非丢包触发降速;若你实际问题是中间路由器缓存溢出(bufferbloat),bbr + fq qdisc 才管用
  • 改完记得验证:sysctl net.ipv4.tcp_congestion_control 输出必须是你设的值;有些发行版(如 RHEL 8)默认禁用 bbr,需额外打开 net.core.default_qdisc=fq

tc qdisc add dev eth0 root fq 为什么比 pfifo_fast 有效

fq(Fair Queueing)不是简单“加个队列”,而是给每个 TCP 流分配独立子队列 + 主动控制排队时长,直接缓解 bufferbloat;而默认的 pfifo_fast 是无差别 FIFO,一个大流就能堵死整个出口。

Play.ht
Play.ht

根据文本生成多种逼真的语音

下载
  • fq 默认限制每个流排队不超过 10ms 的数据量(由 flow_limitquantum 控制),避免单个长连接占满缓冲区
  • 必须配合 bbrcubic 使用才有意义:如果拥塞算法还在狂发,fq 只是把丢包从“随机丢”变成“精准丢”,效果有限
  • 注意硬件 offload 干扰:某些网卡(如 Intel X550)开启 tx offload 时,tc 统计可能不准;可临时关掉:ethtool -K eth0 tx off

应用层写法怎么加重拥塞

很多服务端代码看似正常,实则绕过内核拥塞控制,比如手动拼包、禁用 Nagle、或反复 write() 小数据不 flush

  • setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, &on, sizeof(on)) 开启后,小包立刻发,但若应用层节奏失控(比如每毫秒写 100B),就会制造大量微突发,把中间交换机缓冲区打爆
  • 使用 sendfile()splice() 时,如果源文件句柄是普通磁盘文件,内核可能一次读多页再发,造成突发流量;换成 read() + write() 并控制每次 write() 大小(如 ≤ 4KB),反而更平滑
  • Go 的 http.Server 默认启用 KeepAlive,但若客户端不按规范发 Connection: close,连接长期空闲又突然发大数据,容易触发 fq 的 burst 惩罚;可调低 IdleTimeout 缓解

复杂点在于:拥塞从来不是单一模块的问题。你调了 bbr,但上游 CDN 用 cubic;你配了 fq,但物理交换机缓存有 2MB;你关了 TCP_NODELAY,但业务逻辑本身就在高频轮询。真实环境里,得同时看发端、收端、中间设备三处的队列状态。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
页面置换算法
页面置换算法

页面置换算法是操作系统中用来决定在内存中哪些页面应该被换出以便为新的页面提供空间的算法。本专题为大家提供页面置换算法的相关文章,大家可以免费体验。

470

2023.08.14

http500解决方法
http500解决方法

http500解决方法有检查服务器日志、检查代码错误、检查服务器配置、检查文件和目录权限、检查资源不足、更新软件版本、重启服务器或寻求专业帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

474

2023.11.09

http请求415错误怎么解决
http请求415错误怎么解决

解决方法:1、检查请求头中的Content-Type;2、检查请求体中的数据格式;3、使用适当的编码格式;4、使用适当的请求方法;5、检查服务器端的支持情况。更多http请求415错误怎么解决的相关内容,可以阅读下面的文章。

443

2023.11.14

HTTP 503错误解决方法
HTTP 503错误解决方法

HTTP 503错误表示服务器暂时无法处理请求。想了解更多http错误代码的相关内容,可以阅读本专题下面的文章。

3122

2024.03.12

http与https有哪些区别
http与https有哪些区别

http与https的区别:1、协议安全性;2、连接方式;3、证书管理;4、连接状态;5、端口号;6、资源消耗;7、兼容性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2685

2024.08.16

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

1541

2023.06.21

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

715

2023.06.29

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

300

2023.06.30

苹果官网入口与在线访问指南_中国站点快速直达与iPhone查看方法
苹果官网入口与在线访问指南_中国站点快速直达与iPhone查看方法

本专题汇总苹果官网最新可用入口及中国站点访问方式,涵盖官网直达链接、iPhone官方页面查看方法与常见访问说明,帮助用户快速进入苹果官方网站,便捷了解产品信息与官方服务。

7

2026.02.24

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 9.6万人学习

Git 教程
Git 教程

共21课时 | 3.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号