实验
为了理解瓶颈的状况,我们在基于Windows/Intel平台用流行的J2EE应用服务器来测试一下JAVA PETSTORE应用。一些测试用例如PetStore应用的浏览和购买周期来测试扩展性。我们确信整个测试环境(包括操作系统、JVM、应用服务器和应用自身)已经尽可能优化了,而且J2EE应用没有任何瓶颈或同步问题。我们使用了多用户负载测试并观察了响应时间、吞吐量、资源利用率等指标。
环境如下:
1、 J2EE PetStore应用
2、 J2EE应用服务器
3、 Sun JVM 1.3
4、 Windows 2000高级服务器
5、 Intel Dell PowerEdge 8450 (8Intel至强800MHz处理器, 4GB RAM)
6、 100Mbps Cisco dedicated network
7、 负载测试工具WebLoad

在这个测试中我们看到即使有足够的硬件资源,应用服务器的实例个数限制了扩展的能力。在这里软件资源(如执行线程、BEAN池大小、数据库池和其他应用服务器参数)优化后即使这些资源不足也不会影响系统的扩展。下面我们来研究一下减轻这种问题的方案。
注:Sun J2EE PetStore可以被更多地优化来改善性能和可扩展性。
解决方案
同一机器上的群集
当吞吐量满载了应用服务器的一个实例时,需要增加一个实例来减轻这种问题。这个方案如图5。

Figure 5. Instance clusters on the same hardware box
