今天,我们的 ASP.NET MVC IIS 7 Web 应用程序拥有大量用户。
我注意到大约每隔 15 分钟,应用程序池进程就会被终止,然后启动一个新的进程。
我没有找到任何具体的原因。我可以想象内存限制已达到,但我无法验证这一点。
应用程序池具有默认设置。
我的问题是:
- 我是否可以在某处(事件日志?)阅读应用程序池被回收的原因?
更新 1
这是内存随时间的变化情况。似乎当内存用到 12 GB(服务器的物理内存)时,进程就会被终止:
一个假设是,对于每个用户,该用户的会话占用一些字节的 RAM,因此当新用户进入系统时,内存会越来越大。
答案1
回答您的具体问题,是的,您可以在 Windows 系统事件日志中查看应用程序池回收事件。筛选事件源“WAS”。
默认情况下,仅记录以下回收原因;
- 超出私有内存限制
- 固定时间间隔
- 超出虚拟内存限制
您可以更改默认值并启用其他回收事件的日志记录
Application Pool | Advanced settings | Recycling | Generate Recycle Event Log Entry
默认情况下,应用程序池不会因虚拟内存限制或私有内存限制而回收(默认限制设置为 0 = 从不)。