论坛首页 Java版 企业应用

ejb 应用程序的效率和扩展的测试。

浏览 4657 次
该帖已经被评为精华帖
作者 正文
时间:2003-10-13
http://www.cs.rice.edu/CS/Systems/DynaServer/perf_scalability_ejb.pdf

是一个关于ejb 应用程序的效率和扩展的测试的说明。

硬件
PIII 933MHz
CPU with 1GB SDRAM, and two Quantum Atlas 9GB 10,000rpm Ultra160 SCSI disk drives. A number of PII 450MHz machines run the client emulation software. We use enough client emulation machines to make sure that the clients do not become a bottleneck in any of our experiments. All machines are connected through a switched 100Mbps Ethernet LAN.


app server用1
1jboss2.4(还有3.0)Dynamic proxy based container
2jonas2.5 Pre-compiled approach

测试用的example是一个拍卖网站。
用了6不同种设计风格的实现。代码的规模如下
0 纯servlet实现( 数据库操作在servlet中完成)。 25个class和4590行代码
1 servlet+session bean(session bean封装数据库操作,只用到app的pooling和事物服务)。76个class和8000行代码
2DAO separation with Entity Beans CMP 。63个class和10760行代码
3DAO separation with Entity Beans BMP。 25个class和4590行代码
4EJB 2.0 local interfaces。 113个class和13795行代码
5Session facade。 107个class和13440行代码


测试结果:
0的速度最快,1的速度和0接近。。可以在1200个用户连接下每分钟执行一万次的响应,纯servlet实现可以达到12000次。
(interactions per minute )


一旦用到bmp或cmp,速度就慢了。最好的EJB 2.0 local方式只能在460个用户连接下每分钟执行不到4500次的响应
而bmp只能在220个用户连接下每分钟执行不到2000次的响应,用户再多,interactions per minute也高不了(还会下降)。



呵呵,没什么好说的了,使用entity bean,代码量大,速度也够慢,好郁闷。。
2002年测试的东西,不知道现在怎么样了。。

微软叫嚣.net的pet sore有ejb实现的10倍速度。。。是有可能的。。。
要追求速度,除了servlet,就只用无状态session bean,
这和com+组件的设计原则(使用无状态对象和存储过程)是一样的。
java的stateless session beans的效率比com+的无状态对象的效率要高一些。
大部分java app server是 1个stateless session beans服务所有的client。
com+是1个无状态对象服务一个client。
   
时间:2003-10-14
多谢提供一个好的link。

这个测试结果和我的推测是一致的。另外我测试过.net的com+,速度确实比较慢,比SLSB要慢。
   
0 请登录后投票
时间:2003-10-14
http://www.cmis.csiro.au/mte/reports/MTEreports.zip
还有好多的文章。
   
0 请登录后投票
时间:2006-03-02
这种测试报告,如果不结合实际的代码,拿出来的数据想说明什么道理呢??感觉有些片面,开源的总是想一棒子把收费的打死.
   
0 请登录后投票
时间:2006-03-02
zzsczz 写道
com+是1个无状态对象服务一个client。

强烈质疑,如果只是服务一个client那还无状态干吗?
   
0 请登录后投票
论坛首页 Java版 企业应用

跳转论坛: