答案 0 :(得分:20)
IIS工作进程回收是IIS杀死子进程的过程,它会生成子进程来处理传入的请求并启动它们的干净副本。
IIS第一次在给定的应用程序池中获取Web应用程序的请求时,会生成一个工作进程来实际执行该工作。此过程执行诸如维护ASP.NET代码,ISAPI处理程序等的会话状态和静态数据之类的事情。随着时间的推移,IIS希望处理(应用程序代码中的内存泄漏,未处理的资源等)中出现问题清理而不必关闭服务器。所以它会定期告诉工人进程死掉,并产生一个新进程。
当回收期到来时,IIS会停止向死亡进程发送新的服务请求,并允许它完成正常运行的任何操作。它将提前产生一个新的替换过程,并在旧的请求完成时开始向该过程发送新请求。一旦旧流程没有任何剩余,它就会正常终止。
工作进程被隔离到给定的应用程序池,因为这就是IIS完成进程隔离的方式。 (这就是为什么,例如,您可以在单个服务器上混合.NET Framework版本 - 每个应用程序池都将其自己加载的Framework库与其他库分开。)应用程序池确定有关工作进程的其他信息,包括其凭据在关闭之前该过程需要多长时间。
真的没有理由关闭回收,但如果一切正常,它不应该伤害任何东西。如果您在工作进程中运行代码行为错误,则会出现问题;随着时间的推移,即使很小的内存或资源泄漏也会累积起来,您必须关闭应用程序池才能清理它们。通过重叠的回收,IIS可以为您提供服务,而不会中断服务。
答案 1 :(得分:2)
工作进程回收只是意味着重新启动asp .net工作进程(aspnet_wp.exe)。它由于各种原因而完成。以下文章非常体面地描述了一些事情。 http://technet.microsoft.com/en-us/library/cc759005(WS.10).aspx
请仔细阅读。
答案 2 :(得分:1)
方案各不相同,但请记住:如果您的网络应用程序对数据库信息进行初始内存缓存(假设是巨大的初始缓存),那么对新生成的应用程序池的第一个请求将需要很长时间才能完成。