讲师中心 微信公众号
AI工具推荐 视频效率加速

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

老雪吖_5669

老雪吖_5669

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

|

169人浏览过

|

来源于php中文网

原创

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

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

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

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

  • 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,一个大流就能堵死整个出口。

Obsidian (Linux)
Obsidian (Linux)

操作 Obsidian 库(纯 Markdown 笔记),并通过 notesmd-cli 实现自动化。

下载
  • fq 默认限制每个流排队不超过 10ms 的数据量(由 flow_limit 和 quantum 控制),避免单个长连接占满缓冲区
  • 必须配合 bbr 或 cubic 使用才有意义:如果拥塞算法还在狂发,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工具

更多
VibeKnow
VibeKnow Hot

一款AI视频创作工具,主要用于全球首个AI知识视频创作平台,文档、文章、网页,一键生成视频,适合需要提升相关任务效率的用户。

AionClaw
AionClaw Hot

AionClaw是一款面向办公、创作和编程任务的AI桌面智能体。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

PixTV
PixTV Hot

PixTV是一款面向AIGC内容创作的AI视频生成工具。

咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

相关专题

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

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

6256

2023.08.14

http500解决方法
http500解决方法

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

3643

2023.11.09

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

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

934

2023.11.14

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

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

6606

2024.03.12

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

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

5470

2024.08.16

Go 语言 HTTP 编程与中间件开发教程合集
Go 语言 HTTP 编程与中间件开发教程合集

全面讲解 Go 语言 HTTP 编程的核心知识,涵盖 net/http 标准库的 Server/Handler/HandlerFunc 体系、DefaultServeMux 路由注册与自定义路由器、Request / ResponseWriter 请求响应处理、中间件(Middleware)链式设计模式与常见中间件(日志/CORS/认证/限流)开发、http.Client 的超时配置与连接池管理、Cookie / Session 处理、

541

2026.05.08

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

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

4230

2023.06.21

如何安装LINUX
如何安装LINUX

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

3573

2023.06.29

Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

60

2026.10.22

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习

Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习

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

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn