云计算之路-阿里云上:排查“黑色30秒”问题-为什么请求会排队

http://www.cnblogs.com/cmt/p/3682642.html

针对Web服务器“黑色30秒”问题(详见云计算之路-阿里云上:Web服务器遭遇奇怪的“黑色30秒”问题),经过分析,我们准备从这个地方下手——为什么会出现\ASP.NET\Request Queued大于0的情况(为什么请求会排队)?

首先, 通过Windows性能监视器去观察,看能不能找到这样的线索——在什么条件下会触发请求排队?

我们在性能监视器中增加了1个监视指标——\HTTP Service Request Queues\Arrival Rate

Arrival Rate: Rate at which requests are arriving in the queue

这是一个针对IIS的底层HTTP.SYS的监视指标,从我们的理解,认为它最直接地反映了到达IIS的当前要处理的并发请求。

启用这个Arrival Rate监视指标后,我们观察到了1次请求排队的情况(非“黑色30秒”故障场景)。

上图中跳起的蓝色就表现出现了请求排队。

我们来逐个指标看一下。

1. HTTP Service Request Queues\Arrival Rate(到达IIS底层的请求)

当时HTTP.SYS收到了465个并发请求。

2. Qequests/Sec(QPS,ASP.NET每秒处理的请求数)

当时ASP.NET的QPS是607。

3. Requests Queued(排队的请求数)

【注意】出现请求排队的时间点是11:03:54,而前2个指标高上去的时间点在11:03:55。

【重要线索】由此,我们可以得出这样的线索:是先出现请求排队(Requests Queued),然后才出现Arrival Rate与QPS上升。是请求排队引起Arrival Rate与QPS上升,而不是Arrival Rate与QPS上升引起请求排队。

接下来通过其他指标验证这个想法。

4. Current Connections

IIS当前连接数高上去也在出现请求排队之后。(成功验证1)

5. CPU

CPU占用也是在出现请求排队之后才高上去的。(成功验证2)

【分析结论】请求排队才是问题的原因,而其他表现只是请求排队后的结果表现。

那在11:03:54,请求排队时,其他指标又是什么情况呢?

1. ArrivalRate只有218

2. QPS只有151

3. Current Connections在15以下(具体数值在性能监视器上显示不出来)

4. CPU占用只有10%

太奇怪了!在请求排队时,其他指标都处于低点——比正常情况更低的点。

更奇怪的是到达IIS的请求比平时变少了,请求反而排队了。

【猜想】

从这个监视到的表现看,我们唯一能解释得通的是:11:03:54,Web服务器似乎在打瞌睡,处理能力全面下降;然后,11:03:55,Web服务器醒了过来,处理能力全面恢复,这时不仅要处理当前的请求,还要处理之前排队的请求,一下子负载就高了上去。

难道谁给Web服务器下了药?如果用的是物理机,我们真的会怀疑是谁下的药?但现在用的是虚拟机,在“被下药”与“虚拟机问题”之间,哪个更值得怀疑呢?。。。这个问题只能留给阿里云的同学,我们再怎么怀疑,也只能怀疑而已,无法在虚拟机层面进行验证。

【进一步的线索】

在写这篇博客的期间,1台服务器正好发生了“黑色30秒”,看看性能监视器中的相关表现:

1. Arrival Rate与Requests Queued

2. 加上Current Connections

3. 加上CPU

4. 加上Request Execution Time

而且这次接连来了2个“黑色30秒”。

【小结】

虚拟的世界很精彩,虚拟的世界也很无奈。从应用、从Windows的角度,我们真的不知从何处理下手,我们能做的只是找问题的线索。问题的解决可能真的需要阿里云同学们的努力!

原文地址:https://www.cnblogs.com/liuqiyun/p/9186998.html

时间: 2024-10-13 15:58:40

云计算之路-阿里云上:排查“黑色30秒”问题-为什么请求会排队的相关文章

云计算之路-阿里云上:“黑色1秒”最新线索——w3tp与w3dt

向大家分享一下最近排查"黑色1秒"问题的进展,"黑色1秒"的问题表现详见什么是黑色1秒. 1. 发生在w3wp进程内 判断依据:"黑色1秒"期间,http.sys的HTTP Service Request Queues\ArriveRate正常,W3SVC_W3WP\Requests/Sec正常. 2. 请求未进入.NET线程池 判断依据:"黑色1秒"期间静态文件的请求也不能被处理,如果"黑色1秒"发生在.

云计算之路-阿里云上:“黑色1秒”问题与2009年Xen一个补丁的故事

在之前对"黑色1秒"问题的分析博文中,我们将最大嫌疑对象锁定在了Xen,在这篇博文我们将从Xen的角度进行分析.也许有人会问,为什么不知道天多高地多厚地去研究不属于自己范围的问题?只因我们对一个问题的强烈好奇心--究竟是不是我们用Windows的错? 2009年3月20日,来自Intel的Yu Ke通过Xen-dev Mailing List给来自Citrix的Keir Fraser(负责的Xen开发者之一)发了一封邮件,提交了Xen的一个patch--cpuidle: suspend

云计算之路-阿里云上:黑色1秒,微软的问题还是阿里云的问题?

"黑色1秒"问题经过一个多月的艰苦奋战,今天终于取得了重要进展!我们终于有了足够的数据证明不是微软IIS的问题,就是阿里云Xen虚拟机的问题. 这篇博文分享的是我们如何进行证明的,而且这次证明连Window性能监视器都不需要. 下面我们来分析一下今天10:37:35出现的"黑色1秒"(下面所用的IIS日志分析工具是Log Parser Studio,这是我们在排查"黑色1秒"问题期间对我们帮助最大的一个工具). 1. 先从IIS日志中找出哪些时间

云计算之路-阿里云上:超过70秒的请求抓包分析

超过70秒的请求是通过分析IIS日志发现的: 10.159.63.104是SLB的内网IP. 通过Wireshark抓包分析请求是9:22:21收到的(tcp.stream eq 23080): 09:22:21.299838000 10.159.63.104 10.161.241.208 HTTP 291 GET /eastsea/p/3764040.html HTTP/1.0 这个请求响应内容的长度是:Content-Length 1154110(1.1MB) 云服务器(ECS)在收到请求后

云计算之路-阿里云上:对“黑色n秒”问题的最终猜想——CPU C-states引起的

如果说2013年云计算之路的主题是"踩坑",那么2014年我们希望云计算之路的主题变成"填坑"--当然填坑是阿里云来完成的,我们只是见证曾经的坑坑洼洼变成平坦大道. 15号(周四)晚上我们发现了SLB会话保持的坑,16号晚上阿里云成功定位并进行修复,这两天正式发布后会填平这个坑.这次从踩坑到填坑的过程是最痛快的一次. 接下来我们的目标锁定在"黑色n秒"(刚发现一个英文说法:stuck for x seconds)这个坑我们最多.最神秘.最诡异的坑

云计算之路-阿里云上:什么是“黑色1秒”?

为了更好地分享我们解决"黑色1秒"问题的过程,在这篇博文中我们将专门描述一下"黑色1秒"问题的表现. "黑色1秒"是我们使用阿里云以来继"黑色10秒"之后遭遇的最奇特.最诡异.最难以捉摸.最富有戏剧性的问题. 它有2个最显著的特征: 第一个是最直观的表现,在Windows性能监视器(Performace Monitor)中会出现1秒的ASP.NET Applications -> Requests/Sec(简称QPS)为

云计算之路-阿里云上:消灭“黑色n秒”第一招——不让CPU空闲

昨天对"黑色n秒"问题的最终猜想以失败而告终,从而让我们结束了被动猜想阶段,进入了主动进攻阶段--出招. 今天出第一招--用C#写个小程序,让其在每个CPU核上运行一个线程,不让任何一个CPU核进入空闲(idle)状态,以进一步排除CPU idle引起的"黑色n秒". 在这一招中,借助的最重要的武器是System.Diagnostics.ProcessThread.ProcessorAffinity.通过给ProcessorAffinity设置一个掩码,就可以指定当

云计算之路-阿里云上:消灭“黑色n秒”第二招——给w3wp进程指定CPU核

虽然昨天的第一招失败了,但是从失败中我们学到了与多核CPU相关的Processor Affinity(处理器关联)的知识. 既然我们可以让.NET程序的不同线程运行于指定的CPU核,那是不是也可以让IIS应用程序池的进程w3wp运行于指定的CPU核? 虽然看起来"黑色n秒"似乎与w3wp运行于哪些CPU核没有什么关系,但是我们既然把怀疑对象锁定在CPU,那么任何与CPU相关的线索都不能放过.即使失败,也会满载而归,因为如果没有"黑色n秒"这个问题的驱动,我们根本不会

云计算之路-阿里云上:消灭“黑色n秒”第三招——禁用网卡的TCP/IP Offload

程咬金有三板斧,我们有三招.在这篇博文中我们要出第三招,同时也意味着昨天在"希望的田野"上的第二招失败了. 前两招打头(CPU)不凑效,这一招要换一个部位,但依然要坚持攻击敌人最弱(最忙最累)部位的原则.那除了CPU,最忙最累的部位是哪里呢?对于Web服务器来说,毫无悬念,当然是网卡.而且阿里云的云服务器,所有的网络负载都集中在一块内网网卡上,SLB(负载均衡)用它,OCS(缓存服务)用它,RDS(数据库服务)也用它.所以,就对它出招! 招式受这篇博文(XenServer – Wind