【问题标题】:What is the best practice when hosting more then one tomcat based web application托管多个基于 tomcat 的 Web 应用程序时的最佳实践是什么
【发布时间】:2012-05-22 21:50:59
【问题描述】:

我确实理解为多个 Web 应用程序使用相同的 tomcat 实例存在一些风险(例如,如果一个 web 应用程序崩溃 tomcat,它也会终止其他 web 应用程序。)。好处当然是成本效益,因为一台服务器就足够了,并且将所有 Web 应用程序放在一个地方使其非常易于管理。

对于在 tomcat 上具有多个 Web 应用程序的良好设置应该是什么样子,是否有任何行业指南?

【问题讨论】:

    标签: java tomcat web-applications


    【解决方案1】:

    优点

    • 一个要监控的 JVM
    • 可以共享公共库(有时有风险)

    缺点

    • 所有应用程序都在使用的通用 HTTP 线程池(但是,您可以使用不同的线程池配置多个连接器)
    • 一个出现故障的应用程序可以关闭整个服务器
    • 重新启动一个应用程序需要重新启动所有应用程序(如果不使用热部署)

    【讨论】:

    • Web 应用程序之间需要什么级别的分离才能避免缺点的最后一点(重新启动问题)?我需要两只雄猫吗?两个主机?两个引擎..?
    • 大多数应用程序服务器能够为每个应用程序使用单独的类加载器。这是应用程序单个进程中最好的分离级别。服务器。
    • @LudwigMagnusson:我的意思是:如果您在 Tomcat 上托管 5 个 WAR 文件并且您想升级其中一个(通过替换 WAR 文件),您必须关闭 Tomcat,因此所有 5 个应用程序都是下来一会儿。
    • @Thomas 没错。正如您所描述的那样,我有一台服务器,我想知道这是否真的有必要(重新启动整个服务器只是为了重新加载一个 Web 应用程序)。我知道管理器界面可以用来重启一个应用程序,但是这可以通过命令行执行来完成吗?
    • @LudwigMagnusson:您需要做的就是复制一个新的 WAR 替换旧文件。 Tomcat 将发现修改后的文件并重新部署(停止旧的并启动新的)应用程序,而无需重新启动服务器。这称为热部署
    【解决方案2】:

    您说得对,在一个应用服务器/Web 容器(Tomcat 或其他)上托管多个应用程序是有好处的。

    当一个应用程序可能导致另一个应用程序失败时,您提到了健壮性问题。但是让我们简化一下:即使您只有一个应用程序,您仍然需要 24*7 的可用性。为了实现这一目标,人们通常会运行多个应用程序服务器实例,每个实例上都有相同的应用程序,并在站点的入口中运行负载均衡器。这同样适用于几个 Web 应用程序。只需运行 N 个(最少 2 个)应用程序服务器,部署相同的 Web 应用程序集和负载均衡器。如果服务器失败或停止响应等,您可能需要一种重新启动服务器的看门狗。

    在某些情况下,需要某种聚类。但这是另一回事。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-16
      • 2011-08-01
      • 1970-01-01
      • 2020-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-18
      相关资源
      最近更新 更多