好的,这里有各种症状(客户和我们自己的员工抱怨间歇性减速、被“踢出”到登录页面或只是保存请求没有正确保存提交的数据)。
环境:
- Windows Server 2008(数据中心),Service Pack 2,64 位,2x2.8 GHz 处理器,7.5 GB RAM
- MS SQL Server 2008(在同一台机器上运行)
- IIS 7
服务器上运行着大约 10 个网站,每个网站都在自己的应用程序池中 - 大多数池以集成模式运行,2 个以经典模式运行,所有池都在 .NET 2.0 上运行,并且都以 ApplicationPoolIdentity 的身份运行。
我正在尝试分析、诊断和排除故障,但不知道从哪里可以获取有关可能发生的事件的更多信息。
以下是我已经采取的一些措施:
- 将每个应用程序池设置为每天回收一次,并删除任何其他自动回收
- 将每个虚拟内存限制设置为 1024000KB (1GB)
- 启用所有“生成回收事件日志条目”条目(配置更改、Isapi 报告不健康、手动回收、超出私人内存限制、常规时间间隔、超出请求限制、特定时间、超出虚拟内存限制)
我已经看到应用程序池进程回收(在任务管理器中) - 一个新的进程将启动,然后第一个进程消失 - 并且这种情况发生时没有内存或时间超过设置。
这是一个相当新的服务器,其中大部分来自 Windows Server 2003/IIS6。
如能提供有关设置信息收集、记录、诊断等的任何“后续步骤”,我们将不胜感激!
杰
答案1
应用程序池高级设置允许您为应用程序池启用额外日志记录。您可以启用所有应用程序池回收日志记录。在健康的情况下,它不应该很嘈杂,并且您也不介意在故障排除时它很嘈杂。
然后,在事件查看器中,每次应用程序池回收时,您都应该记录一个事件。
答案2
只是关于内存回收的一个注释 - 如果您在任务管理器中查看它,您可能不会注意到它达到了虚拟字节限制,但如果设置了事件日志设置,它仍然应该触发事件。
顺便说一句,对应用程序池设置的任何更改都将触发回收。所以除非你希望发生这种情况,否则不要重新确认设置!
为了避免这种情况,请更改属性 DisallowRotationOnConfigChange,这将导致应用程序池在被安排或强制回收之前(当应用程序池设置被修改时)不回收。
当 WAS 采取纠正措施时,它应该在系统日志中记录事件;应用程序池故障通常会记录到系统或应用程序(Windows 错误报告或应用程序问题)。