共享.NET应用程序池

时间:2009-04-10 20:25:15

标签: asp.net

在运行多个ASP.NET站点的服务器上,每个站点使用一个应用程序池或站点共享单个应用程序池是否更好?每种设置固有的优点或缺点是什么?或者这里有一条严格的规则吗?

6 个答案:

答案 0 :(得分:6)

这实际上取决于网站的要求,以及您对风险的关注。

当两个应用程序在同一个应用程序池中运行时,它们具有相同的安全级别,因此对于某些应用程序存在安全问题,因为理论上每个应用程序都可以访问另一个应用程序的文件。此外,如果一个站点开始出现问题并使用内存,则可能导致回收或冻结,这可能会影响两者。

虽然没有“硬性和快速”的规则,但我认为并为我做出“自动”决定的一些事情如下:

  • 应用程序任务是否至关重要? (如果是这样,单独的应用程序池)
  • 这是第三方申请吗? (如果是这样,并且不确定它的作用,请分开应用程序池)
  • 此应用程序是否会看到活动的主要高峰? (如果是这样,最好隔离)

有很多,但关键是隔离和解决单个应用程序的能力。这是一个Microsoft article,它也会触及它。

答案 1 :(得分:4)

单独的AppPools的一个优点是,如果您需要回收AppPool,您可以在不影响其他站点的性能(或缓存)的情况下对一个站点执行此操作。

答案 2 :(得分:3)

要记住的一条重要规则:

不要将.Net 1.1和.Net 2.0应用程序放在同一个应用程序池中。它会把事情弄得很快。

答案 3 :(得分:2)

如果某些网站需要比其他网站更高的可靠性,每个网站的预期负载等等,这将取决于很多。

共享池通常会更有效,但是单个行为不当的应用程序可能会更快地导致其他站点出现问题。此外,您可以单独回收或更新单独的应用程序池,这可以使维护计划更容易。

答案 4 :(得分:2)

没有硬性规定。我倾向于每个站点使用一个应用程序池(并且IIS7甚至默认为每个站点创建一个)因为我喜欢安全地播放它,以防我在一个站点/池中发生内存泄漏,我不希望它影响并取下其他网站。但我也有一些服务器,其中100个站点共享一个池而没有问题。所以,一如既往,这取决于。

答案 5 :(得分:1)

我强烈希望单个应用程序 - 单个应用程序池 - unles你有性能问题。后台线程中的异常(一旦有人开始播放异步)可以关闭整个应用程序池。除非您启用自动回收,否则可能会造成很多麻烦。