我们有一个并非完全防弹的 Web 应用程序,有时应用程序池会死掉,并且没有用户输入就不会重新启动。一旦重新启动,它将运行数天甚至数月。有没有办法让它自行重新启动?IIS 似乎可以快速杀死它认为行为不当的应用程序池。理想情况下,Web 应用程序会得到改进,但在这种情况下,这不是我能决定的。
答案1
您知道 IIS (6.0) 出厂时每 29 小时重新启动一次所有应用程序池吗?因此,除非您更改了设置,否则它几乎每天都会重新启动。如果它每隔几周/几个月就死机一次,那不是因为它距离上次重新启动已经运行了太长时间。
您会根据什么标准触发应用程序池重启?您是否只知道用户何时开始呼叫?是否有任何事件查看器条目可以触发?您还可以告诉 IIS 在消耗一定量的内存或完成一定数量的请求后重新启动给定的应用程序池 - 也许您可以连接一些监控并找出一个阈值,这意味着您需要这样做,然后通过 IIS 执行此操作,或者如果条件更复杂,则使用一种自动调用的方式iisapp.vbs /a NamedAppPool /r
/编辑 - 重新阅读 OP,您说应用程序池实际上会自行停止,并且不会在用户手动回收它的情况下重新启动? 肯定应该有一个应用程序或系统事件查看器条目 - 您可能必须打开 IIS 应用程序池警报才能看到它,否则它可能已经在那里了。
答案2
快速失败保护会停止应用程序池吗?如果是,请禁用它。
答案3
假设您已经采取了某种监控措施,如果应用程序池没有运行,您可以让您的监控软件(重新)启动它吗?
或者,您可以编写一个快速程序/脚本来根据需要检查/重新启动池并将其作为计划任务运行。