2010-12-14 92 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或更多可配置的主机,你可以支付更高的内存限制。

相关问题