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