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

Linux网络抖动问题分析_链路质量排查说明【指导】

星宇君_1995

星宇君_1995

发布时间:2026-01-04 14:28:12

|

737人浏览过

|

来源于php中文网

原创

应使用mtr --tcp -P 443测真实链路质量,因其可识别每跳TCP丢包、重传集中点与延迟突增同步性;本地抖动优先查ethtool和/proc/interrupts;ss -i与tcpdump结合定位内核或应用层问题;警惕tcp_sack等配置掩盖真实丢包。

linux网络抖动问题分析_链路质量排查说明【指导】

怎么看实时丢包和延迟抖动

直接用 ping 看不准,尤其在高负载或低优先级队列场景下,ICMP 包可能被内核丢弃或延迟调度。真正反映应用层链路质量的是 tcping 或基于真实 TCP 连接的探测。

推荐组合:mtr --tcp -P 443 example.com(持续跟踪每跳的 TCP 丢包与延迟),比单纯 ping 多出三个关键信息:每跳是否真丢包、重传是否集中在某一段、延迟突增是否同步出现。

  • 避免只看首尾两跳 —— 中间运营商设备常开启 ICMP rate-limit,ping 显示“全通”但实际 TCP 流量卡在第5跳
  • mtr 默认用 ICMP,加 --tcp 才走真实端口路径,否则测的不是业务走的链路
  • 如果 mtr 某跳显示 “???” 但后续跳正常,大概率是该节点禁 ICMP 回复,不是故障,别误判

怎么查本机网卡驱动和队列是否异常

网络抖动常源于本地网卡驱动 bug、RX/TX 队列溢出或中断绑定不均,而不是远端问题。先确认硬件层是否稳定。

执行以下命令快速筛查:

Zynq Linux Hardware Debug
Zynq Linux Hardware Debug

Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。

下载
ethtool -S eth0 | grep -E "(drop|overrun|error|reset)"
cat /proc/interrupts | grep eth0
cat /sys/class/net/eth0/queues/*/rps_cpus
  • rx_missed_errors 持续增长 → RX ring buffer 溢出,需调大 net.core.rmem_max 或启用 GRO/LRO
  • 同一 CPU 核上 eth0-TxRx- 中断数远高于其他核 → 中断未均衡,用 echo 0f > /sys/class/net/eth0/queues/rx-0/rps_cpus 手动分散(值按实际 CPU mask 调整)
  • tx_aborted_errors 非零且递增 → 物理链路不稳(光纤弯折、模块温度高、对端协商失败),不是软件问题

怎么判断是内核协议栈还是应用层导致抖动

抖动出现在建立连接后?还是仅首次 SYN 就超时?用 ss -i 和 tcpdump 对比时间戳能快速定位分界点。

例如发现业务请求 RTT 在 20ms~800ms 波动,运行:

ss -i dst 10.0.1.100:8080
tcpdump -i eth0 'host 10.0.1.100 and port 8080' -w debug.pcap -c 1000
  • ss -i 输出中 rtt 值本身波动大 → 内核 TCP 栈已感知链路不稳定(如乱序、重复 ACK 多),重点查 BBR/CUBIC 拥塞控制行为或 net.ipv4.tcp_rmem 设置
  • tcpdump 显示 SYN 重传间隔从 1s → 2s → 4s → 8s → 放弃 → 说明问题在连接建立阶段,和防火墙拦截、SYN cookie 触发、或对端 SYN 队列满(net.ipv4.tcp_max_syn_backlog)有关
  • 抓包里看到大量 DUP-ACK 但无重传 → 对端接收窗口卡住,检查对方机器的 ss -i 和内存压力

哪些配置会掩盖真实抖动、让排查变难

很多默认配置会让抖动“看起来不严重”,实则恶化底层问题。比如开启 net.ipv4.tcp_sack 后丢包恢复快,但掩盖了物理层频繁丢包;又比如 net.ipv4.tcp_slow_start_after_idle=0 让长连接持续高速发包,反而压垮中间小带宽节点。

  • net.ipv4.tcp_timestamps=1 开启时,若对端不支持或中间设备篡改时间戳,会导致连接反复重置(tcp_invalid_timestamp 计数上升)
  • net.core.netdev_budget 设为太小(如默认300)→ 软中断处理不及时,RX 队列堆积,表现为偶发 100ms+ 延迟尖刺
  • 使用 systemd-networkd 时,默认关闭 IPv6 RA 可能导致某些云厂商元数据服务超时重试,间接拉高整体延迟毛刺

抖动问题最麻烦的不是找不到原因,而是多个微小配置叠加后相互干扰 —— 比如 RPS + TSO + GRO 全开时,在特定流量模式下会产生非线性延迟抖动,必须关掉一个再对比测试。

热门AI工具

更多
豆包大模型

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

Lovart
Lovart Hot

一款面向视觉设计创作的AI设计平台,可通过智能体和画布工作流辅助制作海报、Logo、网页、PPT及其他视觉内容。

立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

DeepSeek

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

UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

WorkBuddy

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

PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

音述AI
音述AI Hot

一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

相关专题

更多
cookie
cookie

Cookie 是一种在用户计算机上存储小型文本文件的技术,用于在用户与网站进行交互时收集和存储有关用户的信息。当用户访问一个网站时,网站会将一个包含特定信息的 Cookie 文件发送到用户的浏览器,浏览器会将该 Cookie 存储在用户的计算机上。之后,当用户再次访问该网站时,浏览器会向服务器发送 Cookie,服务器可以根据 Cookie 中的信息来识别用户、跟踪用户行为等。

11859

2023.06.30

document.cookie获取不到怎么解决
document.cookie获取不到怎么解决

document.cookie获取不到的解决办法:1、浏览器的隐私设置;2、Same-origin policy;3、HTTPOnly Cookie;4、JavaScript代码错误;5、Cookie不存在或过期等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1126

2023.11.23

阻止所有cookie什么意思
阻止所有cookie什么意思

阻止所有cookie意味着在浏览器中禁止接受和存储网站发送的cookie。阻止所有cookie可能会影响许多网站的使用体验,因为许多网站使用cookie来提供个性化服务、存储用户信息或跟踪用户行为。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

804

2024.02.23

cookie与session的区别
cookie与session的区别

本专题整合了cookie与session的区别和使用方法等相关内容,阅读专题下面的文章了解更详细的内容。

1906

2025.08.19

堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

5787

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

2488

2023.08.10

堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

5787

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

2488

2023.08.10

OpenJDK JVM参数怎么调优
OpenJDK JVM参数怎么调优

Java应用运行缓慢,如何调整JVM参数?本专题介绍OpenJDK JVM性能调优的基本流程,涵盖性能指标确认、运行数据采集、内存配置和垃圾回收分析,帮助你先定位瓶颈,再通过对照测试验证效果,避免直接套用参数而影响应用稳定性。

60

2026.10.16

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
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