iis占用服务器内存,W3wp.exe 进程占用内存高消耗CPU近100%导致网站反应速度缓慢的解决方案...
如何降低W3WP.EXE占用的內存和CPU?結合網上的諸多建議,主要的解決辦法是:
a.在IIS中對每個網站進行單獨的應用程序池配置;
b.合理的配置你的應用程序池;
c.找出具體網站站點的程序問題。
問題描述
環境:win2003server+IIs+ASP+MSSQL
現象:每隔一段時間(不定,有時幾分鐘,有時半小時)出現一次網站打開非常緩慢,甚至有時會出現超時打不開站點,此時查看服務器端的進程,CPU占用率達到100%,其中w3wp占用超過80%,于是所有服務器端的操作也變得緩慢。
簡單解決方法:每次現象出現時,立即登錄服務器直接結束w3wp進程或重啟IIS服務。
解決方案參考
針對該類問題,具體可參考如下所述方法來逐步尋找根本的解決途徑:
1、在IIS中對每個網站進行單獨的應用程序池配置,即使之互相之間不影響。(但需要注意一點:進程池越多越占用內存,由于訪問網站之后往往不會立即釋放內存資源。)
2、設置應用程序池的回收時間。默認為1720小時,可以根據情況修改。同時,設置同時運行的w3wp進程數目為1。再設置當內存或者cpu占用超過多少,就自動回收內存 。
3、設置固定時間回收進程。比如在凌晨1:00至9:00之前訪問人數都比較少,影響很少小,可以設定每天在這個時間段內進行內存回收,以減少服務器因 為內存不足帶來的影響。設定固定時間回收進程在IIS6中沒有限制次數,所以可根據實際情況來設定時間。比如:晚上12:00,8:00,12:30,6:30等時間進行有效的進程池資源回收。
一般來說,做完以上操作就可以解決了。但仍然會可能出現因為個別網站的程序問題,不能及時釋放資源。所以我們可以找出該網站,然后調試分析其程序問題所在。
那么,怎么樣才能確定是哪一個網站呢?參考方法如下:
1、在任務管理器中增加顯示pid字段。方法為:打開任務管理器-查看-選擇列-選中“PID(進程標識符)”前的復選框。這樣就可以看到占用內存或者cpu最高的進程pid。
2、在命令提示符下運行iisapp -a。注意,第一次運行,可能會提示沒有js支持,點擊確定進行注冊,然后再次運行該命令就可以了。這樣就可以看到pid對應的應用程序池。
3、到iis中察看該應用程序池對應的網站,進行更詳細的分析,具體問題具體對待。
最后的補充
總結一些需要注意的問題:(摘)
1、 要限制一個站點的CPU使用,必須將該站點設置為獨立應用程序池,共用應用程序池是無法限制單個站點的。IIS獨立應用程序池,就需要獨立的進程,非常消耗內存。獨立池越多,就有越多的W3WP進程。對 于每個站點均要獨立應用程序池的服務器,在一般的普通P43.0 2G內存 的普通服務器上,建議不要超過50個站點,最好30以內,不然服務器壓力非常大。在配置上,我一般把資源消耗較大的網站獨立一個池,一般普通BBS或者生 成HTML的系統大概5個站一個池。普通網站以及一些企業站點均共用一個池。
2、根據wlmmc的經驗,在服務器硬件允許的情況下,一般不要限制站點內存使用,這樣能夠保證網站運行,不會出現用戶掉線情況。需要限制某站的最大虛擬內存不要小于64M,不然可能出現一些未知的錯誤。
3、這些都不是根本解決辦法,它的根本問題是網站程序有問題,要解決根本問題還要從程序查起。根據本文開頭提到的方法查到具體的應用程序池,找到使用此應用程序池的網站,解決網站程序存在的問題,如死循環之類。
4、除了w3wp.exe, 在調用數據庫進行大量查詢操作的時候,也會大量占用CPU資源,這是難免的(數據庫方面的語句及結構優化不在本文討論范圍之內)。個人認為,只要不是CPU長時間占用100%, 一般在75%左右都是正常的。
總結
以上是生活随笔為你收集整理的iis占用服务器内存,W3wp.exe 进程占用内存高消耗CPU近100%导致网站反应速度缓慢的解决方案...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: u盘怎么彻底删除不被恢复 彻底删除U盘,
- 下一篇: 前台传json ajax,如何在前台脚本