网络延迟与丢包问题排查实战

前言

服务响应慢、接口超时、用户反馈卡顿,很多时候问题出在网络层面。延迟高、丢包、抖动这些问题看起来简单,排查起来却需要一套系统的方法。

本文整理网络延迟和丢包问题的排查思路和常用工具,配合实际案例。


1. 基础检测工具

1.1 ping:最简单的延迟检测

# 基础用法ping192.168.1.100# 指定次数ping-c10192.168.1.100# 指定间隔(秒)ping-i0.2192.168.1.100# 指定包大小(测试MTU问题)ping-s1400192.168.1.100# 不允许分片(检测MTU)ping-Mdo-s1472192.168.1.100

关注指标

64 bytes from 192.168.1.100: icmp_seq=1 ttl=64 time=0.5 ms --- 192.168.1.100 ping statistics --- 10 packets transmitted, 10 received, 0% packet loss, time 9000ms rtt min/avg/max/mdev = 0.4/0.6/1.2/0.2 ms
  • time:单次往返延迟(RTT)
  • packet loss:丢包率
  • mdev:延迟标准差,反映抖动

1.2 traceroute:定位延迟在哪一跳

# 基础用法traceroute8.8.8.8# 使用ICMP(默认用UDP)traceroute-I8.8.8.8# 使用TCP(绕过某些防火墙)traceroute-T-p808.8.8.8# 显示AS号(定位运营商)traceroute-A8.8.8.8

输出解读

1 192.168.1.1 (192.168.1.1) 1.234 ms 1.123 ms 1.345 ms 2 10.0.0.1 (10.0.0.1) 5.678 ms 5.432 ms 5.876 ms 3 * * * 4 202.97.33.1 (202.97.33.1) 20.123 ms 19.876 ms 20.345 ms
  • 每行三个时间是三次探测的RTT
  • * * *表示该跳没有响应(可能禁ping,不一定有问题)
  • 关注延迟突然增大的位置

1.3 mtr:ping + traceroute的结合

# 交互模式mtr8.8.8.8# 报告模式mtr-r-c1008.8.8.8# 显示更多信息mtr-r-c100-w8.8.8.8

输出解读

HOST: server Loss% Snt Last Avg Best Wrst StDev 1.|-- 192.168.1.1 0.0% 100 0.5 0.6 0.4 1.2 0.1 2.|-- 10.0.0.1 0.0% 100 5.2 5.4 5.0 6.8 0.3 3.|-- 202.97.33.1 2.0% 100 20.1 21.3 19.5 45.6 5.2 4.|-- 72.14.216.1 0.0% 100 35.2 36.1 34.8 42.3 1.5 5.|-- 8.8.8.8 0.0% 100 38.5 39.2 38.0 48.6 2.1
  • Loss%:丢包率
  • Avg:平均延迟
  • StDev:标准差,反映抖动

注意:中间节点的丢包不一定是问题,有些路由器限制ICMP响应速率。关键看最终目标的丢包率。


2. 延迟问题排查

2.1 定位延迟来源

延迟高,先定位是哪段网络的问题:

# 1. 本机到网关ping-c20192.168.1.1# 2. 网关到运营商traceroute114.114.114.114# 3. 到目标服务器mtr-r-c50目标IP

常见情况

延迟位置可能原因
第一跳(网关)高局域网问题、WiFi干扰、交换机负载
运营商骨干高跨运营商、跨区域、带宽拥塞
目标服务器高服务器负载高、距离远

2.2 分析延迟波动

# 长时间ping,观察延迟变化ping-i0.5192.168.1.100|whilereadline;doecho"$(date'+%Y-%m-%d %H:%M:%S')$line"done|teeping_log.txt

分析结果:

# 看延迟分布awk-F'time=''{print $2}'ping_log.txt|awk-F' ''{print int($1)}'|sort|uniq-c# 找出延迟超过阈值的时间点grep-E'time=[0-9]{2,}\.'ping_log.txt

2.3 TCP层面的延迟分析

ping只测ICMP,实际TCP连接可能不一样:

# 测试TCP连接延迟# 安装hping3yuminstall-yhping3# TCP SYN延迟hping3-S-p80-c10192.168.1.100# 输出示例# len=46 ip=192.168.1.100 ttl=64 DF id=0 sport=80 flags=SA seq=0 win=65535 rtt=0.5 ms

也可以用tcpdump分析:

# 抓TCP握手时间tcpdump-ieth0-nn'host 192.168.1.100 and tcp[tcpflags] & (tcp-syn|tcp-ack) != 0'

2.4 应用层延迟分析

# HTTP请求各阶段耗时curl-w"\n\ DNS解析: %{time_namelookup}s\n\ TCP连接: %{time_connect}s\n\ TLS握手: %{time_appconnect}s\n\ 首字节: %{time_starttransfer}s\n\ 总耗时: %{time_total}s\n"\-o/dev/null-shttps://www.example.com# 输出示例# DNS解析: 0.012s# TCP连接: 0.045s# TLS握手: 0.123s# 首字节: 0.234s# 总耗时: 0.345s

3. 丢包问题排查

3.1 确认丢包位置

# 持续ping,统计丢包ping-c1000-i0.1192.168.1.100# 用mtr定位丢包在哪一跳mtr-r-c200192.168.1.100

分析技巧

  • 如果某一跳开始出现丢包,后续节点丢包率相近,问题在那一跳
  • 如果只有中间某一跳丢包,后续恢复,可能是该节点限制ICMP,不是真丢包

3.2 检查本机网络

# 网卡错误统计ifconfigeth0|grep-E'errors|dropped|overruns'# 或者用ip命令ip-slinkshow eth0# 详细统计cat/proc/net/dev# 检查网卡队列ethtool-Seth0|grep-E'drop|error|miss'

常见问题

# RX dropped高:接收缓冲区满# 解决:增大ring bufferethtool-Geth0 rx4096# RX errors高:物理层问题# 检查网线、交换机端口# TX dropped高:发送队列满# 检查带宽是否打满sar-nDEV1

3.3 检查系统层面

# 检查conntrack是否满cat/proc/sys/net/netfilter/nf_conntrack_countcat/proc/sys/net/netfilter/nf_conntrack_max# 检查socket缓冲区cat/proc/sys/net/core/rmem_maxcat/proc/sys/net/core/wmem_max# 检查TIME_WAIT数量ss-s# 检查SYN队列netstat-s|grep-isyn

3.4 检查网络设备

# 检查交换机端口统计(登录交换机)show interface ethernet1/1 counters# 检查路由器队列show interface fastethernet0/0|include drops# 检查防火墙连接数iptables-L-v-n

4. 常见问题场景

4.1 跨运营商延迟高

表现:同城访问延迟却很高。

排查:

mtr-r-c50-w目标IP

如果看到流量绑到了远地(比如北京的机器访问上海,结果绕到广州),就是运营商互联问题。

解决方案

  • 使用BGP多线机房
  • CDN加速
  • 用组网工具走专线(后面会讲)

4.2 WiFi环境丢包

表现:无线连接时丢包,有线正常。

排查:

# Linux查看WiFi信号iwconfig wlan0# 关注Signal level和Noise level# Signal level应该大于-70 dBm

解决方案

  • 换5G频段
  • 调整AP位置
  • 减少同频干扰

4.3 MTU问题导致丢包

表现:ping小包正常,大包就丢。

排查:

# 二分法找MTUping-Mdo-s1472192.168.1.100# 如果不通ping-Mdo-s1400192.168.1.100# 如果通ping-Mdo-s1436192.168.1.100# 继续二分

常见MTU

  • 以太网:1500
  • PPPoE:1492
  • VPN隧道:1400-1450

解决方案

# 调整MTUiplinkseteth0 mtu1400# 或者开启PMTUDsysctl-wnet.ipv4.ip_no_pmtu_disc=0

4.4 TCP重传导致慢

表现:带宽够,但传输慢。

排查:

# 查看重传统计netstat-s|grep-iretrans# 或者ss-tidst192.168.1.100# 看retrans字段

解决方案

# 调整TCP参数sysctl-wnet.ipv4.tcp_retries2=8sysctl-wnet.ipv4.tcp_syn_retries=3# 启用BBR拥塞控制(改善高延迟网络)sysctl-wnet.core.default_qdisc=fqsysctl-wnet.ipv4.tcp_congestion_control=bbr

4.5 跨机房/跨网络延迟问题

多机房部署时,机房间网络质量直接影响服务性能。

排查

# 持续监控机房间延迟whiletrue;doecho"$(date)$(ping-c1-W1对端IP|greptime=)"sleep10done>>latency_monitor.log

优化方案

  1. 专线:延迟低、稳定,但贵
  2. SD-WAN:智能选路,成本适中
  3. 组网工具:WireGuard、ZeroTier、星空组网等,在公网基础上建隧道,有一定优化效果

如果是临时跨网络调试,用组网工具把几台机器串起来挺方便。配置一次后,机器之间就像在同一个局域网,延迟也比绕公网直连稳定一些。


5. 监控与告警

5.1 Prometheus + Blackbox Exporter

# blackbox.ymlmodules:icmp:prober:icmptimeout:5sicmp:preferred_ip_protocol:ip4tcp_connect:prober:tcptimeout:5shttp_2xx:prober:httptimeout:5shttp:valid_http_versions:["HTTP/1.1","HTTP/2"]valid_status_codes:[200]
# prometheus.ymlscrape_configs:-job_name:'blackbox-icmp'metrics_path:/probeparams:module:[icmp]static_configs:-targets:-192.168.1.100-192.168.2.100relabel_configs:-source_labels:[__address__]target_label:__param_target-source_labels:[__param_target]target_label:instance-target_label:__address__replacement:blackbox-exporter:9115

常用指标

# 延迟 probe_duration_seconds{job="blackbox-icmp"} # 丢包(探测失败) probe_success{job="blackbox-icmp"} == 0 # 告警规则 - alert: HighLatency expr: probe_duration_seconds > 0.1 for: 5m labels: severity: warning annotations: summary: "High latency to {{ $labels.instance }}"

5.2 简单脚本监控

#!/bin/bash# network_monitor.shTARGETS="192.168.1.100 192.168.2.100 8.8.8.8"THRESHOLD_MS=50THRESHOLD_LOSS=5fortargetin$TARGETS;doresult=$(ping-c10-W2$target2>/dev/null)if[$?-ne0];thenecho"[$(date)] ERROR:$targetunreachable"continuefiavg=$(echo"$result"|tail-1|awk-F'/''{print $5}')loss=$(echo"$result"|grep-oP'\d+(?=% packet loss)')if[$(echo"$avg>$THRESHOLD_MS"|bc)-eq1];thenecho"[$(date)] WARNING:$targetlatency${avg}ms >${THRESHOLD_MS}ms"fiif[$loss-gt$THRESHOLD_LOSS];thenecho"[$(date)] WARNING:$targetpacket loss${loss}% >${THRESHOLD_LOSS}%"fidone

加到crontab定期执行:

*/5 * * * * /path/to/network_monitor.sh>>/var/log/network_monitor.log2>&1

6. 优化建议

6.1 系统参数优化

# /etc/sysctl.conf# 增大socket缓冲区net.core.rmem_max=16777216net.core.wmem_max=16777216net.ipv4.tcp_rmem=40968738016777216net.ipv4.tcp_wmem=40966553616777216# 启用TCP BBR(需要内核4.9+)net.core.default_qdisc=fq net.ipv4.tcp_congestion_control=bbr# 减少TIME_WAITnet.ipv4.tcp_tw_reuse=1net.ipv4.tcp_fin_timeout=30# 增大连接跟踪表net.netfilter.nf_conntrack_max=1048576

6.2 网卡优化

# 增大ring bufferethtool-Geth0 rx4096tx4096# 开启网卡多队列ethtool-Leth0 combined4# 中断亲和性(绑定到不同CPU)# 查看中断号cat/proc/interrupts|grepeth0# 绑定到指定CPUecho2>/proc/irq/XX/smp_affinity

6.3 应用层优化

  • 使用连接池,减少TCP握手
  • 启用HTTP/2,多路复用
  • 合理设置超时和重试
  • 考虑本地缓存,减少网络请求

总结

问题类型排查工具关键指标
延迟高ping, mtr, hping3RTT, 各跳延迟
丢包ping, mtr, ethtoolLoss%, 网卡错误计数
抖动mtr, ping统计StDev, 延迟波动
TCP慢ss, netstat -s重传次数
应用慢curl -w, tcpdump各阶段耗时

排查步骤

  1. 确认现象:是延迟高、丢包还是抖动
  2. 定位位置:本机、局域网、运营商、还是目标端
  3. 分析原因:网络设备、带宽、配置、还是物理层
  4. 验证解决:修改后持续观察,确认问题解决

网络问题排查需要耐心,一层层定位,工具只是辅助,关键是理解网络各层的工作原理。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1119314.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度解构:从chroot到容器——Mock构建环境的隔离技术演进与问题诊断

深度解构:从chroot到容器——Mock构建环境的隔离技术演进与问题诊断 引言:RPM构建的隔离需求 在Linux发行版开发中,RPM包的构建需要一个干净、可控的环境以确保构建的可重复性和可靠性。Mock作为Fedora社区开发的RPM构建工具,正…

欧盟EN 18031-1无线设备认证

对于计划进军欧盟市场的无线设备制造商来说,EN 18031-1已成为绕不开的合规门槛。自2025年8月1日正式强制执行以来,不少企业因对标准细节理解偏差,遭遇了产品扣留、测试反复等问题:有的误将旧版EN 303645证书当作豁免依据&#xff…

EN 18031-1通用网络安全认证新规

2025年8月1日,欧盟正式关闭了无线电设备通往其市场的一道关键“安全闸门”——《无线电设备指令》(RED)下的网络安全要求正式强制执行,而EN 18031-1正是这把闸门的核心钥匙。如果您正在为出口欧盟的无线设备(从智能音箱…

MT-Safety 标签env 和 locale

一、先给一句话总览 env 和 locale 并不是“函数线程安全不安全”, 而是说: 这些函数依赖一个“全局可变对象”, 只要这个对象在多线程运行期间不被修改,它们就是安全的。 二、背景:glibc 的 MT-Safety 注解体系 glibc 文档把函数分成几类: MT-Safe:多线程下可并发调用…

除了安全更新,EN 18031-1还有哪些重要的认证要求?

除安全更新外,EN 18031-1 作为欧盟 RED 指令下的核心网络安全标准,还明确了访问控制与身份验证、安全存储与通信、网络弹性、技术文档与合规声明四大核心要求,这些要求与安全更新共同构成设备进入欧盟市场的基础安全基线,具体内容…

写给开发者、内容创作者:当你“快做完了”却开始崩,这不是技术问题

你可能经历过这种时刻:功能都差不多了、测试也跑起来了、上线只差临门一脚——结果你突然开始焦虑、失眠、疯狂想重构、对细节极度挑剔,甚至找借口把发布往后拖。 《最小阻力之路》把这段状态称为“完成期”的典型难关:越接近成果&#xff0c…

如何确保设备满足EN 18031-1标准中的安全更新要求?

要确保设备满足 EN 18031-1 标准中的安全更新要求,需从技术设计、流程管控、测试验证三个维度构建闭环体系,覆盖更新包的全生命周期安全,具体可落地的步骤如下:明确安全更新的核心技术要求(标准硬性条款)EN…

通达信专抓超跌副图无未来

{}RSV:(CLOSE-LLV(LOW,20))/(HHV(HIGH,20)-LLV(LOW,20))*100; K:SMA(RSV,3,1),COLORWHITE; D:SMA(K,3,1),COLORYELLOW; 超跌极限买入:IF(CROSS(K,D) AND "CYS.CYS"<-10 AND REF("ASR.ASR",3)<10,50,0); 超跌反弹:IF(CROSS(K,D) AND K<20,80,20),C…

安达发|石油化工行业自动排产软件:驱动产业升级的核心引擎

在石油化工行业向绿色低碳转型的关键期&#xff0c;自动排产软件正以"数字大脑"的姿态重构传统生产模式。据中国石油和化学工业联合会数据显示&#xff0c;2025年我国石化行业规模以上企业产值将突破15万亿元&#xff0c;但行业平均设备利用率仅68%&#xff0c;库存周…

计算机毕设从选题到答辩,全程可指导(真实案例)

每年毕业季&#xff0c;都会有大量计算机专业学生在毕业设计阶段感到焦虑&#xff1a;选题不知道怎么选&#xff0c;系统做了一半卡壳&#xff0c;论文不会写&#xff0c;答辩又担心被问懵。实际上&#xff0c;计算机毕业设计并不是“不会做”&#xff0c;而是缺少清晰的流程规…

Python+Vue的NBA球星管理系统 Pycharm django flask

这里写目录标题项目介绍项目展示详细视频演示技术栈文章下方名片联系我即可~解决的思路开发技术介绍性能/安全/负载方面python语言Django框架介绍技术路线关键代码详细视频演示收藏关注不迷路&#xff01;&#xff01;需要的小伙伴可以发链接或者截图给我 项目介绍 随着信息技…

通达信日周共振

{}{日周共振} DIF:EMA(CLOSE,12)-EMA(CLOSE,26); DEA:EMA(DIF,9); 周DIF:("MACD.DIF#WEEK"); 周DEA:("MACD.DEA#WEEK"); M1:(DIFDEA)/2; M2:(周DIF周DEA)/2; MA60:MA(CLOSE,60); 日趋势:(DIFDEA)/2; 周趋势:(周DIF周DEA)/2; XG:周DIF>0 AND 周DEA>0 …

AI 量化为什么不敢上线?——我的 Fail-Closed 模板实战

很多人私下问过我一个问题&#xff1a;“AI 都已经能写策略、跑回测、算因子了&#xff0c; 为什么真正能上线跑真金白银的系统&#xff0c;反而很少&#xff1f;”这个问题&#xff0c;其实不在模型能力上&#xff0c; 而在上线这一步&#xff0c;谁敢签字。一、AI 量化“不敢…

Python+Vue的大学生创新创业调查问卷系统 Pycharm django flask

这里写目录标题项目介绍项目展示详细视频演示技术栈文章下方名片联系我即可~解决的思路开发技术介绍性能/安全/负载方面python语言Django框架介绍技术路线关键代码详细视频演示收藏关注不迷路&#xff01;&#xff01;需要的小伙伴可以发链接或者截图给我 项目介绍 随着科技的…

通达信回归斜率线

{}回归斜率线A:EMA(SLOPE(C,4)*20C,42); 经典RL:(CLOSE-LLV(LOW,9))/(HHV(HIGH,9)-LLV(LOW,9))*100; 经典K:SMA(经典RL,3,1); 经典D:SMA(经典K,3,1); 经典J:3*经典K-2*经典D; MAHL1:100*((EMA((HL)/2,3)-LLV(EMA((HL)/2,5),30)-(EMA(H,20)-EMA(L,20))) /(LLV(EMA((HL)/2,5),30…

红娘子双线强弱源码分享贴图

{} MID: (HIGHLOWCLOSE)/3;红先锋:SUM(MAX(0,HIGH-REF(MID,1)),a)/SUM(MAX(0,REF(MID,1)-LOW),a)*100,colorred;红娘子:REF(MA(CR,b),b/2.51),colorcyan;

【毕业设计】机器学习基于python的砖头墙裂缝识别

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

如何在 ALCOR 强风控逻辑约束下,如何把 V8.2 年化拉到 28%?——一次“先别死,再赚钱”的量化实战复盘

先说一句可能让很多量化同学不舒服的话&#xff1a;如果你的系统解释不清“为什么没死”&#xff0c; 那你谈年化&#xff0c;本身就站不住。这篇文章&#xff0c;我不会讲因子、不讲信号、不讲参数&#xff0c;更不会给买卖策略。 我只讲一件事&#xff1a;在 ALCOR 这种“强风…

springboot疫苗发布和接种预约系统(11650)

有需要的同学&#xff0c;源代码和配套文档领取&#xff0c;加文章最下方的名片哦 一、项目演示 项目演示视频 二、资料介绍 完整源代码&#xff08;前后端源代码SQL脚本&#xff09;配套文档&#xff08;LWPPT开题报告&#xff09;远程调试控屏包运行 三、技术介绍 Java…

《波段很赚米》指标 通达信 主图/副图 源码 贴图 说明 无未来

{}买:IF("KDJ.J"<0,10,0); 条件:CROSS(9.9,买); VAR1:(2*CLOSEHIGHLOW)/4; VAR2:LLV(LOW,5); VAR3:HHV(HIGH,5); VAR4:EMA((VAR1-VAR2)/(VAR3-VAR2)*100,5); MA1:MA(VAR4,2);{} AA:STICKLINE(VAR4>MA1,VAR4,MA1,3,1),COLORRED; BBB:STICKLINE(VAR4>MA1 AND …