我們遇到了IIS和Azure非常嚴重的問題。不知道這是IIS端還是我們的自定義代碼端。當Azure緩慢時,IIS隊列填滿並不能恢復
我參與了在Azure中運行的兩個網站(站點A和站點B)。 (標準WebRoles,ASP.NET MVC3)。這兩個網站的架構完全不同,並且與另一個網站無關,但在類似情況下,兩者都顯示出類似的行爲。
站點A在啓用會話狀態的情況下運行。會話存儲在SQL Azure數據庫中。大多數對站點A的調用都通過指向SQL Azure數據庫的ASP.NET SQL成員資格提供程序進行安全保護。
站點B也在啓用會話狀態的情況下運行。會話存儲在Azure AppFabric緩存中。站點B還有一個http處理程序,可與AppFabric緩存和Azure表存儲進行對話。
當關鍵的Azure資源(如SQL Azure或Cache)變得非常緩慢時,問題就開始了,但不會恢復。當這些資源變得非常慢並且每個請求的處理時間超過一分鐘時,Azure的負載平衡器會終止這些連接,但Web角色上的IIS不會將這些請求從其活動隊列中清除/刪除。
因此,當SQL Azure或AppFabric Cache速度非常慢時,問題不在於網站沒有響應。最大的問題是當SQL Azure或AppFabric Cache回來並開始正常工作時,網站不能恢復。請求位於「活動請求」列表中,並且不會長時間(幾小時?)消失。坦率地說,我不知道他們坐在那裏多久,因爲我們儘快重啓這些服務器。由於Azure資源偶爾會出現間歇性問題,並且由於兩個站點的流量都非常高,因此這兩個站點在非清理請求的壓力下快速陷入困境。 IIS隊列填滿,直到有人進入並重新啓動應用程序池,這些站點不可用。
謝謝!這是一個好主意,會嘗試 – Igorek 2012-07-25 18:55:36