解決w3wp.exe佔用CPU和記憶體問題

來源:互聯網
上載者:User

在WINDOWS2003+IIS6下,經常出現w3wp的記憶體佔用不能及時釋放,從而導致伺服器響應速度很慢。
今天研究了一下,可以做以下配置:
1、在IIS中對每個網站進行單獨的應用程式集區配置。即互相之間不影響。
2、設定應用程式集區的回收時間,預設為1720小時,可以根據情況修改。同時,設定同時啟動並執行w3wp進程數目為1。再設定當記憶體或者cpu佔用超過多少,就自動回收記憶體

一般來說,這樣就可以解決了。但仍然會出現個別網站因為程式問題,不能正確釋放。
那麼,怎麼樣才能找到是哪一個網站的?

1、在工作管理員中增加顯示pid欄位。就可以看到佔用記憶體或者cpu最高的進程pid
2、在命令提示字元下運行iisapp -a。注意,第一次運行,會提示沒有js支援,點擊確定。然後再次運行就可以了。這樣就可以看到pid對應的應用程式集區
3、到iis中察看該應用程式集區對應的網站,就ok了。

問:我的具體情況是這樣的:
伺服器配置 至強2.8G 記憶體512M SCSI硬碟 2塊 (軟鏡像)
系統 windows 2003
現在掛了一個asp.net開發的網站 訪問量不大 但是出現一個 問題就是
每當伺服器運行2-3天后 訪問網站就特別慢 重啟動伺服器後就 正常了
查看進程使用記憶體的情況 發現w3wp.exe 和sqlservr.exe 進程 佔用記憶體
相當大 達到了170多M( 每個) 物理可用記憶體幾乎用光
(伺服器重啟動時 佔用的記憶體很小才40多M 每個)
以前網站掛在一個虛擬機器上 資料庫是分開掛的 從沒出現這種情況
後來 原版移植到新伺服器上就 出現這樣的問題~~
還個一問題就是 我在SQL企業管理器中查看SQL進程 發現有很多是 。net 引起的進程是sleeping 但是卻佔用了記憶體~ 無法釋放

搞了很久了 一直都沒解決
求救~~請高手 指教~~ 萬分感謝~~~~~

答:IIS服務管理員----》應用程式集區----》添加你的應用,並設定最大記憶體,當程式達到最大記憶體後其會自動重啟。

我的問題跟你一樣,不過我的記憶體是2G的,訪問量比較高,一般是差不多運行24小時後就得重啟,記憶體沒耗完,W3WP進程佔到一百八九十兆,SQL佔了二百多兆時,就得重啟,不然整個網站就當在那邊....55555555,搞了快半個月了還是不行,痛苦啊

w3wp.exe就是你的ASP.NET應用宿主,如果你使用了大量的Session、Cache等資源,並且Session超市時間很長,那麼記憶體佔用量就比較大。應用池是為增加效能而設的一個特性,但是也消耗很大的記憶體。另外關掉Windows Server 2003裡的大多數Service(那個不用都可以關掉),也可以節省一部分記憶體

1.懷疑在程式中應用的CACHE,
2.CACHE中有大量的資料
3.頻繁重新整理CACHE
4.沒有設計好CACHE的方式

你的問題我以前也遇見過,我以前是用的Session,後我全部改成cook之後就好多了,應該是你的Session或是你的CACHE有問題(CACHE不太懂,但多多少應該是有的)

跟蹤下SQL的調用記錄,在每次往CACHE或SESSION寫入大量資料時記錄一下時間,看是否太過頻繁

1.在win2003裡asp.net的進程就是w3wp.exe

2.512M記憶體個人用是夠用了,但是放在伺服器上就有點不夠用了,尤其是win2003 + asp.net +sql server 。尤其是sql server 他是很吃記憶體的,如果不控制的話,他會佔光所有的實體記憶體(只剩下幾十M 倒 100M 吧)。win2003 本身就要佔用150M左右。也就剩不下什麼了。

3.最佳化asp.net程式,就向樓上的說的那樣,少用或不用session cache application之類的東西,再有就是是不是有翻頁的地方,翻頁處理不好也是會佔很多記憶體的。

4.限制sql的記憶體。企業管理器——SQL的屬性(一般是local)——“記憶體”標籤
在這裡看記憶體的設定,把最大值改成100M吧。

第四條是最快的方法,可以試一試。

我的一個自開發OA系統也存在這樣的問題。
總結上面,大概原因是因為 session 和 cache 的不合理使用造成的。
我的應用程式中,確實用了很多的Session 和 Cache,
在 MSDN 中找到 了 “動態記憶體分配”這一篇,今天就試看看,是否有效。
希望有經驗的朋友多給些資訊,大家也好總結下出現類似錯誤的原因,謝謝!!

不知道你是什麼網站。按理說是不會佔用這麼大的。如上你用了cache存放了超額的內容。當然。象session這種是不太可能佔用這麼大的了,或用了application 類似的一些有超長時間或永久保持性的對象來儲存大量資料。如利用單例儲存資料這些都有可能造成使用大量的記憶體。

建義2003系統安裝至少1G記憶體。

w3wp.exe是2003下的一個iis進程,至於樓主說的sql佔用記憶體,那有可能是因為你的sql沒有設定佔用記憶體上限

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

解決記憶體佔用過多,可以做以下配置:
1、在IIS中對每個網站進行單獨的應用程式集區配置。即互相之間不影響。
2、設定應用程式集區的回收時間,預設為1720小時,可以根據情況修改。再設定當記憶體佔用超過多少(如500M),就自動回收記憶體。

解決CPU佔用過多:
1、在IIS中對每個網站進行單獨的應用程式集區配置。即互相之間不影響。
2、設定應用程式集區的CPU監視,不超過25%(伺服器為4CPU),每分鐘重新整理,超過限制時關閉。

根據w3wp取得是那個一個應用程式集區:
1、在工作管理員中增加顯示pid欄位。就可以看到佔用記憶體或者cpu最高的進程pid
2、在命令提示字元下運行iisapp -a。注意,第一次運行,會提示沒有js支援,點擊確定。然後再次運行就可以了。這樣就可以看到pid對應的應用程式集區。(iisapp實際上是存放在C:\windows\system32目錄下的一個VBS指令碼,全名為iisapp.vbs,如果你和我一樣,也禁止了Vbs預設關聯程式,那麼就需要手動到該目錄,先擇開啟檔案,然後選“Microsoft (r) Windows Based Script Host”來執行,就可以得到PID與應用程式集區的對應關係。)
3、到iis中察看該應用程式集區對應的網站,就ok了,做出上面的記憶體或CPU方面的限制,或檢查程式有無死迴圈之類的問題。

-

資料引用:http://www.knowsky.com/343457.html

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.