通过tcpdump和wireshark分析慢请求处理问题

标签: tcpdump wireshark 分析 | 发表时间:2016-01-23 21:27 | 作者:lishichang
出处:http://www.iteye.com

最近通过报警发现应用频繁有超过1s的慢请求,通过查看日志、tcpudmp和wireshark最后定位是网络问题,在排查过程中也参考了网上的很多文章,但是写的都不是全,现在有空分享一下问题排查的一些经验,希望对遇到类似问题的码农们有所帮助,具体排查步骤如下:

  1. 查看程序日志,程序中对超过100ms的请求都有日志输出,通过查看日志发现有大量的数据库和redis超时
  2. 查看redis的慢请求,redis并没有发现慢请求日志,redis慢请求查看的方法具体可以参考redis的文档:http://doc.redisfans.com/server/slowlog.html
  3. 查看数据库的慢查询日志,数据库也没有相应的慢请求
  4. 最后开始怀疑时间是耗费在连接数据库和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查看
  5. 通过wireshark分析dump出来的tcp请求,首先需要在wireshark中找到想要的请求,这时需要通过IP和端口号先过滤出所有的redis请求,具体截图如下:

      其中ip.dst == 10.10.1.1 指定了redis所在的服务器ip, tcp.dstport == 7522指定了redis的端口号,过滤后明显发现有TCP Retransmission,即网络重传
  6. 为了确认是因为重传带来的时间损耗,需要过滤该次请求的完整记录,具体步骤:选择RetransmissionI的行--右键--选择追踪流--TCP流,截图如下:

      从图中可以看出重传的tcp包中的seq和ack跟上面tcp包中的seq和ack是完全相同,数据包的大小也完全一样,可以确认是同一个tcp请求发生了一次重试,但是从时间上看延迟了200ms,这只是其中的一个TCP请求,如果一个HTTP请求中会有10个左右的数据库和redis请求延迟时间会达到2s以上。


已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [tcpdump wireshark 分析] 推荐:

通过tcpdump和wireshark分析慢请求处理问题

- - 互联网 - ITeye博客
最近通过报警发现应用频繁有超过1s的慢请求,通过查看日志、tcpudmp和wireshark最后定位是网络问题,在排查过程中也参考了网上的很多文章,但是写的都不是全,现在有空分享一下问题排查的一些经验,希望对遇到类似问题的码农们有所帮助,具体排查步骤如下:. 查看程序日志,程序中对超过100ms的请求都有日志输出,通过查看日志发现有大量的数据库和redis超时.

Linux下网络抓包命令tcpdump详解(在wireshark中看包)

- - 开心平淡对待每一天。热爱生活
tcpdump采用命令行方式,它的命令格式为:.       tcpdump[ -adeflnNOpqStvx ] [ -c 数量 ] [ -F 文件名 ].           [ -i 网络接口 ] [ -r 文件名] [ -s snaplen ].           [ -T 类型 ] [ -w 文件名 ] [表达式 ]   .

linux tcpdump命令以及结果分析

- - CSDN博客系统运维推荐文章
tcpdump能帮助我们捕捉并保存网络包,保存下来的网络包可用于分析网络负载情况,包可通过tcpdump命令解析,也可以保存成后缀为pcap的文件,使用wireshark等软件进行查看. 1.针对特定网口抓包(-i选项). 当我们不加任何选项执行tcpdump时,tcpdump将抓取通过所有网口的包;使用-i选项,我们可以在某个指定的网口抓包:.

用 Wireshark 分析 TCP 吞吐瓶颈

- - 卡瓦邦噶!
Debug 网络质量的时候,我们一般会关注两个因素:延迟和吞吐量(带宽). 延迟比较好验证,Ping 一下或者 mtr 一下就能看出来. 这篇文章分享一个 debug 吞吐量的办法. 看重吞吐量的场景一般是所谓的长肥管道(Long Fat Networks, LFN, rfc7323). 吞吐量没有达到网络的上限,主要可能受 3 个方面的影响:.

Linux操作系统tcpdump抓包分析详解

- - CSDN博客互联网推荐文章
PS:tcpdump是一个用于截取网络分组,并输出分组内容的工具,简单说就是数据包抓包工具. tcpdump凭借强大的功能和灵活的截取策略,使其成为Linux系统下用于网络分析和问题排查的首选工具. tcpdump提供了源代码,公开了接口,因此具备很强的可扩展性,对于网络维护和入侵者都是非常有用的工具.

[原]结合wireshark分析TCP和三次握手原理

- - HelloWorld
一、wireshark介绍.          wireshark数据包分析实战(第二版)电子书: http://pan.baidu.com/s/1LCZV   提取密码:   fqcv.         Wireshark(前称Ethereal)是一个 网络封包分析 软件. 网络封包分析 软件的功能是撷取 网络封包,并尽可能显示出最为详细的网络封包资料.

tcpdump命令

- - CSDN博客推荐文章
英文原意是dump traffic on a network ,即截获网络上的数据报,可以根据指定的网络接口来截获不同的数据报. 它会输出在某个网络接口上符合匹配表达式的报内容的描述. 当tcpdump完成抓包后,会打印出类似下面的内容: . 当然,在读取网络上的数据包时,得需要特权,比如linux上的超级用户.

利用WireShark对听音乐的过程中传送的数据包进行分析

- - FreeBuf.COM | 关注黑客与极客
相信现在的每一个人都在网络上听过音乐,那么,在我们听音乐的过程中,究竟发生了什么呢. 下面我就利用 WireShark 给大家分析一下. 打开wireshark,选择本地连接进行监听. 之后,打开一个音乐软件,随便点击一首歌曲,然后播放这首歌曲. 等待音乐播放了十几秒之后,停止wireshark的监听,现在wireshark已经监听到许多的数据包了,如下图.

wireshark过滤规则

- - CSDN博客推荐文章
WireShark 过滤 语法  . 过 滤 IP,如来源IP或者目标IP等于某个IP. ip.addr eq 192.168.1.107 // 都能显示来源IP和目标IP. tcp.port eq 80 // 不管端口是来源的还是目标的都显示. tcp.dstport == 80 // 只显tcp协议的目标端口80.

Wireshark 入门详解

- - 运维生存时间
一、 background 二、 how it works 三、包抓取方式 四、 filter in Wireshark.   Capture filter例子. 抓取所有本主机发送的报文,本机为2.2.2.2. 抓取与主机1.1.1.1.的1033端口的所有通信. 五、 Wireshark的安装 六、 Wireshark的实用功能.