aspnet_isapi.dll' 報告它自身有問題,原因如下: '檢測到死鎖'。
今天系統突然折了,但是問題在哪呢?很費周折。
錯誤信息:
ISAPI 'c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll' 報告它自身有問題,原因如下: '檢測到死鎖'。
有關更多信息,請參閱在 http://go.microsoft.com/fwlink/events.asp 的幫助和支持中心。
症狀:系統總是不穩定,一會能用,一會兒又死掉了。
分析過程:
這個版本已經跑了很長時間,估計不是程序死鎖的問題。倒底是什麼問題呢。應該是外部環境的問題。由於錯誤信息比較的抽象,之前沒有遇到過,所以google了下,但是好像遇到此問題的人很少,不過在博客園還是遇到一位受到同樣遭遇的人,但是並沒有一種很好的解決方案,也沒有確切的指出問題的症結。所以只有自己進行一些檢查。
<1>查看最近的系統更新,看是否有關於IIS之類的更新
<2>查看系統的殺毒軟件的日志文件,看是否收到了攻擊
但是,檢查上述兩個步驟,並沒有發現問題。看系統是有一些更新,迫於無奈,只好重啟系統試一下(也順便重啟IIS)。重啟之後,問題依舊。
觀察進程管理器,發現:
W3WP的線程數,一直在變化,一會增加一個高峰值,重新增加一個W3WP進程,之前的進程過一會就自動關閉,一會又恢復正常。
這說明網站,在不斷的死亡、重啟。到底是哪裡的問題呢?應該還是系統自己的問題了。但是它自身的版本並沒有問題,為了確定這一點,我也試了之前穩定的版本,同樣出現此類問題。最後,是否是系統中調用的第三方服務,將整個系統給拖死了呢?
罪魁禍首:經過檢查,果然是由於程序中實時調用了一個服務,由於此服務已經停止,請求無果,出現了死鎖。
教訓:
<1>最大大限度保證系統與第三方服務的穩定、安全,並在請求過程中做超時判斷、消息分級處理。
<2>遇到問題,首先應全面分析系統的問題可能性,因為系統本身的運行環境一般都是固定不變的,出現問題的可能性很小。
有的時候在寫程序的時候,如果出了問題,首先應該懷疑自己的思路、代碼哪裡出了問題,而不應該去怪罪IDE或者OS出了什麼BUG。這樣你就少走很多彎路。