一次奇怪的服务器响应延时分析

wireshark过滤器 A 以太网过滤器 eth.addr == e8:fc:af:f7:7e:35 #显示指定MAC地址的数据帧 eth.src == e8:fc:af:f7:7e:35 #显示指定源MAC地址的数据帧 eth.dst == e8:fc:af:f7:7e:35 #显示指定目的MAC地址的数据帧 eth.type == 0x0800 #显示指定类型(这里显示TCP)的帧 B IP过滤器 ip #显示网络层为IP类型的数据包 ip.addr = 192.168.0.1 #显示包... 阅读详情

       摘要:这是一份基于netinside系统进行“预见”性巡检的工作日志,基于netinside系统提供的潜在问题线索,结合wireshark工具使用,探究表面现象下的本质,建立不同业务下TCP协议的使用模型,是为高质量运维的关键因素。

一、预见性巡检 

     基于netinside系统,进行“预见”性巡检。在检查到主机时,发现有台主机表现有些奇怪。如下:

     43这台关键主机,服务器的响应延时竟然有1秒多。因为表单中看到的数据是个平均值,所以时延分布情况,需要时一步确认。在单个IP最终用户体验分析中,搜索43的主机,情况如下:

     发现这台主机的服务器响应延时都在秒级波动,最高值达到4秒,基于采样时间原因,我们有理由相信真实延时肯定会更大,且在同时间段,几乎没有流量,那么这个现象就比较奇怪了。

     没有连接失败请求,没有多大流量,但服务器响应延时较大,因为生产网都是千M网络,看上去根本不存在影响时延的因素,所以什么原因导致此情况,值得探究。

     为了进一步分析,我们在netinside系统里面,把这台主机在时间点13:36前后的数据包下载下来(按时间点下载主要是为了减少数据包的大小,更精准分析问题),导入wireshark,一探究竟。

    

二、探究真像

   因为服务器的响应时间,本质上就是RTT(RoundTrip Time),即往返时间。测量方法是发送一个特定序号的字节,并记录时间。

     当收到确认的ACK之后,把ACK的时间,减掉之前记录的发送时间,就可以得到RTT值,该值比较大时,通常会被专家系统诊断为“网络或服务器繁忙“。    

    2.1,配置wireshark

     数据包导入wireshark后,分析RTT需要先进行简单配置,如下:

     该步骤是开启TCP会话时间戳计算,默认可能已经开启,如果没有开启的话,手动按上面方法开启即可,然后按以下方法,把RTT应用为列:

     列的名字,可以自行修改。需要注意的是,这个时间戳是由发送端系统依据自己的时钟打上去的,如果系统时间本身有误,则会给分析带来困扰,所以分析之前,先要确认各系统,包括抓包系统的时间没有问题。

      2.2,RTT分析

     经过上个步骤的配置,在wireshark中分析RTT就很简单了,只要在“应用显示过滤器”中,输入“tcp.analysis.ack_rtt > 4”,然后回车就可以了。

     里面的“4”,就是我们在netinside系统中看到的4秒延迟,因为我们确定实际延迟比会比这个大,所以我们只要">4"即可,结果如下图:

     通过过滤,我们可以快速找到RTT>4数据包,因为我们之前是精确定位下载,所以可以看到有一个数据包的RTT值是9秒多,这与我们推测符合。

     很显然,光看一个数据看不出什么情况,此时我们就需要把绿色框中“86”记下,并通过这个流ID,把这个数据包相关的流过滤出来进行分析,如下图:

     把TCP流过滤出来后,发现个奇怪地方,即>4的RTT好像有三个(红框),而我们刚才过滤时,只看到了9.99的这个,那么为什么10秒的就不算RTT呢?

     这个是不是wireshark有问题?请注意绿框,数据长度为0的ACK,我们先把TCP流图打开看下,如下图:

     通过上图,我们可以看到两个间隔10秒,都是由43产生的,并非是一个有效的交互,上下两个报文的seq及ACK都相同。

     这种现象原因是,上面playload长度为0的ACK仅仅是通知对端滑窗,因为没有传数据,所以对端不再响应,处于等待状态。

     而后43开始正常发送数据时,接着使用相同的SEQ与ACK,这样就把TCP的交互继续流动起来。所以,这个10秒是由43本身等待造成,不算是RTT,而真正算RTT的就是绿框标注的,即9秒的那个交互。

     由此产生的一个疑问就是,43到底在干什么,在一个TCP的交互中,总是会停下来休息一伙?我们接着查看触码内容,如下图:

      基于解码内容,基本可以推断,这可能是一个操作mongoDB的定时任务,这样话,前面的间隔10秒与第三条间隔9秒的,本质上没有太大区别,都属于43向170的请求。

     也就是说43主机每间隔差不多10秒左右就会发一个请求给170。因为是请求间隔,所以我们基本认为,这种延迟理论上不影响实际业务。

     不过需要注意的是,netinsdie系统里面看到是43这台服务器的响应延时,而我们分析的实际情况是43服务器的请求延时,这明明就是两个概念,这两种不同的延时对是否存在问题的判断是有显著区别的,那这是什么问题呢?

     实际上,在一个TCP流里面,其实是无法区别应用请求方向的,TCP的主动打开还是被动打开,并不能决定应用层哪个是请求,哪个是响应,所以站点TCP层的角度,方向是可以切换分析,如下图:

     从43往170这个方向看,服务器延时(RTT)在0.3MS左右,所以很显然,170的响应延时挺正常。而如果我们切换方向,则会如下:

     从上可以看到,切换方向后,就有一个近10秒的延迟,而从TCP层看,这个延迟是由43来响应产生的,而我们通过上面的分析也就知道,这其实是43的请求间隔,而非响应延迟。

     所以,如果站在43是台服务器的角度,把这个10秒延迟归到服务器响应延迟里面,从TCP的角度是完全没有问题的。

三、在netinside系统中,把“预见”进行到底

     从刚才的分析中,我们在wireshark里面对问题抽丝剥茧,进行了透视,得出明确的结论。那么,我们是否可以在netinside里面,预见到更一步的信息或问题边界呢?

     比如,RTT值,会包含网络、服务器及应用对业务请求的响应的总体延时,那么是否可直接在netinside里面界定边界,确认问题方向,减少wireshark的使用或使用复杂度呢?

     这当然是可以的,通过简单配置,我们可以在netinside的数据分析里面建立一个基于分析目标的简易模型,我们一起来看下netinside的强大,如下图:

     在netinside系统里面,把RTT分成了两种情况,一种是不带业务请求的,直接称之为往返时间,见蓝框,一种是带业务请求的,叫服务器响应时间,见红框。

     一般情况下,不带业务请求的,通常是在三次握的时候,所以也被叫做IRTT,这个时间,基本只包含网络与服务器内核响应延时,所以会当做业务分析延时的一个基准。

     在wireshark里面,如果你抓包有抓到三次握手,那么它会聪明的把这两个时间放在一起,供我们分析,如下图:

     所以,基于这两个数值的对比,我们就可以大概率确定,问题所在方向,是应用还是网络或服务器本身。而且通过服务器响应延时的方向,即服务端或者客户端,我们也可以看到与wireshark中切换方向看到的同一效果。

     到这阶段,我们基本上可以预见,应用可能存在问题,只不过,这种问题,对于业务来讲,是正常还是不正常,我们就得看业务逻辑了,而这个时候,就只能导到wireshark中去解个码。

    

四、结语

     通过netinside预见性巡检,我们识别到特定服务器响应延时存在异常,基于TCP交互的理解,认为这里面可能存在潜在问题。但经过使用wireshark更细致分析,我们发现延时产生的原因,来自定时任务,也就是说业务实质上没有问题。

     从这里我们可以看到,基于TCP层的性能分析,需要结合到实际的业务场景中,不同的业务特性,对TCP的使用,有不同的表现,不一定都是性能问题。

     虽然本次巡检并没有挖掘出直正的潜在问题,但对于内部不同业务场景下,对TCP的使用建立模型,标定基线,是后续进一步高效运维,快速发现并排除潜在业务影响的关键基础。

                                         

jansen@FuZhou

jingshne#outlook.com

qjs@netinside.com.cn

Wireshark使用指南之显示过滤器 Wireshark使用指南之显示过滤器 一.协议过滤器 arp:显示所有ARP流量,包括免费ARP,ARP请求和ARP应答。 ip ipv6 tcp 二.应用过滤器 bootp:显示所有DHCP流量(基于BOOTP); dns:显示所有DNS流量,包括基于TCP传输和UDP的DNS请求和响应; tftp:显示所有TFTP(简单文件传输协议)流量; http:显示所有HTTP命令,响应和数据传输包。 icmp 三.字段存在过滤器 bootp.option.hostname: ... 阅读详情

相关推荐

Win11网络卡顿?用Wireshark抓包5分钟定位问题(保姆级实战)

本文详细介绍了如何使用Wireshark在Win11系统中快速定位网络卡顿问题。通过5分钟抓包分析,作者成功发现TCP重传率高达37%的罪魁祸首,并提供了从准备工作到实战分析的保姆级教程,帮助用户解决游戏卡顿、视频会议延迟等常见网络问题。

weixin_28839629的博客 306

速读原著-TCP/IP(往返时间RTT的例子)

第21章 TCP的超时与重传 21.4 往返时间RTT的例子 在本章中,我们将使用以下这些例子来检查 T C P的超时和重传、慢启动以及拥塞避免等方方面面的实现细节。 使用s o c k程序和如下的命令来将 3 2 7 6 8字节的数据从主机s l i p发送到主机v a n g o g h . c s .b e r k e l e y . e d u上的丢弃服务。 slip % sock -D ...

逍遥云恋 2230

Java Robot类实战:解决截图过曝与延时不准的避坑指南

在Java桌面自动化领域,屏幕捕获与输入模拟是核心技术。其原理是通过本地接口与操作系统图形子系统交互,实现对像素数据的直接读取和输入事件的注入。这项技术的核心价值在于能够为自动化测试、辅助工具开发以及监控程序提供底层支持。然而,在实际工程实践中,开发者常会遇到截图色彩失真(如过曝)和事件时序控制不精确两大难题。这些问题的根源在于Java Robot类对底层图形环境的强依赖以及JVM非实时调度的特性。针对截图过曝,关键在于理解色彩空间转换并采用标准RGB格式进行图像重绘;对于延时不准,则需要基于System.

weixin_30553777的博客 411

Wireshark 提示和技巧 | Time 时间分析那些事

Wireshark 提示和技巧 | Time 时间分析那些事

7ACE的博客 8909

海康威视面试经历

哈?海康威视是不是很喜欢用redis

1538

远距离长航时低成本泡沫垂直起降固定翼无人机技术详解

该技术通过采用泡沫材料制造无人机机体,并结合高效的垂直起降与固定翼飞行机制,实现了低成本、长航时、远距离的飞行能力。然而,需要注意的是,泡沫材料在强度和耐候性方面可能较传统金属材料有所不足,因此在设计和制造过程中需要采取额外的加固和防护措施。用于森林防火、水域监测、空气质量检测等场景,通过搭载相应的传感器和摄像设备,对大范围区域进行高效、精准的监测。- 增强智能化水平:集成更多先进的传感器、算法和人工智能技术,提升无人机的自主决策能力和作业效率。

专注多旋翼、复合翼无人机技术研究,从事低空经济行业。 1201

NetInside全流量安全分析对服务器的延时响应剖析

NetInside全流量安全分析对服务器的延时响应剖析

NetInside_的博客 251

安装破解IAR EWARM 8.2,提供注册机

IAR Embedded Workbench for ARM(IAR for ARM)是一款微处理器的集成开发环境软件,该集成开发环境中包含了IAR的C/C++编译器、 汇编工具、链接器、库管理器、文本编辑器、工程管理器和C-SPY调试器,支持ARM,AVR,MSP430等芯片。   一、安装 双击运行安装程序,点击Install IAR Embedded Workbench for ARM...

睿思派克 4万+

奇怪的服务器问题,备份

用了shttpd的源码,发现了一个奇怪的问题: 服务器的socket用send发送了数据出去之后,关闭了socket,结果有时候会出现客户端无法读取到任何数据(包括http头),curl返回了CURLE_GOT_NOTHING,             /* 52 - when this is a specific error */ 错误,经过反复检查,加入了一些输出日志,一个偶然的情况,在wr

longjing_g的专栏 740

如何制作微信小程序的在线购物商城应用

首先,你需要规划好商城的整体框架,确定好你的目标用户群体,思考他们的需求是什么。接下来,使用微信开发者工具创建一个新的小程序项目,输入你的AppID,选择好保存路径,点击“创建”,一个新的商城雏形就诞生了。你可以把这里当作自己的家,无论是工作之余的小憩,还是寻找灵感的驿站,我都希望你能在这里找到属于你的那份快乐和满足。数据是现代商业的灵魂,通过数据分析,你可以更准确地把握用户的行为模式,从而做出更明智的决策。

master_chenchen的博客 2429

OpenWrt虚拟机磁盘扩容实战:从SquashFS到ext4的完整避坑指南

本文详细介绍了OpenWrt虚拟机磁盘扩容的完整流程,重点对比了SquashFS和ext4文件系统在扩容操作上的关键差异。通过五步安全迁移法和直接分区调整方案,帮助用户有效解决磁盘空间不足问题,同时提供高级技巧和故障排除指南,确保扩容过程顺利无坑。

weixin_29251131的博客 232

linux sock 一个奇怪问题

网络编程

ljf_forlinux的博客 520

关于Sybase ASE数据库的license以及试用版过期的问题的解决方案

当用户从Sybase官网上下载了ASE15.0.2以后,如果选择了安装Express Edition或者Developer Edition,基本上不会碰到什么问题,除了有些功能受限以下。 但大多数可能选择了Enterprise Edition for Evaluation类型,即企业版试用。都会碰到这样的问题,即一个月以后,license过期,无法启动server。于是很郁闷,可能大部分人,会选...

iihero@优快云 791

关于iOS的APP弹出遮罩层内的跳转事件失效问题

1. ios自身问题 在项目完成后,安卓和苹果手机测试中,发现 iOS的APP弹出遮罩层内的点击事件失效问题,浏览器并无此问题。很奇怪,推测是ios系统和Android系统不同的缘故。经测试,Android一点问题没有。但是,ios系统却死活没反应。测试了n个方法都不可用。所以,判断为其本身系统的原因。 绝对定位下的top和bottom属性 偶然间,发现遮罩层内设置的CSS 样式,top和bott...

qq_43211876的博客 1269

PCL 法向量夹角剔除错误匹配点对【2026最新版】

实现了一种简单的基于对应点法线角度的对应关系去除方法。博客长期更新,本文最新更新时间为:2026年5月24日。

点云侠的博客 41万+

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

MySQL innobackupex备库备份导致主备延时

        最近对数据库做了升级,从5.1升级到5.6,同时对备库做了innobackupex备份。然后奇怪的事情发生了,同样大小的两个备库,A备份的时候没有延时,响应时间正常,B备份延时400S左右,响应时间较长。于是进行了一番调查。从MySQL 5.6的配置参数对比,两个实例都是一样,于是排除配置参数导致延时,从机器的性能对比,两个实例的服务器配置都是一样,连接数,qps都类似。于是着手查...

xbb_icey的博客 633

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

V3S代码整合中遇到的一个奇怪问题

场景:又拍云传文件到文件服务器,然后mqtt消息发送文件名到后台控制服务器。 现象:发送mqtt消息超时(默认10秒),但返回值是成功的,mqtt服务器也成功收到了消息。而且在其他地方调用的mqtt发送消息同样耗时几秒不等。如果屏蔽又拍云部分,则mqtt发送消息基本是无延时秒回。   解决办法:无意之间把mqtt消息发送放到前面,又拍云上传放后面,则mqtt消息发送不受影响。   原因不...

qinrenzhi的博客 590

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

自己写http服务器

为了从性能和易用性上测试我写的mu_event的效果,想写一个网络应用来验证一下,正好我的下一个目标是http服务器,所以我决定动手写一个小型的http服务器。 其实开源的http服务器有很多,但是出名的都是比较重量级的,不利于学习。所以我找了几个小型的http server项目,抽出其中的http协议解析部分,改动部分代码后,应用在我的项目中使用。 我本以为很快就能完成一个基本的项目,后来却...

专注于网络编程,游戏后台,高并发 1331

浏览器显示服务器响应超时,超时POST请求的浏览器重试行为不一致

当由于超时而没有来自服务器的响应时,我偶尔会遇到POST请求的重试。所有现代浏览器都具有幂等请求的重试逻辑(GET,HEAD等),但我无法推断为什么它会发生在POST请求中。我正在使用一个带有3个路由和chrome浏览器的简单node.js服务器来测试这种情况。/ : gives a html page with jquery and code snippets to fire aja...

weixin_39964869的博客 1071

linux tcp 40毫秒,TCP ACK 延迟40ms

不论宣称如何完美的解决方案,都会引入另一个更复杂的问题。一、背景我负责的缓存系统有一个版本号模块,专门用来对数据生成唯一的版本号seq来保证数据的唯一性,从而做到数据数据实时更新以及避免旧数据覆盖新数据的问题。这个模块是其他人交接给我的,之前服务一直都正常,也就没去细看。最近访问量越来越大了,服务出现一些失败,所以需要先梳理整个模块的情况,然后在从整体上来优化这个模块。二、高延时 版本号模块一梳理...

weixin_32263265的博客 1770

WAF绕过技术解析:从服务器层解析差异到实战攻防

Web应用防火墙(WAF)作为应用层安全的核心防线,通过规则匹配和协议分析来防御SQL注入、XSS等常见攻击。其工作原理基于对HTTP流量的深度解析,但部署模式(如云WAF、反向代理)与后端服务器的解析差异可能形成安全盲区。这种解析分歧的技术价值在于揭示了防御体系的立体性,促使安全人员从协议层、服务器特性等更底层视角审视攻防对抗。在实际应用场景中,攻击者常利用参数污染、分块传输编码、HTTP请求走私等技术,通过构造WAF与Nginx、Apache等服务器对同一请求的不同解释来实现绕过。本文聚焦服务器层绕过这

cixu3288的博客 413

php 非阻塞post请求,PHP异步非阻塞fsockopen(本地可以非阻塞请求,服务器就一直执行异步的不成功) (未解决)...

index.php/*** php异步请求** @param $host string 主机地址* @param $path string 路径* @param $param array 请求参数* @return string*/function asyncRequest($url,$post_data=array(),$cookie=array()){$url_arr = parse_url(...

weixin_39628384的博客 219

php 异步非阻塞执行,PHP异步非阻塞fsockopen(本地可以非阻塞请求,服务器就一直不执行异步的请求) (未解决)...

index.php/*** php异步请求** @param $host string 主机地址* @param $path string 路径* @param $param array 请求参数* @return string*/function asyncRequest($url,$post_data=array(),$cookie=array()){$url_arr = parse_url(...

weixin_30556403的博客 327

一文说清楚Http1到Http2到Http3的优化

但是,对于一些具有重复性的 HTTP 请求,比如每次请求得到的数据都一样的,我们可以把这对「请求 - 响应」的数据都缓存在本地,那么下次就直接读取本地的数据,不必在通过网络获取服务器的响应了,这样的话 HTTP/1.1 的性能肯定肉眼可见的提升。

LUCIAZZZ的博客 1379
上一篇: HTTP状态码监测分析
下一篇: 如何分析大流量网络波动,保障关键业务的安全性?
NetInside_
博客等级 码龄5年 69粉丝 151原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值