- 工信部備案號 滇ICP備05000110號-1
- 滇公安備案 滇53010302000111
- 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證 B1.B2-20181647、滇B1.B2-20190004
- 云南互聯(lián)網(wǎng)協(xié)會(huì )理事單位
- 安全聯(lián)盟認證網(wǎng)站身份V標記
- 域名注冊服務(wù)機構許可:滇D3-20230001
- 代理域名注冊服務(wù)機構:新網(wǎng)數碼
報錯詳情如圖所示。引發(fā)類(lèi)型為“System.OutOfMemoryException”的異常。
異常詳細信息:System.OutOfMemoryException:引發(fā)類(lèi)型為“System.OutOfMemoryException”的異常。
具體錯誤截圖如下:
錯誤原因:iis應用程序池 內存溢出錯誤 System.OutOfMemoryException
iis應用程序池 內存溢出錯誤 System.OutOfMemoryException
在A(yíng)SP.NET Web服務(wù)器上,ASP.NET所能?用到的內存,通常不會(huì )等同于所有的內存數量。在machine.config配置文件中,配置節<processModel>中有一個(gè)屬性“memoryLimit”,這個(gè)屬性的值是一個(gè)百分值,默認為“60”,即指定了ASP.NET進(jìn)程(在任務(wù)管理器中大家就可以看到ASP.NET的進(jìn)程,IIS5中為aspnet_wp,IIS6中為w3wp)能夠使用所有物理內存的60%。當ASP.NET使用的內存量超過(guò)這個(gè)限額時(shí),IIS會(huì )開(kāi)始自動(dòng)回收(recycle)進(jìn)程,即創(chuàng )建一個(gè)新的進(jìn)程去負責應付Http請求,而將舊進(jìn)程所占用的內存回收。
當我們有一臺很大內存的服務(wù)器時(shí),“memoryLimit”這個(gè)值是需?進(jìn)行適當的調整的。比如我們準備了一臺chemas-microsoft-com ffice marttags" />t="on">4G內存的服務(wù)器,那么t="on">4G×60%=t="on">2.4G。但是,對于Win32操作系統,一個(gè)進(jìn)程所能占用的所有內存空間只有t="on">2G。當ASP.NET進(jìn)程占用的內存開(kāi)始達到t="on">2G時(shí),由于它并沒(méi)有達到t="on">2.4G的“回收閾值”,所以IIS不會(huì )啟動(dòng)recycle進(jìn)程操作,但是由于Win32的限制,實(shí)際上已經(jīng)不能給這個(gè)進(jìn)程分配更多的內存了,于是,OutOfMemoryException就很可能會(huì )被拋出了。為了避免這樣的情況,我們就必須將“memoryLimit”適當調小,以讓IIS更早的進(jìn)行進(jìn)程回收。
微軟推薦的ASP.NET進(jìn)程占用內存是不超過(guò)60%,并最好使計算出的實(shí)際值不超過(guò)t="on">800M。就是說(shuō),對于一臺t="on">4G內存的服務(wù)器,最好將“memoryLimit”屬性設置成“20”。設置一個(gè)適當的回收閾值,讓IIS適時(shí)的進(jìn)行進(jìn)程回收,對于保證整個(gè)服務(wù)器的穩定運行,避免OutOfMemoryException是非常重要的。
在IIS6中,ASP.NET進(jìn)程的回收閾值不再由配置節中的“memoryLimit”屬性決定,而是由IIS管理器中的應用程序池配置中的設置決定。
但是,即使正確設置了這些配置,也不能保證完全避免OutOfMemoryException的發(fā)生,原因可能是多樣而復雜的,比如內存回收操作可能耗時(shí)太多等等。開(kāi)發(fā)人員要注意的,就是在代碼中時(shí)刻牢記不要無(wú)謂的使用和浪費內存。:)
如果你有一臺大內存的服務(wù)器,同時(shí)對Win32操作系統中對于進(jìn)程最高使用t="on">2G內存的限制很郁悶,可選的解決方法有兩個(gè):
解決方法:回收程序池即可
售前咨詢(xún)
售后咨詢(xún)
備案咨詢(xún)
二維碼
TOP