2008-12-19 16 views
7

我們爲客戶託管了一個相當大的(自寫的)ASP.NET網站。它由一個Web服務,一個網站和一個圖像服務網站組成,所有三個都在他們自己的虛擬目錄中。這三個虛擬目錄合在一個應用程序池中。池具有內存限制(最大虛擬內存和最大使用內存),設置爲500兆字節。工作進程因爲達到其虛擬內存限制而被回收

但是,即使一次只有一個用戶,應用程序池也會遭受很多回收。 事件日誌消息稱:

與「XXXX」服務應用程序池「XXXX」的進程ID的工作進程已請求回收,因爲它已經達到其虛擬內存限制。

但是,使用Process Explorer觀察工作進程不會顯示任何支持此消息的內容。我應該觀察哪些計數器來觀察事實上受到兩種設置限制的記憶?

更新1

觀察在任務管理器的過程示出了大約100 MB,仍然進程被回收與上述消息的「MEM的使用」和「VM大小」。 5服務器上可用GB的物理內存......

更新2

雖然網站是相當大的,這個問題在應用程序中的一小部分集中。它執行查詢(使用Oracle)並將結果綁定到gridview和中繼器webcontrol。結果由一個簡短描述和一個圖標組成(通過圖像服務網站加載)。如果我以後對方進行10個搜索行動,每一種有9個結果,工作過程中顯示出大約100 MB的內存使用和虛擬機的大小和回收...

更新圖像的使用的3 交換服務網站不會產生更好的結果。所以我認爲說這個問題是另一回事是公平的。

回答

0

嘗試使用Windows任務管理器。在進程選項卡上,轉到視圖菜單並選擇選擇列。選擇虛擬內存大小列,然後觀察asp.net工作進程的值。

1

只是作爲一個觀察... 如果你的「形象服務」網站,會做任何嵌入式圖像處理/生成,可以快速通過不調用任何一次性的資源Dispose()吞掉內存 - 尤其是那些被封裝本地功能...

這不是直接回答你的問題,但它可能有助於查看導致猖獗的內存使用的潛在問題。

+0

感謝您的提示,但我已經看過。 – 2008-12-19 16:24:49