天天看點

伺服器w3wp.exe程序占用cpu和記憶體過多

  最近公司伺服器總出現CPU100%占用情況,伺服器配置為雙核Xeon3.0x2,2G ECC記憶體。

  發現是w3wp.exe長時間占用大量CPU.出現這種情況應該是網站程式存在死循環等問題所緻。

  在找到問題以前可以暫時采取限制w3wp程序CPU使用率的方法保證網站可以将就着工作:

  在IIS6下,經常出現w3wp.exe的記憶體及CPU占用不能及時釋放,進而導緻伺服器響應速度很慢。

  解決CPU占用過多:

  1、在IIS中對每個網站進行單獨的應用程式池配置。即互相之間不影響。

  2、設定應用程式池的CPU監視,不超過25%(伺服器為4CPU),每分鐘重新整理,超過限制時關閉。

  根據w3wp取得是哪一個應用程式池:

  1、在任務管理器中增加顯示pid字段。就可以看到占用記憶體或者cpu最高的程序pid

  2、在指令提示符下運作iisapp -a。注意,第一次運作,會提示沒有js支援,點選确定。然後再次運作就可以了。這樣就可以看到pid對應的應用程式池。(iisapp實際上是存放在 C:windowssystem32目錄下的一個VBS腳本,全名為iisapp.vbs,如果你和我一樣,也禁止了Vbs預設關聯程式,那麼就需要手動到該目錄,先擇打開方式,然後選“Microsoft (r) Windows Based Script Host”來執行,就可以得到PID與應用程式池的對應關系。)

  3、到iis中察看該應用程式池對應的網站,就ok了,做出上面的記憶體或CPU方面的限制,或檢查程式有無死循環之類的問題。

  解決記憶體占用過多,可以做以下配置:

  1、在IIS中對每個網站進行單獨的應用程式池配置。即互相之間不影響。

  2、設定應用程式池的回收時間,預設為1720小時,可以根據情況修改。再設定當記憶體占用超過多少(如500M),就自動回收記憶體。

  我的設定如下:

  首先是對CPU的限制:在啟用cpu監視後,我設定該應用程式池最大的cpu使用率為50%。設定重新整理cpu時間為1分鐘,設定操作為“關閉”。最大工作程序數設定為1。這個意思是,IIS重新整理檢測該獨立池的CPU使用情況時間為1分鐘,如果超過設定的cpu限制50%,就會發出關閉池的指令,要求池在指定的時間内關閉。如果池成功在這個時間内關閉,IIS會重新開機動一個新池,此段時間很短,一般不會有什麼感覺,池就重新開啟了,對于通路網站的人基本是不會有感覺的。但如果池沒有在指定時間内關閉,IIS就會強行關閉它一個重新整理CPU時間。在這個停止的時間内,網站無法通路,提示“Service Unavaliable”。

伺服器w3wp.exe程式占用cpu和記憶體過多

關閉時間和啟動時間間隔設定:設短一些比如10秒,這樣當您的網站程式大量占用系統資源時IIS自動快速回收程序并且快速啟動程序,您的網站暫時還可以将就着工作。

伺服器w3wp.exe程式占用cpu和記憶體過多

 對記憶體的限制及程序回收時間的設定:我設定為記憶體占用超過800M就自動回收記憶體,虛拟記憶體沒有做限制。程序回收時間我保持預設沒有修改。各位可以根據自己的情況設定更短的時間。對應用程式池最大虛拟記憶體也可以在此進行設定,超過了設定的最大虛拟記憶體,該池會就被回收。

伺服器w3wp.exe程式占用cpu和記憶體過多

最後綜合落伍wlmmc的一些經驗,總結一些需要注意的問題:

  1、 要限制一個站點的CPU使用,必須将該站點設定為獨立應用程式池,共用應用程式池是無法限制單個站點的。IIS獨立應用程式池,就需要獨立的程序,非常消耗記憶體。獨立池越多,就有越多的W3WP程序。對于每個站點均要獨立應用程式池的伺服器,在一般的普通P43.0 2G記憶體的普通伺服器上,建議

不要超過50個站點,最好30以内,不然伺服器壓力非常大。在配置上,我一般把資源消耗較大的網站獨立一個池,一般普通BBS或者生成HTML的系統大概5個站一個池。普通網站以及一些企業站點均共用一個池。

  2、根據wlmmc的經驗,在伺服器硬體允許的情況下,一般不要限制站點記憶體使用,這樣能夠保證網站運作,不會出現使用者掉線情況。需要限制某站的最大虛拟記憶體不要小于64M,不然可能出現一些未知的錯誤。

  3、這些都不是根本解決辦法,它的根本問題是網站程式有問題,要解決根本問題還要從程式查起。根據本文開頭提到的方法查到具體的應用程式池,找到使用此應用程式池的網站,解決網站程式存在的問題,如死循環之類。

  4、除了w3wp.exe, 在調用資料庫進行大量查詢操作的時候,也會大量占用CPU資源,這是難免的(資料庫方面的語句及結構優化不在本文讨論範圍之内)。個人認為,隻要不是CPU長時間占用100%, 一般在75%左右都是正常的。

w3wp.exe

Tomato DualWAN 概述 事件檢視器日志詳解