w3wp进程发生死锁ISAPI aspnet
ISAPI c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll 報(bào)告它自身有問題,原因如下: Deadlock detected 這個(gè)問題,字面意思是程序發(fā)生死鎖了,它會(huì)導(dǎo)致w3wp進(jìn)程重啟。通常這個(gè)問題不好查到原因。我知道兩個(gè)可能導(dǎo)致此問題的實(shí)例
下面是一小段代碼:
復(fù)制代碼 代碼如下:
//_rwLock的類型是ReaderWriterLock
_rwLock.AcquireWriterLock(100);
DoSomething();
_rwLock.ReleaseWriterLock();
這行代碼是有問題的,如果在DoSomething()方法執(zhí)行中發(fā)生一次異常,這個(gè)寫鎖就釋放不了了,再次請(qǐng)求時(shí)就會(huì)等待直到超時(shí),在多線程的情況下就會(huì)發(fā)生死鎖’Deadlock detected’
正確的寫法應(yīng)該是:
復(fù)制代碼 代碼如下:
try
{
_rwLock.AcquireWriterLock(100);
DoSomething();
}
finally
{
if (_rwLock.IsWriterLockHeld)
_rwLock.ReleaseWriterLock();
}
這樣就算在DoSomething方法執(zhí)行時(shí)發(fā)生了異常,也可以釋放寫鎖。
發(fā)生這個(gè)問題時(shí)的日志寫的很籠統(tǒng):
ISAPI ‘c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll’ 報(bào)告它自身有問題,原因如下: ‘Deadlock detected’。
有關(guān)更多信息,請(qǐng)參閱在 http://go.microsoft.com/fwlink/events.asp 的幫助和支持中心。
這樣導(dǎo)致不容易找到問題發(fā)生在哪塊,所以我記錄兩種發(fā)生此問題的實(shí)例,希望有用。
問題分析方法(這個(gè)很有必要的)
今天系統(tǒng)突然折了,但是問題在哪呢?很費(fèi)周折。
錯(cuò)誤信息:
ISAPI’c:windowsmicrosoft.netframeworkv2.0.50727aspnet_isapi.dll’報(bào)告它自身有問題,原因如下:‘檢測(cè)到死鎖’。
有關(guān)更多信息,請(qǐng)參閱在http://go.microsoft.com/fwlink/events.asp的幫助和支持中心。
癥狀:系統(tǒng)總是不穩(wěn)定,一會(huì)能用,一會(huì)兒又死掉了。
分析過程:
這個(gè)版本已經(jīng)跑了很長時(shí)間,估計(jì)不是程序死鎖的問題。倒底是什么問題呢。應(yīng)該是外部環(huán)境的問題。由于錯(cuò)誤信息比較的抽象,之前沒有遇到過,所以google了下,但是好像遇到此問題的人很少,不過在博客園還是遇到一位受到同樣遭遇的人,但是并沒有一種很好的解決方案,也沒有確切的指出問題的癥結(jié)。所以只有自己進(jìn)行一些檢查。 友情鏈接檢查
<1>查看最近的系統(tǒng)更新,看是否有關(guān)于IIS之類的更新
<2>查看系統(tǒng)的殺毒軟件的日志文件,看是否收到了攻擊
但是,檢查上述兩個(gè)步驟,并沒有發(fā)現(xiàn)問題。看系統(tǒng)是有一些更新,迫于無奈,只好重啟系統(tǒng)試一下(也順便重啟IIS)。重啟之后,問題依舊。
觀察進(jìn)程管理器,發(fā)現(xiàn):
W3WP的線程數(shù),一直在變化,一會(huì)增加一個(gè)高峰值,重新增加一個(gè)W3WP進(jìn)程,之前的進(jìn)程過一會(huì)就自動(dòng)關(guān)閉,一會(huì)又恢復(fù)正常。
這說明網(wǎng)站,在不斷的死亡、重啟。到底是哪里的問題呢?應(yīng)該還是系統(tǒng)自己的問題了。但是它自身的版本并沒有問題,為了確定這一點(diǎn),我也試了之前穩(wěn)定的版本,同樣出現(xiàn)此類問題。最后,是否是系統(tǒng)中調(diào)用的第三方服務(wù),將整個(gè)系統(tǒng)給拖死了呢?
罪魁禍?zhǔn)?#xff1a;經(jīng)過檢查,果然是由于程序中實(shí)時(shí)調(diào)用了一個(gè)服務(wù),由于此服務(wù)已經(jīng)停止,請(qǐng)求無果,出現(xiàn)了死鎖。
總結(jié)
以上是生活随笔為你收集整理的w3wp进程发生死锁ISAPI aspnet的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 访问 IIS 元数据库失败解决问题的方法
- 下一篇: cscript.exe自动启动解决方法分