win2003中的w3wp.exe進程大量占用cpu資源的各種問題解決方法
2024-09-10 16:49:25
供稿:網友
發生此問題是因為 Jet 數據庫引擎中存在缺陷。 Microsoft Windows Server 2003 上只會出現此問題。 1:使用 MicrosoftJet 數據庫引擎 Web 應用程序可能停止響應負載,造成假死:
原因:發生此問題是因為 Jet 數據庫引擎中存在缺陷。 Microsoft Windows Server 2003 上只會出現此問題。 在 Windows Server 2003, COM+ 更改頻率 CoFreeUnusedLibraries 函數被調用。 此更改導致 Jet 驅動程序以初始化頻繁。 此行為可能導致死鎖條件。
Web 服務器負載時最常出現此問題。
補丁下載:
chs:WindowsServer2003-KB838306-x86-chs.exe
enu:WindowsServer2003-KB838306-x86-enu.exe
在IIS6下,經常出現w3wp.exe的內存及CPU占用不能及時釋放,從而導致服務器響應速度很慢。
解決內存占用過多,可以做以下配置:
1、在IIS中對每個網站進行單獨的應用程序池配置。即互相之間不影響。
2、設置應用程序池的回收時間,默認為1720小時,可以根據情況修改。再設置當內存占用超過多少(如500M),就自動回收內存。
解決CPU占用過多:
1、在IIS中對每個網站進行單獨的應用程序池配置。即互相之間不影響。
2、設置應用程序池的CPU監視,不超過25%(服務器為4CPU),每分鐘刷新,超過限制時關閉。
根據w3wp取得是那個一個應用程序池:
1、在任務管理器中增加顯示pid字段。就可以看到占用內存或者cpu最高的進程pid
2、在命令提示符下運行iisapp -a。注意,第一次運行,會提示沒有js支持,點擊確定。然后再次運行就可以了。這樣就可以看到pid對應的應用程序池。(iisapp實際上是存放在C:/windows/system32目錄下的一個VBS腳本,全名為iisapp.vbs,如果你和我一樣,也禁止了Vbs默認關聯程序,那么就需要手動到該目錄,先擇打開方式,然后選“Microsoft (r) Windows Based Script Host”來執行,就可以得到PID與應用程序池的對應關系。)
3、到iis中察看該應用程序池對應的網站,就ok了,做出上面的內存或CPU方面的限制,或檢查程序有無死循環之類的問題。
QUOTE:
環境:win2003server+IIs+ASP+MSSQL
現象:每隔一段時間(不定,有時幾分鐘,有時半小時)出現一次網站打開非常緩慢,甚至有時會出現超時打不開站點,此時查看服務器端的進程,CPU占用率達到100%,其中w3wp占用70~80%,SQL占用20~30%。所有服務器端的操作也變得緩慢。
初期解決方法:每次現象出現時,立即登錄服務器直接結束w3wp進程或重啟IIS服務,平均每天約十次操作,由于服務器存放于遠程機房,所有操作都是遠程控制進行,有時會因此出現遠程無法連接登錄的情況,只能通過電話通知機房管理人員重啟服務器解決,此過程導致用戶抱怨不斷。
經過網上查閱資料,發現此類現象多數由于網頁代碼不合理所致,以下情況會導致此類現象發生:
1、代碼中多處使用application、seesion等服務器緩存,導致服務器資料過度占用;
2、代碼有不合理語法,死循環等;
3、數據庫損壞,尤其是ACCESS數據庫;
4、裝過多第三方軟件或插件,與IIS或網頁功能代碼沖突。
第一階段排查:根據查閱到的參考資料逐項分析
1、服務器上所有站點代碼均為公司設計人員自行編寫,可證實并無過多調用服務器緩存語法(排除)
2、代碼是否存在不合理語法(不確定)
3、根據情況來看,IIS進程占用率升高時,SQL占用率同時升高,應為SQL數據庫的站點,根據現象判斷,庫或表應該正常,估計是數據方面可能有誤;(不確定)
4、服務器端除了基本的系統服務,防殺毒及網站運作必備服務之外,并無多余第三方軟件,機率不大(排除)。
經過以上分析判斷,將不確定項連起來得出的結論是:某個采用了SQL數據庫的網站網頁代碼存在不合理語法,導致IIS和SQL進程CPU占用率過高。