一尘不染

为什么我们在同一服务器上使用多个应用程序服务器实例

tomcat

我想这是有充分的理由的,但是我不明白为什么有时我们例如将5个具有相同Web应用程序的实例放在同一台物理服务器上。

与多处理器体系结构的优化有关吗?JVM或其他东西的最大允许内存限制?


阅读 663

收藏
2020-06-16

共1个答案

一尘不染

嗯…很久以后,我再次看到这个问题:)

一台机器上的多个JVM实例解决了很多问题。首先让我们面对这个问题:尽管JDK 1.7即将面世,但许多旧版应用程序都是使用JDK
1.3或1.4或1.5开发的。而且,JDK的主要部分仍在其中。

现在您的问题:

从历史上看,系统架构师通过在一个盒子上部署多个JVM解决了三个主要问题:

  1. Garbage collection inefficiencies:随着堆大小的增长,由于单线程GC,垃圾回收周期(尤其是对于主要垃圾回收)会在处理过程中引入大量延迟。多个JVM通过通常允许较小的堆大小并在GC周期内启用某种程度的并发性来解决此问题(例如,对于四个节点,当一个节点进入GC时,您仍有三个其他节点在积极处理)。

  2. Resource utilization:较早的JVM无法有效地扩展到超过四个CPU左右。答案?在包装盒中,每2个CPU运行一个单独的JVM(里程可能会因应用程序而异)。

  3. 64-bit issues:较早的JVM无法分配超出32位最大值的堆大小。同样,多个JVM使您可以最大程度地利用资源。

  4. Availability:人们有时在单个机器上运行多个JVM的最后一个原因是可用性。的确,这种做法并不能解决硬件故障,但是确实可以解决应用程序服务器单个实例中的故障。

摘自(http://www.theserverside.com/discussions/thread.tss?thread_id=20044

我主要看过weblogic。这是进一步阅读的链接:

http://download.oracle.com/docs/cd/E13222_01/wls/docs92/perform/WLSTuning.html#wp1104298

希望这会帮助你。

2020-06-16