問:好多asp.net程序,放在一臺服務(wù)器上,客戶端連接使用一段時間后,在服務(wù)器上打開任務(wù)管理器一看,發(fā)現(xiàn)有很多w3wp.exe,占用內(nèi)存很大,達到1g,請問為什么會這樣?有什么辦法可以避免這種情況呢?
答:這主要是你的ASP.NET 開發(fā)的程序有 內(nèi)存泄漏;對于 非托管資源,一定要注意 釋放。
問:我的具體情況是這樣的:
服務(wù)器配置 至強2.8G 內(nèi)存512M SCSI硬盤 2塊 (軟鏡像)
系統(tǒng) windows 2003
現(xiàn)在掛了一個asp.net開發(fā)的網(wǎng)站 訪問量不大 但是出現(xiàn)一個 問題就是
每當(dāng)服務(wù)器運行2-3天后 訪問網(wǎng)站就特別慢 重啟動服務(wù)器后就 正常了
查看進程使用內(nèi)存的情況 發(fā)現(xiàn)w3wp.exe 和sqlservr.exe 進程 占用內(nèi)存
相當(dāng)大 達到了170多M( 每個) 物理可用內(nèi)存幾乎用光
(服務(wù)器重啟動時 占用的內(nèi)存很小才40多M 每個)
以前網(wǎng)站掛在一個虛擬機上 數(shù)據(jù)庫是分開掛的 從沒出現(xiàn)這種情況
后來 原版移植到新服務(wù)器上就 出現(xiàn)這樣的問題~~
還個一問題就是 我在SQL企業(yè)管理器中查看SQL進程 發(fā)現(xiàn)有很多是 。net 引起的進程是sleeping 但是卻占用了內(nèi)存~ 無法釋放
搞了很久了 一直都沒解決,求救~~請高手 指教~~ 萬分感謝~~~~~
答:IIS服務(wù)管理器----》應(yīng)用程序池----》添加你的應(yīng)用,并設(shè)置最大內(nèi)存,當(dāng)程序達到最大內(nèi)存后其會自動重啟。
我的問題跟你一樣,不過我的內(nèi)存是2G的,訪問量比較高,一般是差不多運行24小時后就得重啟,內(nèi)存沒耗完,W3WP進程占到一百八九十兆,SQL占了二百多兆時,就得重啟,不然整個站點就當(dāng)在那邊....55555555,搞了快半個月了還是不行,痛苦啊
w3wp.exe 就是你的ASP.NET應(yīng)用宿主,如果你使用了大量的Session、Cache等資源,并且Session超市時間很長,那么內(nèi)存占用量就比較大。應(yīng)用池是為增加性能而設(shè)的一個特性,但是也消耗很大的內(nèi)存。另外關(guān)掉Windows Server 2003里的大多數(shù)Service(那個不用都可以關(guān)掉),也可以節(jié)省一部分內(nèi)存
1.懷疑在程序中應(yīng)用的CACHE,
2.CACHE中有大量的數(shù)據(jù)
3.頻繁刷新CACHE
4.沒有設(shè)計好CACHE的方式
你的問題我以前也遇見過,我以前是用的Session,后我全部改成cook之后就好多了,應(yīng)該是你的Session或是你的CACHE有問題(CACHE不太懂,但多多少應(yīng)該是有的)
跟蹤下SQL的調(diào)用記錄,在每次往CACHE或SESSION寫入大量數(shù)據(jù)時記錄一下時間,看是否太過頻繁
1.在win2003里asp.net的進程就是w3wp.exe
2.512M 內(nèi)存?zhèn)€人用是夠用了,但是放在服務(wù)器上就有點不夠用了,尤其是win2003 + asp.net +sql server 。尤其是sql server 他是很吃內(nèi)存的,如果不控制的話,他會占光所有的物理內(nèi)存(只剩下幾十M 倒 100M 吧)。win2003 本身就要占用150M左右。也就剩不下什么了。
新聞熱點
疑難解答
圖片精選