我们为我们的客户托管了一个相当大的(自行编写的)ASP.NET 网站。它由一个 Web 服务、一个网站和一个图像服务网站组成,这三个网站都在它们自己的虚拟目录中。三个虚拟目录一起在一个应用程序池中。该池的内存限制(最大虚拟内存和最大使用内存)都设置为 500 兆字节。
但是,应用程序池会遭受多次回收,即使一次只有一个用户。事件日志消息说:
服务应用程序池“xxxx”的进程 ID 为“xxxx”的工作进程已请求回收,因为它已达到其虚拟内存限制。
但是,使用 Process Explorer 观察工作进程没有显示任何支持此消息的信息。我应该观察哪些计数器来观察实际上受这两种设置限制的内存?
更新 1
在任务管理器中观察进程会显示大约 100 MB 的“内存使用情况”和“虚拟机大小”,但进程仍会使用上述消息进行回收。服务器上可用的 5 GB 物理内存...
更新 2
尽管网站相当大,但问题集中在应用程序的一小部分。它执行查询(使用 Oracle)并将结果绑定到 gridview 和转发器 web 控件。结果包括一个简短的描述和一个图标(通过图像服务网站加载)。如果我一个接一个地执行 10 个搜索操作,每个操作给出 9 个结果,则工作过程显示 mem 使用情况和 vm 大小约为 100 MB 并回收......
更新 3 切换图像服务网站的使用不会产生更好的结果。所以我认为可以公平地说问题出在其他问题上。