【发布时间】:2012-03-08 04:34:58
【问题描述】:
我有一个应用程序,我们将数据集存储在 HttpRuntime.Cache 中,仅用于选择操作(如果数据集保存为 xml,则总共有大约 20MB 的数据)。
我们迁移到新的 Windows 2008 服务器 x64,其中启用了基于 IIS 站点的输出缓存。 我们的应用程序池也设置为 x64 模式。 一切顺利,应用程序运行时负载很大,内存使用量约为 2GB。
由于没有对应用程序进行任何更改,也没有额外的流量,应用程序开始占用服务器上的所有内存,目前是 7GB。
我尝试禁用输出缓存,但它根本没有帮助。解决该问题的唯一方法是回收应用程序池,但这种解决方案会导致所有用户会话丢失。
据我了解,HttpRuntime.Cache 项目对于应用程序池来说是全局的。 我们只是在 Application Load 事件中将项目插入到缓存中,因此缓存项目应该没有任何变化。
在禁用输出缓存且没有额外插入缓存的情况下,什么会导致意外的内存增长?
【问题讨论】:
-
您是否检查了任务管理器(性能-> 资源监视器)以查看是什么占用了内存(以便您确定不是 sql 占用了内存)?数据库是否在同一台服务器上运行?内存是在使用还是待机?
-
您好,数据集是通过 WebServices 填充的,此设置中没有数据库服务器。内存应该正在使用中,因为它会不断增长 - 5-20MB/s,CPU 使用率为 5-12%,直到达到设置的 7GB 回收限制。
标签: asp.net asp.net-mvc caching outputcache