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

标签 java tomcat jakarta-ee jboss glassfish

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

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

最佳答案

嗯...过了很长一段时间我又看到这个问题:)

好吧,一台机器上的多个 JVM 实例可以解决很多问题。首先让我们面对这个问题:虽然 JDK 1.7 即将面世,但许多遗留应用程序是使用 JDK 1.3 或 1.4 或 1.5 开发的。而且 JDK 的主要部分仍然在它们之间划分。

现在回答你的问题:

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

  1. 垃圾收集效率低下:随着堆大小的增长,垃圾收集周期(尤其是主要收集)往往会在处理过程中引入显着延迟,这要归功于单线程 GC。多个 JVM 通过通常允许更小的堆大小并在 GC 周期期间启用某种并发测量来解决这个问题(例如,有四个节点,当一个节点进入 GC 时,您仍然有其他三个节点在积极处理)。

  2. 资源利用率:较旧的 JVM 无法有效扩展超过四个 CPU 左右。答案?为盒子中的每 2 个 CPU 运行一个单独的 JVM(当然,里程可能因应用程序而异)。

  3. 64 位问题:较旧的 JVM 无法分配超过 32 位最大值的堆大小。同样,多个 JVM 允许您最大限度地利用资源。

  4. 可用性:人们有时会在一个机器上运行多个 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/

相关文章:

java - 创建一个后端 java RESTful API,该 API 将与存储在云上的数据库进行通信

java - 如何从 Rest 调用返回 List<String>

java - 调用init方法失败;嵌套异常是 org.hibernate.AnnotationException : mappedBy reference an unknown target entity property:

java - 如何知道使用了哪个框架?

java - 如何在独立(非托管)应用程序中使用 jndi?

java - 一个ear文件中有多个相同的jar文件

java - 字符串的第一个和最后一个字符

java - Andengine BlackBoxes Sprite 未正确加载

tomcat - 将 Alfresco All-in-one 多模块部署到另一个安装

java - Tomcat限制http session ,内存不足