2013-07-08 44 views
3

我們遇到了一個奇怪的問題。我們的ASP.NET應用程序運行在具有16Gb RAM的64位Windows 2008/IIS7機器上。當w3wp.exe進程達到4Gb(我們通過服務器上的任務管理器簡單地跟蹤它) - 內存不足即使仍有大量內存可用,仍會引發exeption。即使仍有內存可用,w3wp.exe耗盡內存

是否存在一個已知問題:ASP.NET進程限於64位系統(並使用64位應用程序池)的4Gb內存?

有什麼辦法解除這個限制嗎?

+0

如果一個應用程序池超過1GB的RAM,這是我學到的典型危險。我讀過的一般準則是保持<1 GB。檢查是否將可用內存限制到應用程序池。你可能不得不考慮負載均衡,或者找出.NET應用程序中的哪個進程正在運行。收集未使用的資源,並確保根據需要釋放資源。是否還有其他應用程序池在此服務器上運行?的SharePoint? – ApolloSoftware

+0

@AmitApollo感謝您的回覆。是的,我知道記憶濫用的含義,我正在尋找可能的原因。同時我確實需要這個ASP.NET進程能夠超過4Gb的RAM。有任何想法嗎?這臺服務器上還有其他應用程序池,但沒有像這個應用程序那樣激烈。沒有共享點。內存不僅僅在高峯期保持這個高度,它確實下降,但我確實需要它能夠超過這個限制。 –

+0

您是否在專門針對32位架構的自定義配置下構建了它,或者它是否是任何CPU配置? –

回答

1

這種聲音就像你有一個不明原因的資源,最終得到垃圾收集,但不夠快,不足以滿足你的需求。你重用了任何SQLConnection對象嗎?或者MailClient對象?還是非託管的圖像對象?

至於低於預期的內存限制,ASP.NET應用程序使用兩種類型的內存。一個是保留內存,另一個是實際使用的內存。我相信任務管理器會跟蹤實際的內存使用情況,但預留的內存也可能有限制。要了解您的進程佔用了多少保留內存,請轉至IIS7,單擊服務器(頂層,上方的應用程序池和站點文件夾),然後單擊進程選項,然後單擊應用程序的進程。它應該顯示CPU使用情況,請求數量和內存使用情況(包括預留和實際)。