云计算之路-阿里云上:Web服务器遭遇奇怪的“黑色30秒”问题

今天下午访问高峰的时候,主站的Web服务器出现奇怪的问题,开始是2台8核8G的云服务器(ECS),后来又加了1台8核8G的云服务器,问题依旧。

而且3台服务器特地使用了不同的配置:1台是禁用了虚拟内存的临时磁盘云服务器,1台是启用了虚拟内存的临时磁盘云服务器,1台是禁用了虚拟内存的云盘云服务器。这样排除了磁盘IO与虚拟内存的原因。

问题的表现是这样的(以下监视截图来自Windows性能监控器Performance Monitor):

1. ASP.NET请求执行时间(Request Execution Time)变慢

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的问题,还是阿里云的问题?这是个问题!目前还不知道从何处下手。

期待您的宝贵建议!

posted @ 2014-04-22 17:21  博客园团队  阅读(7300)  评论(35编辑  收藏  举报