w3wp.exe占用CPU和內(nèi)存問題過高的解決方法
1、在IIS中對每個網(wǎng)站進行單獨的應用程序池配置。即互相之間不影響。
2、設置應用程序池的回收時間,默認為1720小時,可以根據(jù)情況修改。同時,設置同時運行的w3wp進程數(shù)目為1。再設置當內(nèi)存或者cpu占用超過多少,就自動回收內(nèi)存
一般來說,這樣就可以解決了。但仍然會出現(xiàn)個別網(wǎng)站因為程序問題,不能正確釋放。
那么,怎么樣才能找到是哪一個網(wǎng)站的?
1、在任務管理器中增加顯示pid字段。就可以看到占用內(nèi)存或者cpu最高的進程pid
2、在命令提示符下運行iisapp -a。注意,第一次運行,會提示沒有js支持,點擊確定。然后再次運行就可以了。這樣就可以看到pid對應的應用程序池
3、到iis中察看該應用程序池對應的網(wǎng)站,就ok了。
最近公司服務器總出現(xiàn)CPU100%占用情況,服務器配置為雙核Xeon3.0x2,2G ECC內(nèi)存。
發(fā)現(xiàn)是w3wp.exe長時間占用大量CPU.出現(xiàn)這種情況應該是網(wǎng)站程序存在死循環(huán)等問題所致。
在找到問題以前可以暫時采取限制w3wp進程CPU使用率的方法保證網(wǎng)站可以將就著工作:
在IIS6下,經(jīng)常出現(xiàn)w3wp.exe的內(nèi)存及CPU占用不能及時釋放,從而導致服務器響應速度很慢。
解決CPU占用過多:
1、在IIS中對每個網(wǎng)站進行單獨的應用程序池配置。即互相之間不影響。
2、設置應用程序池的CPU監(jiān)視,不超過25%(服務器為4CPU),每分鐘刷新,超過限制時關閉。
根據(jù)w3wp取得是哪一個應用程序池:
1、在任務管理器中增加顯示pid字段。就可以看到占用內(nèi)存或者cpu最高的進程pid
2、在命令提示符下運行iisapp -a。注意,第一次運行,會提示沒有js支持,點擊確定。然后再次運行就可以了。這樣就可以看到pid對應的應用程序池。(iisapp實際上是存放在 C:windowssystem32目錄下的一個VBS腳本,全名為iisapp.vbs,如果你和我一樣,也禁止了Vbs默認關聯(lián)程序,那么就需要手動到該目錄,先擇打開方式,然后選“Microsoft (r) Windows Based Script Host”來執(zhí)行,就可以得到PID與應用程序池的對應關系。)
3、到iis中察看該應用程序池對應的網(wǎng)站,就ok了,做出上面的內(nèi)存或CPU方面的限制,或檢查程序有無死循環(huán)之類的問題。
解決內(nèi)存占用過多,可以做以下配置:
1、在IIS中對每個網(wǎng)站進行單獨的應用程序池配置。即互相之間不影響。
2、設置應用程序池的回收時間,默認為1720小時,可以根據(jù)情況修改。再設置當內(nèi)存占用超過多少(如500M),就自動回收內(nèi)存。
我的設置如下:
首先是對CPU的限制:在啟用cpu監(jiān)視后,我設置該應用程序池最大的cpu使用率為50%。設置刷新cpu時間為1分鐘,設置操作為“關閉”。最大工作進程數(shù)設置為1。這個意思是,IIS刷新檢測該獨立池的CPU使用情況時間為1分鐘,如果超過設置的cpu限制50%,就會發(fā)出關閉池的指令,要求池在指定的時間內(nèi)關閉。如果池成功在這個時間內(nèi)關閉,IIS會重啟動一個新池,此段時間很短,一般不會有什么感覺,池就重新開啟了,對于訪問網(wǎng)站的人基本是不會有感覺的。但如果池沒有在指定時間內(nèi)關閉,IIS就會強行關閉它一個刷新CPU時間。在這個停止的時間內(nèi),網(wǎng)站無法訪問,提示“Service Unavaliable”。
關閉時間和啟動時間間隔設置:設短一些比如10秒,這樣當您的網(wǎng)站程序大量占用系統(tǒng)資源時IIS自動快速回收進程并且快速啟動進程,您的網(wǎng)站暫時還可以將就著工作。
對內(nèi)存的限制及進程回收時間的設置:我設置為內(nèi)存占用超過800M就自動回收內(nèi)存,虛擬內(nèi)存沒有做限制。進程回收時間我保持默認沒有修改。各位可以根據(jù)自己的情況設置更短的時間。對應用程序池最大虛擬內(nèi)存也可以在此進行設置,超過了設置的最大虛擬內(nèi)存,該池會就被回收。
最后綜合落伍wlmmc的一些經(jīng)驗,總結一些需要注意的問題:
1、 要限制一個站點的CPU使用,必須將該站點設置為獨立應用程序池,共用應用程序池是無法限制單個站點的。IIS獨立應用程序池,就需要獨立的進程,非常消耗內(nèi)存。獨立池越多,就有越多的W3WP進程。對于每個站點均要獨立應用程序池的服務器,在一般的普通P43.0 2G內(nèi)存的普通服務器上,建議不要超過50個站點,最好30以內(nèi),不然服務器壓力非常大。在配置上,我一般把資源消耗較大的網(wǎng)站獨立一個池,一般普通BBS或者生成HTML的系統(tǒng)大概5個站一個池。普通網(wǎng)站以及一些企業(yè)站點均共用一個池。
2、根據(jù)wlmmc的經(jīng)驗,在服務器硬件允許的情況下,一般不要限制站點內(nèi)存使用,這樣能夠保證網(wǎng)站運行,不會出現(xiàn)用戶掉線情況。需要限制某站的最大虛擬內(nèi)存不要小于64M,不然可能出現(xiàn)一些未知的錯誤。
3、這些都不是根本解決辦法,它的根本問題是網(wǎng)站程序有問題,要解決根本問題還要從程序查起。根據(jù)本文開頭提到的方法查到具體的應用程序池,找到使用此應用程序池的網(wǎng)站,解決網(wǎng)站程序存在的問題,如死循環(huán)之類。
4、除了w3wp.exe, 在調(diào)用數(shù)據(jù)庫進行大量查詢操作的時候,也會大量占用CPU資源,這是難免的(數(shù)據(jù)庫方面的語句及結構優(yōu)化不在本文討論范圍之內(nèi))。個人認為,只要不是CPU長時間占用100%, 一般在75%左右都是正常的。
非常愿意和各位在服務器配置、優(yōu)化、安全等方面進行交流和討論。
相關文章
IIS站點提示403?-?Forbidden:Access?is?denied問題的解決方法
在使用IIS的時候如果遇到403相關的錯誤,往往束手無策,不知道是什么權限的原因,現(xiàn)總結如下,這篇文章主要給大家介紹了關于IIS站點提示403?-?Forbidden:Access?is?denied問題的解決方法,需要的朋友可以參考下2023-10-10Win2003 R2 SP2 64位服務器系統(tǒng) 配置PHP+IIS6
最近一直在為服務器上的論壇頭大,我的論壇用的是Discuz X2,系統(tǒng)是Windows2003 R2 SP2 64位,使用FASTCGI +IIS+PHP的運行環(huán)境2012-07-07windows服務器維護經(jīng)驗小結(rsync,serv_u)
這篇文章是腳本之家在維護多臺win2003服務器的時候,經(jīng)常用到的一些配置方法與bat,主要是rsync文件同步配置,serv_u經(jīng)常停止,sqlserver數(shù)據(jù)庫壓縮問題2013-05-05win2003 iis 不支持請求(iis iso)的解決方法分析
今天有網(wǎng)友說,本站提供的文件無法下載,我看了一下,是iso文件,訪問時提示不支持請求,原來iis默認不支持一些格式的下載,下面是通用的解決思路。2009-10-10Windows系統(tǒng)下Apache、PHP無法啟動問題總結
這篇文章主要介紹了Windows系統(tǒng)下Apache、PHP無法啟動問題總結,本文總結了常見的多種導致Apache、PHP無法啟動問題,并給出了解決方法,需要的朋友可以參考下2015-01-01通過IIS自帶工具Iisapp.vbs查詢哪個w3wp.exe站點占用資源(cpu或內(nèi)存)
最近互聯(lián)網(wǎng)很多網(wǎng)站用戶被盜取,最近dedecms的漏洞出的比較多,導致很多網(wǎng)站淪陷,因為客戶的網(wǎng)站使用了dedecms導致我們其中的一臺服務器經(jīng)常無法訪問。2011-12-12