w3wp.exe進(jìn)程占用內(nèi)存和cpu過多的解決方案
當(dāng)前位置:點(diǎn)晴教程→知識管理交流
→『 技術(shù)文檔交流 』
在IIS6下,經(jīng)常出現(xiàn)w3wp.exe的內(nèi)存及CPU占用不能及時(shí)釋放,從而導(dǎo)致服務(wù)器響應(yīng)速度很慢。
解決CPU占用過多: 1、在IIS中對每個(gè)網(wǎng)站進(jìn)行單獨(dú)的應(yīng)用程序池配置。即互相之間不影響。 2、設(shè)置應(yīng)用程序池的CPU監(jiān)視,不超過25%(服務(wù)器為4CPU),每分鐘刷新,超過限制時(shí)關(guān)閉。 根據(jù)w3wp取得是哪一個(gè)應(yīng)用程序池: 1、在任務(wù)管理器中增加顯示pid字段。就可以看到占用內(nèi)存或者cpu最高的進(jìn)程pid 2、在命令提示符下運(yùn)行iisapp -a。注意,第一次運(yùn)行,會提示沒有js支持,點(diǎn)擊確定。然后再次運(yùn)行就可以了。這樣就可以看到pid對應(yīng)的應(yīng)用程序池。(iisapp實(shí)際上是存放在C:\windows\system32目錄下的一個(gè)VBS腳本,全名為iisapp.vbs,如果你和我一樣,也禁止了Vbs默認(rèn)關(guān)聯(lián)程序,那么就需要手動到該目錄,先擇打開方式,然后選“Microsoft (r) Windows Based Script Host”來執(zhí)行,就可以得到PID與應(yīng)用程序池的對應(yīng)關(guān)系。) 3、到iis中察看該應(yīng)用程序池對應(yīng)的網(wǎng)站,就ok了,做出上面的內(nèi)存或CPU方面的限制,或檢查程序有無死循環(huán)之類的問題。 解決內(nèi)存占用過多,可以做以下配置: 1、在IIS中對每個(gè)網(wǎng)站進(jìn)行單獨(dú)的應(yīng)用程序池配置。即互相之間不影響。 2、設(shè)置應(yīng)用程序池的回收時(shí)間,默認(rèn)為1720小時(shí),可以根據(jù)情況修改。再設(shè)置當(dāng)內(nèi)存占用超過多少(如500M),就自動回收內(nèi)存。 我的設(shè)置如下: 首先是對CPU的限制:在啟用cpu監(jiān)視后,我設(shè)置該應(yīng)用程序池最大的cpu使用率為50%。設(shè)置刷新cpu時(shí)間為1分鐘,設(shè)置操作為“關(guān)閉”。最大工作進(jìn)程數(shù)設(shè)置為1。這個(gè)意思是,IIS刷新檢測該獨(dú)立池的CPU使用情況時(shí)間為1分鐘,如果超過設(shè)置的cpu限制50%,就會發(fā)出關(guān)閉池的指令,要求池在指定的時(shí)間內(nèi)關(guān)閉。如果池成功在這個(gè)時(shí)間內(nèi)關(guān)閉,IIS會重啟動一個(gè)新池,此段時(shí)間很短,一般不會有什么感覺,池就重新開啟了,對于訪問網(wǎng)站的人基本是不會有感覺的。但如果池沒有在指定時(shí)間內(nèi)關(guān)閉,IIS就會強(qiáng)行關(guān)閉它一個(gè)刷新CPU時(shí)間。在這個(gè)停止的時(shí)間內(nèi),網(wǎng)站無法訪問,提示“Service Unavaliable”。 關(guān)閉時(shí)間和啟動時(shí)間間隔設(shè)置:設(shè)短一些比如10秒,這樣當(dāng)您的網(wǎng)站程序大量占用系統(tǒng)資源時(shí)IIS自動快速回收進(jìn)程并且快速啟動進(jìn)程,您的網(wǎng)站暫時(shí)還可以將就著工作。 對內(nèi)存的限制及進(jìn)程回收時(shí)間的設(shè)置:我設(shè)置為內(nèi)存占用超過800M就自動回收內(nèi)存,虛擬內(nèi)存沒有做限制。進(jìn)程回收時(shí)間我保持默認(rèn)沒有修改。各位可以根據(jù)自己的情況設(shè)置更短的時(shí)間。對應(yīng)用程序池最大虛擬內(nèi)存也可以在此進(jìn)行設(shè)置,超過了設(shè)置的最大虛擬內(nèi)存,該池會就被回收。 最后綜合以前的一些經(jīng)驗(yàn),總結(jié)一些需要注意的問題: 該文章在 2014/3/26 1:07:15 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |