幫助嘗試找出 IIS7 崩潰/鎖定/拒絕連接的原因
我有一個非常繁忙的網站,它在 W2K8 + IIS7 上的單個 Web 前端機器上執行。
時不時地-例如。也許是星期一凌晨 3 點或其他時間,然後幾天后.. 某個清晨的時間.. 然後 2 週內甚麼都沒有……等等 - 該網站無法響應任何客戶端連接。
IE。沒有人可以連接到該網站。
我可以遠端桌面到機器等沒有問題。
我重新啟動應用程序池(網站以集成模式執行),仍然沒有。我嘗試獲取該過程的崩潰轉儲(大約 600 mb 甚至更多)……嘗試大約一分鐘後失敗(我有足夠的高畫質空間)。
解決此問題的唯一方法是手動停止 www 服務,然後重新啟動它。停止需要一段時間(一分鐘?),而啟動幾乎是即時的。
我不知道我的程式碼的哪一部分導致了這種情況。起初,我認為這可能是堆棧溢出,因為某些錯誤可能會進入錯誤頁面,從而導致錯誤..沖洗重複繁榮。但是我看過錯誤頁面,感覺還可以。
所以,我希望有人能夠幫助並說明我如何正確獲得 IIS 程序的正確轉儲,這樣我就可以對其進行更多的屍檢。我會向Tess Ferrandez(崩潰調試女神)發送電子郵件,但我想在向她發送垃圾郵件之前先在這裡嘗試一下。
任何人都可以對我如何弄清楚如何開始調試這個問題有任何建議嗎?
不久前我已經找到了答案。
該應用程序由於某種原因而崩潰(我仍然無法弄清楚究竟在哪裡),但是 IIS 停止的原因是它在短時間內發生了很多 - IIS 將其稱為RAPID-FAIL PROTECTION。
這是一些典型設置的螢幕截圖。如果我理解正確,就是說如果在 5 分鐘內發生 5 次崩潰,則停止此應用程序池並回复 Service Unavailable 消息。(不過,在此螢幕截圖中,快速故障保護已關閉)。
(來源:西風網)
所以這就是我的網站“拒絕連接”的原因。應用程序池被告知停止(協作並傾聽……)並返回 a
503 for any new connections
直到人類(咳咳咳)檢查發生了什麼並手動重新啟動應用程序池。
需要考慮的一些事項:
- 當iis停止工作時,www程序在做什麼?(即消耗CPU,消耗記憶體,扁平化?)
- 您可以從伺服器遠端登錄到網站(主機名或 IP 地址)還是連接失敗?
- 它總是在清晨失敗嗎?那段時間你有什麼事情嗎?備份、批處理或數據庫的東西?
- 您的 asp.net 程序是否消耗大量 ram 或 cpu?
- 如果您創建第二個非 asp.net 站點(純 html),它會繼續執行嗎?