Asp.net 中的应用程序池与应用程序域回收?

Application Pool vs Application Domain Recycling in Asp.net?

我对回收应用程序池和应用程序域的影响有点困惑。 正如我红色的高票文章如下: What exactly is Appdomain recycling

它说 appdomain 回收是由设置或 bin 文件夹中的任何更改引起的,但正如您在下面看到的那样

应用程序池也被使用此应用程序池的网站中的配置更改回收, 此时我想到了三个问题

1.Firstly,对于在网站 1 中所做的任何配置更改也会影响网站 2,因此它们都使用相同的应用程序池,回收应用程序池是否合理?,那么多个应用程序之间的隔离边界会发生什么使用相同的应用程序池?

2.Secondly,AppPlool回收和AppDoman Recyclyng到底有什么区别?,因为两者在回收的时候好像做的是一样的事情?

3.Based在上图中,我们是否可以得出这样的结论:配置更改肯定会回收AppDomain,但不一定会回收AppPool?

您的问题

  1. 应用程序配置更改不会重新启动应用程序池。配置更改重启 AppDomain,每个 App 都有不同的 AppDomain,负责边界和隔离。

  2. AppDomain Recycle 正在从 w3wp 进程卸载然后重新加载 AppDomain,并且不会重新启动该进程。但是应用程序池回收正在卸载应用程序池的相应 w3wp 进程。

  3. 是的,应用程序配置更改将回收 AppDomain,而不是应用程序池。

应用程序池回收与 AppDomain 回收

我相信这个总结(基于 post 底部的链接)将帮助您更好地理解 Application Pool RecycleAppDomain 回收.

AppDomain 回收

在某些情况下,应用程序域必须从内存中卸载,重新加载,然后重新编译代码。此进程不会终止工作进程 (w3wp.exe),因此不会影响分配给同一池的其他应用程序域。

应用程序池回收

应用程序池回收是指卸载应用程序池的所有工作进程 (w3wp.exe) 并启动新实例来处理传入请求。

AppDomain 回收情况

以下情况会导致应用域被回收:

  • 修改为web.config或Global.asax
  • 更改为应用程序的 bin 目录的内容
  • 更改为虚拟目录的物理路径
  • 删除应用程序的子目录
  • 重新编译(aspx、ascx 或 asax)的次数超过了 machine.config 或 web.config 中的 <compilation numRecompilesBeforeAppRestart=/> 设置指定的限制(默认为 15)

应用程序池回收情况

可能导致应用程序池回收的情况:

  • 配置池的回收条件

    ○ 固定时间间隔(默认1740分钟)
    ○固定请求数
    ○ 具体时间
    ○ 虚拟内存使用
    ○ 私有内存使用

  • 为池设置空闲超时值(默认为 20 分钟)
  • 在 IIS 中进行导致回收的配置更改

更多信息