35

与将 Web 应用程序保留在一个默认应用程序池中相比,拥有专用应用程序池的优点和缺点是什么?

4

5 回答 5

24

优点:

  • 应用程序彼此隔离,除非 IIS 与之配套,否则应用程序池锁定只会取出该池中的应用程序
  • 能够在不同的 ASP.NET 运行时下运行应用程序,如果需要,一个池用于 1.1,另一个用于 2.0
  • 能够为或多或少的关键应用程序设置不同的应用程序池设置。例如,ASP.NET 中的公司网站可能希望在 __ 分钟不活动后关闭,以防止卸载,因为响应至关重要。其他网站可能不需要它。
  • 可以在文件访问方面相互保护池,非常适合第三方或不受信任的应用程序,因为它们可以在非常严格的用户帐户下运行。

缺点:

  • 每个应用程序池都有自己的内存库和自己的进程,因此可以使用更多资源
  • 有些人发现很难调试应用程序,因为您有多个进程
于 2008-10-21T20:44:38.823 回答
18

在应用程序池中组合站点的主要原因是为了节省内存。运行多个 w3wp.exe 进程会产生大量内存开销。如果您没有具体的理由将它们分开,最好将它们放在一起。

于 2008-10-21T20:20:52.680 回答
16

专用应用程序池通常会防止一个站点中出现的问题影响其他站点。如果您跨站点共享应用程序池,则当仅特定站点(或应用程序池)存在错误情况时,您可以关闭盒子上的所有站点。

此外,如果您在同一 Web 服务器上混合 ASP.Net 版本,则每个 ASP.Net 版本至少需要不同的应用程序池,或者每个网站都需要不同的应用程序池。

我想不出不分离应用程序池的充分理由,这很容易做到。

于 2008-10-21T20:18:55.070 回答
6

我同意杰森。

此外,您可以为不同的应用程序池指定不同的用户(例如 Windows 帐户)。这样就可以在数据库中设置具有不同权限的用户。这有助于增强安全性,并能够跟踪哪个网站/用户正在访问数据库,这在跟踪数据库性能问题时很有用。

于 2008-10-21T20:33:44.040 回答
0

如果您有单独的应用程序池,那么您会在第一个访问您网站的人的初始加载时间支付罚款,并在应用程序池回收后重新启动它。

例如,假设一夜之间没有人访问您的服务器,IIS 将停止运行(我相信默认为 20 分钟)。第一个访问服务器的人将遭受延迟,直到您的应用程序被加载回内存。

根据您部署站点的方式(例如发布模式等),这可能不是问题,也可能是烦人的。

这就是为什么我们正在考虑迁移到单个应用程序池/服务器,而不是为每个站点迁移 1 个。

于 2019-07-23T03:27:20.383 回答