wireshark抓包问题及学习

本文讲述了使用Wireshark分析服务A请求服务B超时问题的方法,包括设置抓包参数、监控和控制抓包文件大小,以及通过分析TCP窗口和应用层原因来定位问题。还提到增大TCP窗口值以避免零窗口现象的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

wireshark抓包问题及学习

【场景1】服务A请求服务B经常超过3s,报错i/o timeout,想看下是否网络波动或者负载太高。需要抓包分析。

问题1:

超时时间不定,且请求量过大,一直抓了存文件里抓包文件过大。

解决学习:

每10分钟覆盖重写文件,在确认慢请求复现后,立即停止抓包。

-i 指定监听的网络接口;
-G 指定每隔N秒就重新输出至新文件;
-W 指定输出文件的最大数量,到达后会重新覆写第 1 个文件;
-w 输出结果至文件。
sudo tcpdump -i eth0 -G 600 -W 1 -w /tmp/tcpdump.pacp
ps -ef|grep tcpdump # 获取tcpdump的进程号
kill -9 PID # 停止抓包

问题2:

在服务B的主机上抓取到包后找到对应慢请求时间段后,不知如何分析,是哪里的问题。

解决学习:

网络组同事帮忙排查,异常颜色报文中,显示Window:0,分析为窗口已满,给出了调大服务器上窗口值限制的建议。

cat /proc/sys/net/ipv4/tcp_window_scaling
cat /proc/sys/net/ipv4/tcp_rmem
cat /proc/sys/net/ipv4/wmem

参考 TCP系列32—窗口管理&流控—6、TCP zero windows和persist timer
理解触发zero window的原因和过程是:服务B所在主机的TCP端口一直接收数据,但是B应用层没有及时读取,数据一直在TCP模块中缓存,最终受限于主机接收缓存的大小,window size会变为0。
应用层面排查是因为服务B加载了太多引擎,导致一笔请求会处理很长时间,从应用层面解决是关闭无用引擎,减小处理耗时。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值