首 页 | 新 闻 | 技术中心 | 第二书店 | 《程序员》 | 《开发高手》 | 社 区 | 黄 页 | 人 才
移 动专 题SUNIBM微 软微 创精 华Donews人 邮
我的技术中心 
我的分类 我的文档
全部文章 发表文章
专栏管理 使用说明



 RSS 订阅 
最新文档列表
Windows/.NET
.NET  (rss)    
Visual C++  (rss)    
Delphi  (rss)    
Visual Basic  (rss)    
ASP  (rss)    
JavaScript  (rss)    
Java/Linux
Java  (rss)    
Perl  (rss)    
综合
其他开发语言  (rss)    
文件格式  (rss)    
企业开发
游戏开发  (rss)    
网站制作技术  (rss)    
数据库
数据库开发  (rss)    
软件工程
其他  (rss)    

积极原创作者 
Kendiv (114)
btbtd (84)
soft_bird (8)
nizhigang2000 (11)
coofucoo (110)
iyanglian (101)
Aoouch (11)
NinGoo (28)
amh (72)
superyan (27)
CSDN - 文档中心 - Java 阅读:2008   评论: 0    参与评论
标题   [原创] 评测Tomcat5负载平衡与集群     选择自 yipsilon 的 Blog
关键字   [原创] 评测Tomcat5负载平衡与集群
出处  

硬件系统:

       CPUAthlonXP 2500+

       内存:HY 1GB DDR333 SDRAM

       硬盘:Matrox 金钻 40GB 7200rpm 2MB缓存)

       主板:华擎K7VM4

软件系统:

       操作系统:Microsoft Windows XP with Service Pack 2

       负载平衡器:Apache Httpd Server 2.0.52 + mod_jk 2.0.4      
       集群节点:Tomcat 5.5.4 × 4

       测试应用:struts-blank.war中的/Welcome.do

       测试客户端:ApacheBench

测试结果:

次数

每秒处理请求数

次数

每秒处理请求数

平衡负载

集群

并发1请求,执行请求总数为40000

1

263.61

1

72.26

2

263.96

2

84.82

3

263.32

3

85.03

并发200请求,执行请求总数为40000

1

529.55

1

94.89***

2

534.42

2

93.11

3

529.76

3

91.22

并发500请求,执行请求总数为100000*

1

522.44

1

86.33**/***

2

511.26

2

86.87**/***

3

521.48

3

86.51**/***

注解:

 

*:在并发五百连接的测试中,负载平衡器会抛出“指定网络名称不可用”的错误,具体在这里:


      
[Mon Nov 17 01:43:39 2003] [warn] (OS 64)The specified network name is no longer available. : winnt_accept: Asynchronous AcceptEx failed.


出现这样的问题,我的解决方法是:禁止使用
AcceptEx,方法为在httpd.conf文件中增加Win32DisableAcceptEx标记,例如:


      
<IfModule mpm_winnt.c>

      

             Win32DisableAcceptEx

     

       </IfModule>


      
虽然这样会使负载平衡器的性能降低一些,但是总之还是通过了严格的并发五百连接的测试。

 

**:数据是在提供集群服务的本机上进行测试得到的。

 

***:测试前重启集群节点和负载平衡器。

结论

1. 平衡负载

 

       本测试使用mod_jk默认的以轮循方式进行平衡负载,以这次测试举例:假设有10个请求,则四个节点分别接受请求编号如下:

      

Node 1

Node 2

Node 3

Node 4

1

2

3

4

5

6

7

8

9

10

 

 

      

       以下的集群方式也是使用这种方法进行平衡。

 

       由测试结果可以看出,负载平衡是为拥有高并发量的网站准备的。同样是40000个请求,使用并发二百个连接比单连接执行效率高出近两倍。而并发五百个请求的重型测试性能并不比并发连接数少的测试低多少。

 

       因此,平衡负载对于流量大且对高可用性(主要是会话服务)需求不是很苛刻的网站来说还是一个比较实用的方案。

 

2. 集群

 

       Tomcat中的集群原理是通过组播的方式进行节点的查找并使用TCP连接进行会话的复制。

 

       这里提示一下就是,对每个请求的处理,Tomcat都会进行会话复制,复制后的会话将会慢慢变得庞大,例如该项并发五百连接的集群测试,测试后复制的会话大小达到了70MB,而使用的总内存更是达到了1GB以上,因此如果进行下一项测试,就必须对系统进行重新启动来初始化内存以得到正确的数据,这就是测试数据内有“***”符号的原因。

 

       相对于单纯的负载平衡,由于集群服务需要在处理请求之间不断地进行会话复制,因此它的资源占用率是非常高的,这也降低了连接请求的处理速度,但增加了系统的高可用性。

 

       因此,对于硬件性能高(尤其是内存要大)且对用户高可用性需求苛刻(不需重复保存会话中的数据,例如用户连接任何一台节点服务器不需要重新输入密码)的站点,选择集群方式可以满足需求。


相关文章
对该文的评论