2010-03-30 85 views
3

如果我有一个高端服务器,例如1T内存和8x4core CPU ...一台带有一台应用服务器或多台应用服务器的高端服务器?

如果我运行多个App Server(在不同的JVM上)而不是仅仅一个App Server,它会带来更多的性能吗?

在应用程序服务器上,我将运行一些相互交换消息的服务(EAR与消息驱动的bean)。

顺便说一句,有Java 64位现在没有内存限制吗? http://java.sun.com/products/hotspot/whitepaper.html#64

+0

你是指单台机器上有多个JVM? – Thilo 2010-03-30 08:08:12

+0

是的,由于某些设置原因(安装机器的物理空间有限),我想尝试在一台* super *机器上运行多个JVM。 – elgcom 2010-03-30 18:52:27

回答

3

如果我运行多个App Server(在不同的JVM上)而不是仅仅一个App Server,它会带来更多的性能吗?

有几件事情要考虑:

  • 单一应用服务器意味着失败的单点。对于许多应用程序而言,这不是一种选择,使用水平和垂直缩放是常见配置(即每台机器和多台机器有多个VM)。如果他们很小,增加更多的机器显然更容易/更便宜。

  • 大堆需要更长时间才能填充,因此应用程序在发生垃圾回收之前运行时间更长。然而,更大的堆也需要更长的时间来压缩并导致垃圾回收花费更长时间。施胶VM通常意味着找到频率和持续时间之间的良好折衷(换句话说,你不要总想给尽可能多的RAM尽可能一个VM)

所以,我的经验,在运行多个托管多个JVM的机器是通常的选择(并且通常比一个巨大的野兽便宜并且给你更多的灵活性)。

1

当您需要进行进程外通信时,会自动产生性能问题,所以问题在于应用程序服务器的扩展能力是否不够好,这样可以得到回报。

作为一个基本的经验规则,JVM设计允许使用任意数量的CPU和操作系统提供的任意数量的RAM。实际限制是特定于JVM实现的,在选择是否存在与您相关的限制之前,您需要非常仔细地阅读规范。

鉴于您有一个可以利用硬件的JVM,您需要一个可以适当调整的应用程序服务器。目前常见的瓶颈是每秒可处理的Web请求数量 - 现代服务器应该能够每秒处理10000个请求(请参阅http://www.kegel.com/c10k.html),但并非所有情况都是如此。

因此,首先确定您最迫切的需求(每秒连接数?内存使用率?网络带宽?)并使用它来确定最佳平台+ jvm +应用程序服务器组合。如果您有具体需求,供应商通常会很乐意协助您进行销售。

1

最有可能的是,您将通过运行多个JVM与更小的堆而不是一个单独的大型JVM。有这个有两个原因:

  1. 小堆意味着较短垃圾收集

  2. 更多JVM意味着用于内部JVM内部资源,如线程池和其他同步访问较少的竞争

您应该装入该盒子的JVM数量取决于应用程序的功能。确定这一点的最好方法是设置一个负载测试,它模拟生产负载并观察系统可处理的请求数量随着添加的JVM数量的增长而增长。在某些时候,您会看到添加更多JVM不会提高吞吐量。那就是你应该停下来的地方。

然而,还有另一个考虑因素。最好有多个物理机器,而不是一个大胖盒子。这是可靠性。如果这个盒子出于某种原因脱机,它将使用它内部运行的所有应用程序服务器。与单个机箱相比,运行许多独立小型物理机器的基础设施受单个机器故障影响较小。

+0

@Slava @是这个猜想,还是你可以指出一些研究(带有真实性能数据)支持这一点? – 2010-03-30 11:29:34

+1

这是经验加普通智慧。另外,当我为BEA工作时,我们曾经为WebLogic推荐相同的配置。如果你愿意,我相信你可以在网上查询它。 – 2010-03-30 18:11:39

相关问题