3

我对回收应用程序池和应用程序域的影响有点困惑。为我红了一篇高票的文章如下: Appdomain 回收究竟是什么

它说appdomain回收是由设置或 bin 文件夹的任何更改引起的,但如下所示

在此处输入图像描述

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

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

2.其次,AppPool回收和AppDoman Recyclyng到底有什么区别?,因为它们在回收的时候似乎都在做同样的事情?

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

4

1 回答 1

2

你的问题

  1. 应用程序配置更改不会重新启动应用程序池。配置更改重新启动 AppDomain 并且每个 App 都有一个不同的 AppDomain 来处理边界和隔离。

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

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

应用程序池回收与 AppDomain 回收

我相信这个总结(基于帖子底部的链接)将帮助您更好地了解Application Pool RecycleAppDomain Recycle

应用域回收

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

应用程序池回收

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

AppDomain 回收情况

以下情况会导致应用程序域的回收:

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

应用程序池回收情况

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

  • 为池配置回收条件

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

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

更多信息

于 2020-02-11T16:38:17.890 回答