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


黑色1秒

為了更好地分享我們解決“黑色1秒”問題的過程,在這篇博文中我們將專門描述一下“黑色1秒”問題的表現。

“黑色1秒”是我們使用阿里雲以來繼“黑色10秒”之后遭遇的最奇特、最詭異、最難以捉摸、最富有戲劇性的問題。

它有2個最顯著的特征:

第一個是最直觀的表現,在Windows性能監視器(Performace Monitor)中會出現1秒的ASP.NET Applications -> Requests/Sec(簡稱QPS)為0的情況(注:性能監視器的采樣周期也是1秒)。

黑色1秒時QPS為0的情況

QPS表示的是The number of requests executed per second. 那17:33:01的時候QPS為0究竟表示的是一種什么狀況?

由於在.NET開放出來的源代碼中沒有找到QPS在性能監視器中的計算方法(這部分可能是在非托管代碼webengine.dll中實現的),我們只能猜測。

估計有個Timer每隔1秒讀取一個針對requests executed的計數器變量值,然后再清零。在17:33:01時候的QPS為0表示的是在17:33:00-17:33:01之間,用於累加requests executed的計數器變量的值為0。

所以猜測下來的結論是:17:33:01的時候QPS為0,表示17:33:00.000-17:33:01.000這1秒內,沒有任何請求被處理。

第二個表現是在IIS日志中會出現1秒無任何記錄的情況。

比如上面的案例中,在17:33:00.000-17:33:01.000這1秒內QPS為0,而在IIS日志中17:33:00這個時間點(IIS日志只能記錄到秒級)沒有任何記錄,正好可以對應。

下面是Log Parser Studio的查詢結果(UTC時間):

我們再分別看一下前1秒與后1秒的情況。

前1秒——[17:32:59]

只有98條記錄,正常情況下應該有200多條記錄。這說明了在“黑色1秒”之前的1秒已經有處理能力下降的表現。

后1秒——[17:33:01]

有516條記錄,這說明了在“黑色1秒”(17:33:00)內到達http.sys的請求延遲了1秒才被處理(包括部分在17:32:59發出的請求)。

假設http.sys是一個環島道路的出入口,你站在這個路口觀察,正常情況下你看到的是每秒進來200多輛、出去200多輛;突然某1秒,出去的車少了一半多;再過1秒,竟然沒車出去;再過1秒,出去的有500多輛。這時你會怎么想?。。。肯定是環島中間某個地方堵車了。

假設計算QPS的性能監視器是環島道路中間位置(ASP.NET Runtime所在的位置)的一個收費站,經過一輛車就收一次費(QPS加1)。正常情況下生意很好,每秒200多輛(收入200多塊)。突然某1秒,沒車經過,這時收費站很緊張——怎么搞的,難道今天的收費指標完不成了?過了1秒,500多輛紛涌而至,原來是虛驚一場,收入一分沒少。如果作為收費站的收費員,你會怎么想?。。。肯定是收費站之前的路上某個地方堵車了?

把這兩個看到的情況綜合一下,通過環島道路的出入口(http.sys)的情況,可以推斷出在“黑色1秒”期間環島道路中間某個地方堵住了;通過收費站(ASP.NET Runtime所在位置)的情況,可以推斷“黑色1秒”期間進入收費站之前的道路上堵住了。於是可以得出,問題肯定出在 http.sys(環島入口)  -> asp.net runtime(中間的收費站) 的某個中間環節。

另外,通過阿里雲的抓包分析,在“黑色1秒”期間,http.sys能正常接收請求,OCS(緩存服務)沒收到任何請求,再加上靜態文件也沒能被處理,進一步說明了問題出在http.sys與asp.net runtime之間的環節。

所以“黑色1秒”問題的本質是:在請求由http.sys開向asp.net runtime的道路上堵車了,為什么堵車?堵在哪里?這是我們努力要揭開的謎?

寫到這里,我們不得不再次想到去年遭遇的黑色10秒,實在太相似了。

另外,今天我們解決了http.sys緩存不工作的問題,減少了由http.sys開向asp.net runtime的車輛(請求),這也許有利於減少堵車機會,效果有待一段時間的觀察(觀察結果顯示“黑色1秒”依然會出現)。

【6月5日更新】

1. “黑色1秒”的表現有了新的變化,現在性能監視器中發生QPS為0的時間點與IIS日志無記錄的時間點相差2秒。

2. 在“黑色1秒”期間,性能監視器中監測到的W3SVC_W3WP->Requests/Sec是正常的,說明請求已經正常到達W3WP進程。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM