什么是工人流程回收......?

Ani*_*ani 13 .net c# iis-7 worker-process recycle

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

Mic*_*eld 21

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

IIS第一次在给定的应用程序池中获取Web应用程序的请求时,会生成一个工作进程来实际执行该工作.此过程执行诸如维护ASP.NET代码,ISAPI处理程序等的会话状态和静态数据之类的事情.随着时间的推移,IIS希望处理(应用程序代码中的内存泄漏,未处理的资源等)中出现问题清理而不必关闭服务器.所以它会定期告诉工人进程死掉,并产生一个新进程.

当循环周期到来时,IIS会停止向死亡进程发送新的服务请求,并允许它完成正常运行的任何操作.它将提前产生一个新的替换过程,并在旧的请求完成时开始向该过程发送新请求.一旦旧流程没有任何剩余,它就会正常终止.

工作进程被隔离到给定的应用程序池,因为这就是IIS完成进程隔离的方式.(这就是为什么,例如,您可以在单个服务器上混合.NET Framework版本 - 每个应用程序池都将其自己加载的Framework库与其他库分开.)应用程序池确定有关工作进程的其他信息,包括其凭据在关闭之前该过程需要多长时间.

关闭回收真的没有充分的理由,但如果一切正常,它不应该伤害任何东西.如果您在工作进程中运行代码行为错误,则会出现问题; 随着时间的推移,即使很小的内存或资源泄漏也会累积起来,您必须关闭应用程序池才能清理它们.通过重叠的回收,IIS可以为您提供服务,而不会中断服务.

  • +1:要再添加一点,如果你把所有的垃圾回收起来,你可能会开始伤害性能.很长一段时间后,即使您确定应用程序根本没有泄漏内存,堆也会变得碎片化. (5认同)