雲計算之路-阿里雲上:Web服務器遭遇奇怪的「黑色30秒」問題

今天下午訪問高峯的時候,主站的Web服務器出現奇怪的問題,開始是2臺8核8G的雲服務器(ECS),後來又加了1臺8核8G的雲服務器,問題依舊。html

並且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)突增3d

IIS當前鏈接數一般在10左右,出現問題時先跳高至67,後跳高至270多,說明IIS處理請求的能力降低,開始發生的時間點是15:18:06。orm

可見IIS當前鏈接數突增早於ASP.NET請求執行時間變慢。htm

3. CPU佔用降低blog

 

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的問題,仍是阿里雲的問題?這是個問題!目前還不知道從何處下手。

期待您的寶貴建議!

相關文章
相關標籤/搜索