windows2003服務器上IIS占用CPU資源100%的解(jiě)決辦法(fǎ)
解(jiě)決方案1:
現象:機器正在調(diào)試(shì)或允許IIS時,被異(yì)常(cháng)中斷服務(比如停(tíng)電),然後再次IIS運行頁麵時,CPU資源占用100%,即使重新啟動也(yě)無效。
原因:發生(shēng)中(zhōng)斷時,IIS會寫(xiě)異(yì)常日誌,但是此時(shí)寫入了亂碼,造成IIS一直寫日誌的死循環,耗盡了係統資源。找到係統路徑\System32\Logfiles\W3SVC1 下當天的錯誤日誌文件,即可看(kàn)到以上內容。
解決:刪除 係(xì)統路徑\System32\Logfiles\W3SVC1 下當天的錯(cuò)誤日誌文件,如:ex060904.log,然後重新啟動IIS即可。
解決方案2:
環境:win2003server+IIs+ASP+MSSQL
現象:每隔一段時間(不定(dìng),有時幾分鍾,有時半小時)出現一次網站打開非常緩慢,甚(shèn)至有(yǒu)時會出現(xiàn)超時打不開站點,此時查看服務器端(duān)的進程,CPU占用(yòng)率達到100%,其中w3wp占(zhàn)用70~80%,SQL占用20~30%。所有服務器端的操作(zuò)也變得緩慢
初期解決方法:每(měi)次現象出現時,立即(jí)登錄服務器直接結束w3wp進程或重啟IIS服務,平均每天約十次操作,由於服務器(qì)存放於遠程機房,所有操作都是遠程(chéng)控製進行,有時(shí)會因此出現遠程無(wú)法連接登錄的情況(kuàng),隻能通(tōng)過(guò)電話通知機房管理人員重啟服務器解決,此過程導致用戶抱怨不斷
經過網上查閱資料,發現此類現象多數(shù)由於網頁代碼不合理(lǐ)所(suǒ)致,以下情況會導(dǎo)致此類現象發生:
1、代碼中多處(chù)使用application、seesion等服務器緩存,導致服務(wù)器資料過度占用;
2、代碼有不合理語法(fǎ),死(sǐ)循環等;
3、數據庫損壞,尤其是ACCESS數據庫;
4、裝過多第(dì)三方軟件(jiàn)或插(chā)件,與IIS或網頁功能(néng)代碼(mǎ)衝突。
第一階段排查:根據查閱(yuè)到的參考資料逐項分析
1、服務器上所有站點代碼均為公司設計人員自行編寫,可證實(shí)並(bìng)無過多調(diào)用服務器緩(huǎn)存語法(排除)
2、代碼是否存在不合理語法(不(bú)確定)
3、根據情況來看,IIS進(jìn)程占用(yòng)率升高時,SQL占用率同時升(shēng)高,應為SQL數據庫的站點,根據現象判斷,庫或表應該正常,估計是(shì)數(shù)據方麵可能有誤;(不確定(dìng))
4、服務器端除了基本(běn)的係統服務,防殺毒及網(wǎng)站運作(zuò)必(bì)備服務(wù)之外(wài),並無多(duō)餘第三方軟件,機率不大(dà)(排除(chú))。
經過以上(shàng)分析判斷,將不確定項連起來(lái)得出的結(jié)論是:某個(gè)采用了SQL數據(jù)庫的網站網(wǎng)頁代碼存在不合理語法,導致IIS和SQL進程CPU占用率過(guò)高。
第二階(jiē)段排查:
確定範圍,接著繼續把範圍縮小。
由於服務器上采用SQL數據(jù)庫(kù)的站點(diǎn)並不多,便(biàn)於(yú)建立獨(dú)立進程ID來觀察,將所有采用SQL數據庫的站點在IIS管理器中分別建(jiàn)立獨立的應用程序池,然後通過CMD界麵輸入:iisapp -a 命(mìng)今查看並(bìng)記(jì)錄下各IIS池的(de)進程ID號,通過多次現象重現時的觀察,有個IIS進程(chéng)ID是導致此次問(wèn)題的罪魁禍首(shǒu)。
解決方案3:
在IIS6下,經常出現w3wp.exe的內存及CPU占用不(bú)能及時釋放,從(cóng)而導(dǎo)致服務器響應速度很慢。
解決內存占用(yòng)過多,可以做以下配置:
1、在IIS中對每個網站進行單獨的應用程序池配置。即互(hù)相之間不影響。
2、設置應用程序池的回收時間,默認為1720小(xiǎo)時(shí),可(kě)以根據情況修(xiū)改。再設置當內存占用超過多少(如500M),就自(zì)動回收內存。
解決CPU占(zhàn)用過多:
1、在(zài)IIS中對每個(gè)網站進行單獨的應用程序池配置。即互相之間(jiān)不(bú)影響(xiǎng)。
2、設置應用程序池的CPU監視(shì),不超過25%(服務器(qì)為4CPU),每分鍾刷新,超過(guò)限製時關閉。
根據w3wp取得是那個一個應用程序池:
1、在任務管理器中增加顯示(shì)pid字段。就可以看到占用內存或者cpu最高的進程
2、在(zài)命令提示符(fú)下運(yùn)行iisapp -a。注意,第一次運(yùn)行,會提(tí)示沒有js支持,點(diǎn)擊確定。然後再次(cì)運行就可(kě)以了。這樣就可(kě)以看到pid對應的應用程序(xù)池(chí)。(iisapp實際上是存放在C:\windows\system32目錄下的一(yī)個VBS腳本,全名為iisapp.vbs,如果你和我(wǒ)一(yī)樣,也禁止了Vbs默認(rèn)關(guān)聯程序,那麽(me)就需要(yào)手動到該目錄,先擇打開方式,然後選(xuǎn)“Microsoft (r) Windows Based Script Host”來執行,就可以(yǐ)得到PID與應用程(chéng)序池(chí)的對應關係。)
3、到iis中察看該應用(yòng)程(chéng)序池對應的網站,就ok了,做出上麵的內存或CPU方(fāng)麵的限製,或檢查程序有無死循(xún)環之類的問題。
關鍵詞:windows2003,服務(wù)器(qì),CPU,100%,解決辦法,IIS
閱讀本文後您有什麽感想? 已有 人給(gěi)出評價!
- 0
- 56
- 0
- 0
- 0
- 0