【问题标题】:What is worker process recycling....?什么是工作进程回收......?
【发布时间】:2011-08-18 19:09:04
【问题描述】:
  1. 我想知道究竟什么是工作进程回收?
  2. 在工作进程回收时它到底做了什么?
  3. 工作进程驻留在应用程序池中,可以配置 通过应用程序池?
  4. 是那个应用程序池负责吗 回收工作进程?还是 IIS 负责回收?
  5. 回收工作进程时会发生什么?
  6. 不强制回收有什么影响?

【问题讨论】:

    标签: c# .net iis-7 worker-process recycle


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

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

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

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

      【讨论】:

      • +1:再补充一点,如果一起关闭回收,您可能会开始损害性能。很长一段时间后,堆会变得碎片化,即使您确定您的应用程序根本没有泄漏内存。
      • @vcsjones,感谢您添加几点以了解如果未回收工作进程相关的问题
      【解决方案3】:

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

      请通过它。

      【讨论】:

      • 是重启aspnet_wp.exe还是w3wp.exe?
      • 不完全是,有一些例外。它更多地与 IIS 版本相关,而不是服务器/客户端。在 IIS 6.0+ 中是 w3wp.exe,少于 6 个使用 aspnet_wp。不是服务器的 Windows XP 64 位使用 IIS6,因此您仍然可以获得应用程序池和 w3wp。 Windows Server 2000 是一个服务器,使用 aspnet_wp 因为 IIS 不支持应用程序池。
      • @vcsjones 你是对的:)。刚刚删除了我上面的评论以避免混淆。不同之处在于 IIS6 有 w3wp.exe,而较低版本的 IIS 有 aspnet_wp.exe
      猜你喜欢
      • 2010-09-10
      • 2010-12-03
      • 2011-07-15
      • 2011-06-29
      • 2016-08-30
      • 2019-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多