我想这是有充分理由的,但我不明白为什么有时我们会在同一台物理服务器上放置例如 5 个具有相同 Web 应用程序的实例。
它与多处理器架构的优化有关吗? JVM 或其他东西的最大允许内存限制?
最佳答案
嗯...过了很长一段时间我又看到这个问题:)
好吧,一台机器上的多个 JVM 实例可以解决很多问题。首先让我们面对这个问题:虽然 JDK 1.7 即将面世,但许多遗留应用程序是使用 JDK 1.3 或 1.4 或 1.5 开发的。而且 JDK 的主要部分仍然在它们之间划分。
现在回答你的问题:
从历史上看,系统架构师通过在单个机器上部署多个 JVM 解决了三个主要问题:
垃圾收集效率低下:
随着堆大小的增长,垃圾收集周期(尤其是主要收集)往往会在处理过程中引入显着延迟,这要归功于单线程 GC。多个 JVM 通过通常允许更小的堆大小并在 GC 周期期间启用某种并发测量来解决这个问题(例如,有四个节点,当一个节点进入 GC 时,您仍然有其他三个节点在积极处理)。资源利用率:
较旧的 JVM 无法有效扩展超过四个 CPU 左右。答案?为盒子中的每 2 个 CPU 运行一个单独的 JVM(当然,里程可能因应用程序而异)。64 位问题
:较旧的 JVM 无法分配超过 32 位最大值的堆大小。同样,多个 JVM 允许您最大限度地利用资源。可用性:
人们有时会在一个机器上运行多个 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
希望对您有所帮助。
关于java - 为什么我们在同一台服务器上使用多个应用程序服务器实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4569159/