云计算之路-阿里云上:Web服务器遭遇奇怪的“黑色30秒”问题
今天下午访问高峰的时候,主站的Web服务器出现奇怪的问题,开始是2台8核8G的云服务器(ECS),后来又加了1台8核8G的云服务器,问题依旧。
而且3台服务器特地使用了不同的配置:1台是禁用了虚拟内存的临时磁盘云服务器,1台是启用了虚拟内存的临时磁盘云服务器,1台是禁用了虚拟内存的云盘云服务器。这样排除了磁盘IO与虚拟内存的原因。
问题的表现是这样的(以下监视截图来自Windows性能监控器Performance Monitor):
1. ASP.NET请求执行时间(Request Execution Time)变慢

通常请求执行时间在100ms以下,而出问题时竟然达到了近1.5s,发生时间为15:18:09。
2. IIS当前连接数(Current Connections)突增

IIS当前连接数通常在10左右,出现问题时先跳高至67,后跳高至270多,说明IIS处理请求的能力下降,开始发生的时间点是15:18:06。
可见IIS当前连接数突增早于ASP.NET请求执行时间变慢。
3. CPU占用下降


CPU在15:18:07到达高点之后,一直往下掉,在15:18:14掉至最低点。
CPU下降发生于IIS当前连接数突增之后。
4. 请求出现排队现象(Requests Queued)

Requests Queued正常情况下是0,只有在请求处理不过来的时候才会出现排队现象。请求排队开始于15:18:05,早于IIS当前连接数突增。
5. ASP.NET请求处理能力下降(Requests/Sec)

15:18:05开始,ASP.NET的请求处理能力下降,与请求排队开始于同一时间。
我们给上面的5个现象排个序:请求处理能力下降(Requests/Sec)-> 请求排队(Requests Queued)-> 当前连接数突增(Current Connections)-> CPU占用下降 -> 请求执行时间变慢(Request Execution Time)
然后再来看另外一次问题发生时的现象:
1. Requests/Sec下降(棕色)与Requests Queued出现(蓝色)

Requests Queued在高点达1007。
2. Request Execution Time变慢(紫色)与Current Connections突增(绿色)

Current Connections在高点达1586。
3. 加上CPU占用率,5个指标叠在一起

【分析】
Requests/Sec下降、Requests Queued上升、Request Execution Time变慢、Current Connections突增,这些说明在什么地方卡住了;而CPU占用下降说明不是因为负载高CPU处理不过来,而是卡在了其他环节,比如IO。
之前遇到比这还奇怪的“黑色10秒钟”(详见云计算之路-阿里云上:超级奇怪的“黑色10秒钟”),现象有点类似,但有2个地方不同:
1. 这次持续时间是30秒(所以把这次问题命名为“黑色30秒”)。
2. “黑色10秒钟”期间Requests/Sec会下降为0;而“黑色30秒”期间Requests/Sec只是下降,没有为0,也就是说还在处理请求,只是因为某些资源出现瓶颈,请求处理能力下降。
之前的“黑色10秒钟”是因为虚拟化对spinlock的支持问题引起的,改用Windows Server 2012解决了问题。
这次呢?应用的问题,Windows的问题,还是阿里云的问题?这是个问题!目前还不知道从何处下手。
期待您的宝贵建议!
云计算之路-阿里云上:Web服务器遭遇奇怪的“黑色30秒”问题的更多相关文章
- 云计算之路-阿里云上:结合IIS日志分析“黑色30秒”问题
在昨天针对“黑色30秒”问题的分析中,我们猜测Requests Queued上升是由于正在处理的请求出不去(到达不了客户端).今天我们结合IIS日志验证这个猜测. IIS日志中有一个重要的指标——ti ...
- 云计算之路-阿里云上:服务器CPU 100%问题是memcached的连接数限制引起的
非常抱歉,昨天的服务器CPU 100%问题是达到 memcached 的连接数限制引起的,不是阿里云服务器的问题. 之前我们用的是阿里云“云数据库 memcached 版”,上个周末我们换成了自己搭建 ...
- 云计算之路-阿里云上:从ASP.NET线程角度对“黑色30秒”问题的全新分析
在这篇博文中,我们抛开对阿里云的怀疑,完全从ASP.NET的角度进行分析,看能不能找到针对问题现象的更合理的解释. “黑色30秒”问题现象的主要特征是:排队的请求(Requests Queued)突增 ...
- 云计算之路-阿里云上:原来“黑色0.1秒”发生在socket读取数据时
在昨天的博文(云计算之路-阿里云上:读取缓存时的“黑色0.1秒”)中我们犯了一个很低级的错误——把13ms算成了130ms(感谢陈硕发现这个错误!),从而对问题的原因作出了错误的推断,望大家谅解! 从 ...
- 云计算之路-阿里云上-新发现:又一种与虚拟内存有关的CPU波动情况
在云上真是无奇不有,昨天偶然间发现在IIS的应用程序池回收设置中,仅仅设置了一下基于虚拟内存限制的回收,就引发了CPU有规律的波动.在这篇博文中,我们将向大家汇报一下云计算之路上的这个小发现. 在之前 ...
- 云计算之路-阿里云上:SLB会话保持的一个坑
冒着被大家厌烦的风险,今天再发一篇“云计算之路-阿里云上”.这是在前一篇发过之后真实发生的事情,我们觉得定位问题的过程值得分享.而且估计园子里不少朋友被这个问题骚扰过,我们有责任让大家知道问题的真正原 ...
- 云计算之路-阿里云上:OCS问题的进展以及11:30-11:50遇到的问题
(上图是今天出问题期间Web服务器性能监控图,紫色表示的是Request Execution Time) 昨天我们发布了一篇博客分享了我们这两天遇到的OCS(开放缓存服务)问题,详见云计算之路-阿里云 ...
- 云计算之路-阿里云上:愚人节被阿里云OCS愚
今天是愚人节,而我们却被阿里云OCS愚,很多地方的缓存一直不过期,造成很多页面中的数据一直不更新.这篇博文将向您分享我们这两天遇到的OCS问题. 阿里云OCS(Open Cache Service)是 ...
- 云计算之路-阿里云上-容器难容:容器服务故障以及自建 docker swarm 集群故障
3月21日,由于使用阿里云服务器自建 docker swarm 集群的不稳定,我们将自建 docker swarm 集群上的所有应用切换阿里云容器服务 swarm 版(非swarm mode). 3月 ...
随机推荐
- Eclipse安装与配置
http://www.th7.cn/Program/java/201307/144477.shtml http://www.eclipse.org/ 我们下载J2EE版本:Eclipse IDE fo ...
- sum() 函数
sum()的参数是一个list 例如: sum([1,2,3])
- 如何为Eclipse安装主题(Color Theme)
Eclipse开发环境默认都是白底黑字的,看到同事的Xcode中设置的黑灰色背景挺好看的,就去网上查了一下.发现Eclipse也可以设置主题. 方法1:你可以从Eclipse Marketplace中 ...
- vpn找不到设备,win7建立新的VPN总时显示错误711,无法启动 Remote Access Connection Manager 及 Remote Access Auto Connection Manager 错误1068
试试相关服务!一.remote access connection manager是网络连接的服务,它依赖于Technology服务,现在你的这个服务已经启动,而Secure Socket Tunne ...
- windows下与linux下安装redis及redis扩展
1. Redis的介绍 Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.从2010年3月15日起 ...
- PC-BSD 9.2 发布,基于 FreeBSD 9.2
PC-BSD 9.2 发布了,该版本基于 FreeBSD 9.2. 下载地址:PCBSD9.2-RELEASE-p9-10-02-2013-x64-DVD.iso (3,465MB, SHA256). ...
- kernel 内核安装
1.kernel 下载 https://cdn.kernel.org/pub/linux/kernel/ 2.解压源码 tar -zxvf linux-*.tar.gz 3.进入目录 cd linux ...
- QQ揭秘:如何实现托盘闪动消息提醒?【低调赠送:QQ高仿版GG 4.1 最新源码】
当QQ收到好友的消息时,托盘的图标会变成好友的头像,并闪动起来,点击托盘,就会弹出与好友的聊天框,随即,托盘恢复成QQ的图标,不再闪动.当然,如果还有其它的好友的消息没有提取,托盘的图标会变成另一个好 ...
- Homework_4 四则运算 - C#版
题目要求 :http://www.cnblogs.com/gdfhp/p/5311937.html 结对同伴: 姓名:胡仕辉 学号:130201225 博客地址:http://www.cnbl ...
- C#执行外部程序之执行DOS命令和批处理
在项目开发中,有时候要处理一些文件,比如视频格式的转换,如果用C开发一套算法,再用C#调用,未免得不偿失!有时候调用现有的程序反而更加方便.今天就来说一下C#中如何调用外部程序,执行一些特殊任务. 这 ...