15
  1. 我想知道究竟什么是工作进程回收?
  2. 在工作进程回收时它到底做了什么?
  3. 工作进程驻留在应用程序池中,可以通过应用程序池进行配置吗?
  4. 该应用程序池是否负责回收工作进程?还是IIS负责回收呢?
  5. 回收工作进程时会发生什么?
  6. 不强制回收有什么影响?
4

3 回答 3

24

IIS 工作进程回收是 IIS 杀死它为处理传入请求而产生的子进程并启动它们的干净副本的过程。

IIS 第一次收到对给定应用程序池中的 Web 应用程序的请求时,它会生成一个工作进程来实际完成工作。此过程执行诸如维护 ASP.NET 代码、ISAPI 处理程序等中的会话状态和静态数据之类的事情。随着时间的推移,IIS 想要的处理中可能会出现问题(应用程序代码中的内存泄漏、未处理的资源等)无需关闭服务器即可进行清理。所以它会定期告诉工作进程死亡,并产生一个新的。

当回收期到来时,IIS 停止向死去的进程发送新的服务请求,并允许它完成它正常执行的任何操作。它将提前生成一个新的替换进程,并在旧进程完成时开始向该进程发送新请求。一旦旧进程无事可做,它就会正常终止。

工作进程与给定的应用程序池隔离,因为这就是 IIS 完成进程隔离的方式。(例如,这就是为什么您可以在单个服务器上混合 .NET Framework 版本的原因——每个应用程序池都有自己加载的框架库,与其他程序库分开。)应用程序池确定有关工作进程的其他内容,包括它们的凭据以及该过程在关闭之前会保留多长时间。

关闭回收确实没有充分的理由,但如果一切正常,它应该不会伤害任何东西。如果您在行为不端的工作进程中运行代码,就会出现问题;随着时间的推移,即使是微小的内存或资源泄漏也会累积,您必须关闭应用程序池才能清理它们。通过重叠回收,IIS 可以在不中断服务的情况下为您处理这些问题。

于 2011-05-04T19:03:34.217 回答
3

工作进程回收只是意味着重新启动asp .net工作进程(aspnet_wp.exe)。它是由于各种原因而完成的。下面的文章描述的相当不错。 http://technet.microsoft.com/en-us/library/cc759005(WS.10).aspx

请通过它。

于 2011-05-04T19:01:13.710 回答
1

场景各不相同,但请记住:如果您的 Web 应用程序对数据库信息进行初始内存缓存(假设是巨大的初始缓存),则对新生成的应用程序池的第一个请求将需要很长时间才能完成。

于 2013-07-13T00:37:40.653 回答