【发布时间】:2013-03-23 23:08:57
【问题描述】:
如following article 中所述,一些 .NET 应用程序池在第一次请求时会变得非常慢(大约 x4 倍)。问题仅涉及应用程序池。其中一些很慢,而另一些则不在相同的条件下:Web 应用程序、配置、文件权限等。
所以我的问题是,这怎么会发生?一个应用程序池如何变得比具有相同设置的另一个应用程序池慢,即使在重新启动它们之后,有没有办法修复/防止它?一旦应用程序池变慢,它就不会再次变快,即使停止和启动它也是如此。
我确保在每次测试之前回收应用程序池,以便所有测试都是“第一次请求”。
我发现了同样的问题,想知道这里有没有人找到解决这个奇怪问题的方法?
请注意这不是asp.net初始化速度的普遍问题。我们将同一服务器上的相同代码与两个应用程序池进行比较:通用(快速)和损坏(慢)。在两个相同(相同)微不足道(没有任何数据库访问等)之间切换两个应用程序池(相同的设置,但一个不合理的“慢”)测试 asp.net 应用程序改变它们的行为:一个启动非常慢,另一个 - 不是。
问题是:
- 为什么应用程序池突然坏了(慢)?
- 如何避免应用程序池变“慢”?
- 如何修复损坏的应用程序池?是的,我们可以创建 无限的新应用程序池,但无论如何,这对于 生产环境。
UPD:我注意到问题甚至不限于“慢”应用程序池本身,而是其名称!如果您重命名“慢”应用程序池,它将再次变为“快”。如果您创建名为以前重命名(或删除)“慢”的新应用程序池,则此应用程序池再次变慢!
【问题讨论】:
-
我在使用 Application Identity 的 .NET 4 集成应用程序池上遇到了同样的情况。慢的应用池你用的是什么身份?
-
我在 Windows 2012 服务器上的 IIS 8.5 中遇到过这个问题。正如 OP 所说,它与应用程序池的名称完全相关——一旦应用程序池开始出现“问题”或性能不佳,就必须创建和使用具有不同名称的新应用程序池。我通过将相同的 API 发布到一台服务器上的两个域和另一台服务器上的两个域共 4 个实例来测试这一点——就响应时间而言,它们应该具有大致相同的性能,但有问题的应用程序池总是表现不佳直到池更新。
标签: asp.net .net-4.0 application-pool