将Web应用程序放在默认应用程序池中和使用专用应用程序池的优缺点

36

将Web应用程序放置在一个默认应用程序池中和使用专用应用程序池的优缺点是什么?


你最好澄清一下你是在谈论交互式应用程序还是提供内容的网站,还有你所说的应用程序/网站数量。这些信息可以使答案大为不同。 - AnthonyWJones
5个回答

25

优点:

  • 应用程序相互隔离,除非IIS本身出现问题,否则应用程序池锁定只会影响该池中的应用程序。
  • 能够在不同的ASP.NET运行时下运行应用程序,如果需要,可以使用一个池子运行1.1版本,另一个池子运行2.0版本。
  • 对于更为重要或不那么关键的应用程序,能够设置不同的应用程序池设置。例如,一个使用ASP.NET的公司网站可能希望将闲置时间后关闭的时间增加一些,以防止因响应速度关键而卸载。其他网站可能不需要这样做。
  • 可以将应用程序池中的文件访问安全地隔离开来,非常适合第三方或不受信任的应用程序,因为它们可以在非常受限制的用户帐户下运行。

缺点:

  • 每个应用程序池都有自己的内存库和进程,因此可能会占用更多的资源。
  • 一些人发现很难调试应用程序,因为有多个进程。

小世界。好答案,Mitch! :) - Will Strohl

18

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


3
当您投票否定一个回答时,请添加评论说明原因。提问者喜欢这个回答。那么这个回答是错误的吗?为什么? - DOK
这个很好。我有一个多层应用程序运行在演示站点旁边。演示站点的服务和内容站点都在同一个应用程序池中,而生产环境则是分开的。将资源分配给两者或其中之一是非常简单的方法,这样做很有意义。 - Gats
对于本地开发来说,拥有一个应用程序池是可以的(便于调试,内存消耗较少),但是对于暂存/生产环境,我们为每个网站使用专用的应用程序池。 - igorGIS

16

专用应用程序池通常可以保持一个站点发生的问题不会影响其他站点。如果您在多个站点之间共享应用程序池,则可能会在仅特定站点(或应用程序池)存在错误条件时使盒子上的所有站点崩溃。

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

我想不到不分离应用程序池的好理由,这样做非常容易。


6

我同意Jason的观点。

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


2
实际上,使用应用程序池标识,您可以授予数据库权限给一个特定的应用程序池,而无需额外的Windows帐户。这也保护了客户的数据:如果一个Web应用程序被攻击,攻击者将无法访问其他数据库。 - Heinzi

1

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

例如,假设一夜之间没有人访问您的服务器,IIS 将会关闭(默认为 20 分钟)。第一个访问服务器的人将遭受延迟,直到您的应用程序被重新加载到内存中。

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

这就是为什么我们正在考虑转移到单个应用程序池/服务器而不是每个站点都有一个应用程序池的原因。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接