【问题标题】:Sharing .NET application pools [duplicate]共享 .NET 应用程序池 [重复]
【发布时间】:2010-10-18 20:01:29
【问题描述】:

在运行多个 ASP.NET 站点的服务器上,每个站点使用一个应用程序池还是让站点共享一个应用程序池更好?每种设置固有的优点或缺点是什么?还是这里有硬性规定?

【问题讨论】:

    标签: asp.net


    【解决方案1】:

    这实际上取决于网站的要求以及您对风险的担忧。

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

    尽管对此没有“硬性规定”,但我考虑并导致我做出“自动”决定的一些事情如下。

    • 应用程序任务是否关键? (如果是,单独的应用程序池)
    • 这是第三方应用程序吗? (如果是这样,并且不确定它的作用,请单独的应用程序池)
    • 此应用程序会出现活动高峰吗? (如果是,最好隔离)

    那里有很多,但关键是隔离和对单个应用程序进行故障排除的能力。这是一个Microsoft article,也有点涉及。

    【讨论】:

    • 因此,如果一个客户端的页面生命周期需要大量资源和时间来完成,那么最好将它们分成单独的应用程序池,这样线程就不会全部占用?
    【解决方案2】:

    单独的 AppPool 的优点之一是,如果您需要回收 AppPool,您可以为一个站点执行此操作,而不会影响其他站点的性能(或缓存)。

    【讨论】:

      【解决方案3】:

      要记住的重要规则:

      请勿将 .Net 1.1 和 .Net 2.0 应用程序放在同一个应用程序池中。它会很快把事情搞砸。

      【讨论】:

        【解决方案4】:

        这在很大程度上取决于某些站点是否需要比其他站点更高的可靠性,每个站点的预期负载是多少等。

        一般来说,共享一个池会更有效,但一个行为不端的应用程序可能会更快地给其他站点带来问题。此外,您可以单独回收或更新单独的应用程序池,这可以简化维护计划。

        【讨论】:

          【解决方案5】:

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

          【讨论】:

          • 为什么要冒每个池 100 个站点的风险?你有什么收获?如果执行被暂停一个,他们不是都暂停了吗?拥有 25 个站点的 4 个 A/P 是否会工作更多但更有弹性?
          【解决方案6】:

          我更喜欢单个应用程序 - 单个应用程序池 - 除非您有性能问题。后台线程中的异常(一旦有人开始异步播放)可能会导致整个应用程序池崩溃。除非您启用了自动回收,否则这可能会导致很多麻烦。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2023-03-27
            • 2012-08-24
            • 1970-01-01
            相关资源
            最近更新 更多