在VM上部署更多Tomcat实例是否有意义?

时间:2011-06-02 17:56:36

标签: java tomcat jvm tomcat6 vmware

类似的问题,“在同一台服务器上有多个tomcat实例是否有意义?”但在这种情况下,Tomcats正在VM上运行。

我知道答案可能是“它取决于”,但我想探讨这个问题。什么时候有意义? VM特定注意事项是什么?

我听到的原因: 1)JVM在某种程度上限制了它们使用可用资源的能力。因此,分配多个tomcat实例将更好地利用资源。不确定这是一个很好的理由。这是曾经真实的事情之一,但不再是真的吗? 2)如果一个tomcat实例失败,另一个实例可以接管。

缺点: 当你有多个版本和更高的复杂性时,会有更多的开销。

如果我们需要负载平衡,将第二个tomcat放在另一个VM中会“更好”吗?

1 个答案:

答案 0 :(得分:2)

如果您有选项,则首选其他VM。您仍然可以获得多个JVM所提到的所有资源利用率优势。您还可以获得没有单点故障的冗余;您的虚拟机崩溃不会导致群集中的每个节点崩溃。

如果您必须使用一个VM,那么在使用一个tomcat实例与多个实例时要考虑的事项是:

  1. 应用程序是否需要不同的重启/备份/要求?当其他应用程序继续运行时,您不希望被卡在一个实例上并且必须为一个应用程序重新启动它。
  2. 在tomcat中运行的应用程序是否需要直接与对方交谈(访问对象实例,配置设置等)?远程通信始终是一种可能性(首选),但我已经看到了旨在与同一个tomcat实例上的其他WAR进行通信的WAR。
  3. 可能的情况是,您将受到上述任何一种约束,您可以做任何您认为最适合您的事情。我的偏好将按以下顺序排列:

    1. 单独的虚拟机
    2. 相同的VM,同样的tomcat
    3. 相同的VM,不同的tomcats
    4. 2& 3,因为我不想管理超过必要的东西。一个tomcat比2个或更多更容易。但最好的分离是在服务器级别。