0

0

Linux 网络延迟升高的常见根因

舞夢輝影

舞夢輝影

发布时间:2026-01-30 21:53:29

|

169人浏览过

|

来源于php中文网

原创

高延迟但traceroute某跳回落,大概率是中间设备禁用ICMP而非链路故障;应优先用hping3发TCP SYN验证真实业务延迟,再排查内核收包队列、TIME-WAIT堆积或网卡ring buffer不足等问题。

linux 网络延迟升高的常见根因

ping 高延迟但 traceroute 某跳就回落,大概率是中间设备策略限制

很多人看到 ping 延迟高、丢包,第一反应是“网络差”,但真实情况常是 ICMP 被上游防火墙、运营商设备或云厂商安全组静默丢弃。这不是链路问题,而是协议层拦截。

  • hping3 -c 10 -S -p 80 目标IP 发 TCP SYN 包,比 ping 更贴近真实业务流量;若延迟正常,说明 ICMP 被限,不用调系统参数
  • traceroute -n -w 2 -q 1 目标IP 中如果某跳显示 * * * 但下跳又恢复,基本可判定该节点禁 ICMP —— 这不是故障,是配置
  • 别急着改 /proc/sys/net/ipv4/icmp_echo_ignore_all,本机设这个没用,它只控制本机是否响应 ping,不解决外网丢包

内核接收队列溢出(RX queue dropped)导致的“隐形延迟”

延迟突然升高且伴随间歇性丢包,netstat -s | grep "packet receive errors"cat /proc/net/snmp | grep -A1 Tcp 显示大量 TCPRcvQDrop,说明数据包到了网卡却卡在内核收包队列里没被及时取走。

  • 典型诱因:软中断(softirq)集中在单个 CPU 核处理,而应用没及时调用 recv() 或工作线程阻塞
  • 检查命令:cat /proc/interrupts | grep eth0 看各 CPU 上网络中断分布;若只有 CPU0 高,说明 RSS/RPS 未启用或配置失效
  • 临时修复:echo f > /proc/irq/*/smp_affinity_list(绑定到所有核),但长期应配 ethtool -L eth0 combined 4 + 启用 RPS

TIME-WAIT 连接堆积引发端口耗尽与连接失败

不是所有高延迟都来自 RTT,有时是客户端发不出新连接——ss -tan state time-wait | wc -l 超过 2~3 万,再看 ss -sorphan 数量飙升,说明连接无法快速释放,新请求排队等待端口。

英特尔AI工具
英特尔AI工具

英特尔AI与机器学习解决方案

下载
  • net.ipv4.tcp_tw_reuse = 1 是安全的,但仅对客户端有效(需时间戳开启);服务端请勿依赖它来缓解高并发短连接
  • net.ipv4.tcp_fin_timeout = 30 可缩短 FIN_WAIT_2 时间,但不能低于 30 秒,否则可能丢 ACK
  • 禁用 tcp_tw_recycle:Linux 4.12+ 已移除,旧内核开启后在 NAT 环境下会导致大量连接被拒绝(时间戳反向校验失败)

驱动或 ring buffer 不足引发的底层丢包

Wireshark 抓包发现大量 “TCP Retransmission” 但服务器 netstat -s 却没报错?很可能丢包发生在网卡 DMA 层——数据还没进内核就被硬件丢弃了。

  • 查丢包位置:ethtool -S eth0 | grep -i "drop\|over\|error",重点关注 rx_missed_errors(ring buffer 溢出)、rx_over_errors(DMA 缓冲区满)
  • 增大 ring buffer:ethtool -G eth0 rx 4096 tx 4096(值需查网卡支持上限,如 Intel ixgbe 最大 4096)
  • 老旧驱动常见于 Realtek 或某些国产网卡,lspci -k | grep -A3 Ethernet 看 kernel driver 是否为 r8169(建议换 r8168

真正卡住排查节奏的,往往不是参数没调对,而是把应用层慢(比如数据库查询 500ms)当成网络延迟去优化。先跑通 hping3 -Stcpdump 确认协议是否干净,再动内核参数。

热门AI工具

更多
DeepSeek
DeepSeek

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

豆包大模型
豆包大模型

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

通义千问
通义千问

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

腾讯元宝
腾讯元宝

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

文心一言
文心一言

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

讯飞写作
讯飞写作

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

即梦AI
即梦AI

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

ChatGPT
ChatGPT

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

相关专题

更多
scripterror怎么解决
scripterror怎么解决

scripterror的解决办法有检查语法、文件路径、检查网络连接、浏览器兼容性、使用try-catch语句、使用开发者工具进行调试、更新浏览器和JavaScript库或寻求专业帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

228

2023.10.18

500error怎么解决
500error怎么解决

500error的解决办法有检查服务器日志、检查代码、检查服务器配置、更新软件版本、重新启动服务、调试代码和寻求帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

297

2023.10.25

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

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

397

2023.07.18

堆和栈区别
堆和栈区别

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

575

2023.08.10

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

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

397

2023.07.18

堆和栈区别
堆和栈区别

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

575

2023.08.10

线程和进程的区别
线程和进程的区别

线程和进程的区别:线程是进程的一部分,用于实现并发和并行操作,而线程共享进程的资源,通信更方便快捷,切换开销较小。本专题为大家提供线程和进程区别相关的各种文章、以及下载和课程。

525

2023.08.10

数据库三范式
数据库三范式

数据库三范式是一种设计规范,用于规范化关系型数据库中的数据结构,它通过消除冗余数据、提高数据库性能和数据一致性,提供了一种有效的数据库设计方法。本专题提供数据库三范式相关的文章、下载和课程。

360

2023.06.29

C++ 设计模式与软件架构
C++ 设计模式与软件架构

本专题深入讲解 C++ 中的常见设计模式与架构优化,包括单例模式、工厂模式、观察者模式、策略模式、命令模式等,结合实际案例展示如何在 C++ 项目中应用这些模式提升代码可维护性与扩展性。通过案例分析,帮助开发者掌握 如何运用设计模式构建高质量的软件架构,提升系统的灵活性与可扩展性。

14

2026.01.30

热门下载

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

精品课程

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

共48课时 | 8.1万人学习

Git 教程
Git 教程

共21课时 | 3.1万人学习

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

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