【发布时间】:2012-06-10 23:39:40
【问题描述】:
我有一个在 IIS 7 上运行的具有多个应用程序域的 ASP.NET 应用程序,我无法理解为什么单个进程中有多个应用程序域。我已经掌握了我的代码库,并且没有明确地创建第二个应用程序域。回收是否有可能超时?
- 这些双域将持续一段时间。
- 如果由于 Web 配置或二进制更改而发生回收,则两个应用程序域都将关闭,并且将启动两个新的应用程序域。
- 这些服务器每天都会受到多个二进制补丁和 IISResets 的影响 - 有时有 2 个域,有时只有 1 个。
- 网络园艺已禁用。
- 我发现这一点是因为应用程序中有一个计时器向数据库发送心跳,并注意到有一天服务器有两次心跳。
在 windbg 中,!dumpdomain 向我显示以下结果:(过滤为仅显示应用程序域的名称):
Line 59: Name: None
Line 66: Name: None
Line 372: Name: DefaultDomain
Line 460: Name: /LM/W3SVC/1/ROOT/MyAppDomain-1-129882892717131250
Line 4437: Name: /LM/W3SVC/1/ROOT/MyAppDomain-4-129285605131450579
【问题讨论】:
-
迷人 :) 当您在 IIS 管理器中打开应用程序池时,选择运行此应用程序的池,然后在 RHS 的“操作”窗格中选择“查看应用程序”,列出了多少个应用程序?
-
好电话 - 只有一个应用程序。
-
会不会是 IIS 中的一些压力管理?在令人头疼的负载下 - 创建额外的 appDomain,否则要杀死不需要的?或者与快速故障安全保护有关的东西?类似的讨论:stackoverflow.com/questions/8979032/…
-
这可能是回收的结果,它们会持续多久? (如果你甚至可以检查)。也许您可以使用 Applicin_End 事件以某种方式检查这一点?
-
小时 - 这就像强制卸载应用程序域的 90 秒计时器永远不会完成,或者应用程序域被卡住试图卸载。
标签: asp.net iis-7 .net-4.0 appdomain