我是 IIS 新手。我一直在阅读有关回收应用程序池的好处,以释放可能存在泄漏的问题应用程序所造成的内存。我理解通过回收应用程序池,我实际上是在重新启动应用程序,而无需重新启动服务器。我还理解通过回收应用程序池,我正在清除应用程序缓存和会话。
我的问题是,当我回收配置为仅具有 1 个工作进程的应用程序池时,是否会清除请求队列,或者在新工作进程启动时排队的请求是否会得到满足?
答案1
当你在 IIS 7 及更高版本上回收应用程序池时(不确定早期版本是否如此),默认情况下 IIS 将启动一个新的工作进程来处理新请求前终止现有的工作进程。任何时候都不应出现单个请求失败的情况,并且如果有请求排队,则新工作进程将照常处理它们。
顺便说一句,您应该安排任何应用程序池回收在非高峰时段进行,因为您已经意识到它将清除任何活动会话,并且如果应用程序依赖会话存储,将会破坏用户体验。
最佳做法是从源头修复应用程序内存泄漏,但我意识到这并不总是可行的。我还会进行测试,以确保您确实首先遇到了问题;不要只是在应用程序确实出现泄漏的情况下安排常规应用程序池回收 - 先进行测试并确保确实遇到了问题。