我有一个网站应用程序运行在它自己的IIS 7.0上的应用程序池。该应用程序是一个ASP.NET MVC 3网站。
我注意到这个应用程序的内存使用相应的w3wp IIS工作服务相当高(800 MB,有一些波动)。
我正在尝试诊断问题,并尝试过以下操作:
我在IIS级别禁用了网站的输出页面缓存,然后再次使用应用程序池。这将导致w3wp进程重新启动。这个进程的内存使用量慢慢地爬升到大约800 MB,大概需要30秒左右的时间。目前没有处理任何页面请求。当我从IIS重新启动网站时,进程的内存大小不会改变。
我已经尝试从VS 2010运行应用程序的调试副本,内存使用没有问题。
我有一些想法/问题是:
这个问题是否与网站代码相关? – 考虑到任何页面请求之前的内存火箭已经发送/处理,我认为这不是一个代码问题?
MVC中内置的应用程序没有处理缓存中写入的内容。
该网站使用实时显示数据,它定期使用ajax请求,并且通常长时间“打开”。
为什么在应用程序被回收之后内存使用量将会上升,并且不会发送用户请求?这是因为它将旧的缓存信息加载到磁盘的内存中吗?
应用程序不会崩溃,我只是关心内存使用,这不是一个大的网站…
任何想法/帮助与这个问题的底部将不胜感激。
解决方法
我只是看我的服务器和我的池使用900-1000MB虚拟大小的内存和380MB工作集。我的网站运行顺利,出了问题多年了,我已经从各方面检查了。我的池永远不会回收,服务器运行,直到下一次更新继续40%稳定的免费物理内存。
如果你的内存没有持续增长,那么这个内存就是你的应用程序中的代码加上你设置为静态,常量,字符串和可能的缓存的数据。
您可以使用process explorer查看工作和虚拟大小内存。
您还可以考虑根据您的代码运行配置文件,以查看是否有任何“内存泄漏”或其他问题。从google找到一个:https://www.google.com/search?hl=en&q=asp.net+memory+profiler。