2010-12-14 39 views
0

我想描述在分析生產中的asp.net應用程序時發現的奇怪問題,並要求對以下問題提出一些建議或意見。應用程序池回收中的奇怪內存增加

應用程序通常運行大約80-90 MB的內存佔用量。由於目前爲止沒有檢測到內存泄漏,所以這看起來很穩定 - 隨着時間的推移內存使用量沒有輕微增加。然而,當應用程序池回收時(我使用共享主機並通過記錄來判斷應用程序閒置20分鐘或每30小時左右發生問題時會發生問題)。問題是使用過的內存在回收期間幾乎翻了一番 - 大約160-170 MB,沒有任何解釋。這是令人困惑的,因爲人們普遍認爲回收應該清除記憶和所有其他資源 - 至少我是這樣理解的。系統持有大約7-8小時的內存量,然後內存使用量下降到90-100 MB的平常水平,沒有明顯的原因(至少我不知道)。所有的時間,應用程序似乎運作良好 - 沒有顯着的延遲或網站可用性的麻煩 - 對用戶來說,一切似乎都沒問題,至今沒有任何抱怨。查看隨時間變化的內存消耗情況 - 它看起來幾乎就像一個階梯函數。

重要的是,我無法在我的測試環境中重現這種行爲。有時候,我從提供商管理員那裏得到筆記,說我的應用程序使用的資源比允許的多,這真讓我感到困擾。

所以,我想知道 - 是否有任何應用程序池回收不釋放所有內存資源的情況?有什麼建議或指引我應該關注什麼?我不是這方面的專家,但我一直在閱讀關於重疊回收,回收序列化問題和更多問題的任何想法......任何想法?類似的經歷?

感謝

回答

0

這篇文章提供的,當你的網站的應用程序池被回收會發生什麼一個很好的概述:http://blogs.msdn.com/b/tess/archive/2006/08/02/asp-net-case-study-lost-session-variables-and-appdomain-recycles.aspx

我的猜測是,你的內存使用情況是由於如下每次JIT編譯增加回收應用程序池。我的猜測是你的共享主機與你的開發服務器有不同的配置和環境設置。恕我直言,如果您在共享主機上使用大約100兆內存,那麼您是否想要購買像DiscountASP.NET或GoDaddy這樣的主機,是否會遇到麻煩。如果你關心那個網站的所有內容,去獲得一個VPS或更多可配置的主機,你可以支付更高的內存限制。