最近通过报警发现应用频繁有超过1s的慢请求,通过查看日志、tcpudmp和wireshark最后定位是网络问题,在排查过程中也参考了网上的很多文章,但是写的都不是全,现在有空分享一下问题排查的一些经验,希望对遇到类似问题的码农们有所帮助,具体排查步骤如下:
- 查看程序日志,程序中对超过100ms的请求都有日志输出,通过查看日志发现有大量的数据库和redis超时
- 查看redis的慢请求,redis并没有发现慢请求日志,redis慢请求查看的方法具体可以参考redis的文档:http://doc.redisfans.com/server/slowlog.html
- 查看数据库的慢查询日志,数据库也没有相应的慢请求
- 最后开始怀疑时间是耗费在连接数据库和redis的网络连接上,通过tcpdump命令dump出系统上一定时间的tcp请求,具体命令是
tcpdump -i eth0 -s 0 -w tcp_245.pcap host 192.168.1.245
其中-i参数指定抓取哪个网卡上的tcp请求,-w参数指定dump的文件目录 host参数指定抓取该ip发出和收到的请求,-s 0 : 抓取数据包时默认抓取长度为68字节。加上-s 0 后可以抓到完整的数据包,具体其它命令参数可以通过tcpdump --help查看 - 通过wireshark分析dump出来的tcp请求,首先需要在wireshark中找到想要的请求,这时需要通过IP和端口号先过滤出所有的redis请求,具体截图如下:
其中ip.dst == 10.10.1.1 指定了redis所在的服务器ip, tcp.dstport == 7522指定了redis的端口号,过滤后明显发现有TCP Retransmission,即网络重传 - 为了确认是因为重传带来的时间损耗,需要过滤该次请求的完整记录,具体步骤:选择RetransmissionI的行--右键--选择追踪流--TCP流,截图如下:
从图中可以看出重传的tcp包中的seq和ack跟上面tcp包中的seq和ack是完全相同,数据包的大小也完全一样,可以确认是同一个tcp请求发生了一次重试,但是从时间上看延迟了200ms,这只是其中的一个TCP请求,如果一个HTTP请求中会有10个左右的数据库和redis请求延迟时间会达到2s以上。
相关推荐
tcpdump以及wireshark的部分功能教程
busybox/tcpdump/wireshark
最新一手资源更新通知加微信资料整理不易 仅供个人学习 请勿倒卖此时,可以借助 nslookup 或者 dig 的调试功能,分析 DNS 的解析过程,再配合 pi
Tcpdump工具的详细说明以及实例说明,Wireshark 1.6.8工具以及中文使用文档。
通过tcpdump或者wireshark抓到的包通常是rtp流,保存为.pcap格式文件后中,可通过wireshark进行解析,得出h264裸流,并保存为文件。 我这里有一段rtp流文件,作为演示使用(这个文件有点不标准,一般一个nal打一个...
因为Tcpdump被设计在基于UNIX的系统上运,所以它常易于通过包管理器来安装,甚可以预装在很多Linux发版本中。如果你想在Windows上
本文主要介绍如何使用tcpdump和wireshark对Android应用程序进行抓包并分析,需要说明的是在抓包之前,你的Android设备必须root过了,另外你的电脑必须有Android SDK环境。 下载并安装tcpdump tcpdump链接:...
tcpdump抓包分析,tcpdump抓包分析,tcpdump抓包分析,tcpdump抓包分析,tcpdump抓包分析,tcpdump抓包分析,tcpdump抓包分析,tcpdump抓包分析
使用tcpdump 和wireshark进行Android(root过后)设备的实时抓包
协议持:两个具都持常的第3层和第4层的协议,但Tcpdump对第7层的协议持不。TShark提供了丰富的第7层协议持,因为它在底层使Wir
用法./remote-wireshark.sh "[SSH 凭据和额外选项]" "[TCPPDUMP 额外选项]"例子显示 eth0 上 user@host 的网络流量: ./remote-wireshark.sh "user@host" "-i eth0 port 80"通过不同的端口连接以嗅探 google dns ...
Linux下抓包工具tcpdump应用详解
使用wireshark+tcpdump抓取手机数据所需文件
抓包工具中文版集合: fiddler4.6.2.0最新版本及汉化、离线插件syntaxsetup wireshark中文版(上传的是XP也能用的1.4.9版本) tcpdump及中文详细教程 无root抓包工具Packet Capture汉化版1.22.1
Wireshark和Tcpdump_测试中心网络兴趣小组
tcpdump抓包,Wireshark图形化分析数据包
wireshark源码分析问题这几天在看wireshark(ethereal)源代码。看源代码的主要兴趣点是它的分析模块(dissect)。分析之后他的数据存在哪儿,怎么打印的(-V参数)。我想把分析后的数据,提取出来,存在自己定义的...
使用wireshark工具,进行多个抓包合并
tcpdump Android抓包工具