【发布时间】:2010-10-18 20:01:29
【问题描述】:
在运行多个 ASP.NET 站点的服务器上,每个站点使用一个应用程序池还是让站点共享一个应用程序池更好?每种设置固有的优点或缺点是什么?还是这里有硬性规定?
【问题讨论】:
标签: asp.net
在运行多个 ASP.NET 站点的服务器上,每个站点使用一个应用程序池还是让站点共享一个应用程序池更好?每种设置固有的优点或缺点是什么?还是这里有硬性规定?
【问题讨论】:
标签: asp.net
这实际上取决于网站的要求以及您对风险的担忧。
当两个应用程序在同一个应用程序池中运行时,它们具有相同的安全级别,因此这里存在一些安全问题,因为理论上每个应用程序都可以访问另一个应用程序的文件。此外,如果一个站点开始出现问题并使用内存,则可能会导致回收或冻结,从而影响两者。
尽管对此没有“硬性规定”,但我考虑并导致我做出“自动”决定的一些事情如下。
那里有很多,但关键是隔离和对单个应用程序进行故障排除的能力。这是一个Microsoft article,也有点涉及。
【讨论】:
单独的 AppPool 的优点之一是,如果您需要回收 AppPool,您可以为一个站点执行此操作,而不会影响其他站点的性能(或缓存)。
【讨论】:
要记住的重要规则:
请勿将 .Net 1.1 和 .Net 2.0 应用程序放在同一个应用程序池中。它会很快把事情搞砸。
【讨论】:
这在很大程度上取决于某些站点是否需要比其他站点更高的可靠性,每个站点的预期负载是多少等。
一般来说,共享一个池会更有效,但一个行为不端的应用程序可能会更快地给其他站点带来问题。此外,您可以单独回收或更新单独的应用程序池,这可以简化维护计划。
【讨论】:
没有硬性规定。我倾向于每个站点使用一个应用程序池(IIS7 甚至默认为每个站点创建一个),因为我喜欢安全地使用它,以防我在一个站点/池中发生内存泄漏,我不希望它影响和删除其他网站。但我也有一些服务器,其中 100 个站点共享一个池而没有问题。所以,一如既往,这取决于。
【讨论】:
我更喜欢单个应用程序 - 单个应用程序池 - 除非您有性能问题。后台线程中的异常(一旦有人开始异步播放)可能会导致整个应用程序池崩溃。除非您启用了自动回收,否则这可能会导致很多麻烦。
【讨论】: