admin 管理员组

文章数量: 1184232


2024年3月12日发(作者:xml文件打开后)

第26卷第3期暨南大学学报(自然科学版)  Vol.27No.3

      

2006年6月   JournalofJinanUniversity

(

NaturalScience

)

   Jun.2006

J2EE

系统的

EJB

技术性能测试和优化

朱岸青

1

,

 王会进

2

,

 高河福

3

(1.

广西工学院计算机科学系

,

广西柳州

545005;2.

暨南大学计算机科学系

,

广东广州

510632;

3.

广州联通分公司

,

广东广州

510663)

[

摘 要

]

 对一个

J2EE

架构的应用系统的

EJB

设计模式及性能进行分析

,

建立了测试环境

,

运行

了测试用例

,

总结了优化

EJB

性能的几点方法和策略

,

包括增加会话外观、运用值对象模式、合理

规划

EJB

设计粒度等

.

[

关键词

]

 

J2EE

系统

;

 

EJB

技术

;

 会话外观

;

 值对象

[

中图分类号

]

 

TP393.4

  

[

文献标识码

]

 

A

  

[

文章编号

]

 

1000-9965

(

2005

)

06-0368-06

Researchonperformancetestandoptimizationof

EJBinaJ2EEBasedsystem

ZHUAn2qing, WANGHui2jin, GAOHe2fu

123

(mentofComputerScience,GuangxiUniversityofTechnology,Liuzhou545005,China;

mentofComputerScience,JinanUniversity,Guangzhou510632,China;

houBranch,Guangzhou510663,China

)

[Abstract] ThedesignpatternandefficiencyofEJBinoneJ2EEapplicationsystemis

timization

strategiesofEJBcomponents,includeaddingSessionfacade,usingValueobjectpattern,

programminggranularityofEJBproperly,areshown.

[Keywords] J2EE; EJB; Sessionfacade; Valueobject

  EJB组件是Java类与XML文件封装为一个整体的集合.EJB不局限于一种特定的操作

系统,也不局限于任何一种特别的机构、服务器解决方案、中间件或者通信协议,是一种可重用

的具有高度可移植性的组件.

EJB运行在EJB容器中,容器提供系统级的服务,包括持久化、数据缓存、声明性安全、负

载均衡、错误修复及事务性处理的服务.

加强EJB的灵活性和易用性是要以牺牲某些性能为代价的.比如,Bean实体与容器的通

信是通过代理来实现的,这就不可避免地影响了其性能.但是,与其优点相比,损失一些性能

是值得的.而且,只要合理地设计和使用EJB,仍可以开发出高性能的EJB组件

[1]

.

[

收稿日期

]

 

2005-09-07

[

作者简介

]

 朱岸青

(1976-),

,

讲师

,

硕士

,

研究方向

:

计算机网络

.

通讯联系人

:

王会进

3

期朱岸青

,

:

 

J2EE

系统的

EJB

技术性能测试和优化   

369

本文的J2EE应用系统是某公司的客户服务应用系统.该公司拥有近200万的移动通信

用户,为了更好地为这些用户提供优质服务,公司计划建立客户服务应用系统,以及时有效地

解决用户的问询和投诉,为主动服务于用户提供系统支撑.由于该系统具有数据量大(每月产

生的详单数据就有近2亿条记录

)

、用户数多和需求变化大的特点,所以该系统的性能及灵活

性就显得特别重要.

本文结合该应用系统,并在已有的若干种EJB设计模式中进行了深入的分析和研究,并

建立测试环境,通过测试用例的运行和结果分析,应用了适合该系统的几种EJB设计模式,并

提出优化EJB的性能的几点方法和策略,为该系统的设计与实现提供了依据.由于本系统客

户端大部分属于瘦客户端,而且系统主要的工作是在查询数据返回给客户端,所以影响系统性

能的主要因素是在应用服务器层.在系统中,会话Bean主要用于保存用户的会话信息及用做

实体Bean的会话外观;实体Bean主要用于数据持久化

[2-3]

.

1

 影响业务层性能的因素

考察系统性能,一般包含以下两个指标:

(1)响应时间

[1]

———从初始的请求到回应下载的完成(刷新整个网页)之间的时间.

(

2

)

负载

[1]

———系统使用的尺度.当服务器的应用可以承受繁重的通讯量时被称为可以

承受“高负载”.

在本系统中,业务层主要由一些SessionEJB和EntityEJB组成,扮演着模型的角色.这些

元素部署在WEBLOGIC的EJB容器中,它们是整个系统的核心和关键部分,所以对整个系统

的性能影响至关重要.

1.1 为EntityEJB增加会话外观

在多层J2EE应用程序环境下,一般会产生以下问题:

3业务对象的紧密耦合,这会导致客户端和业务对象的直接依赖关系.

3客户端和服务器之间的网络方法调用太多,容易导致网络性能问题.

3缺乏统一的客户访问策略,容易误用业务对象.

  解决方案:会话外观模式.

通过引入会话外观组件,可以有效解决上述提到的问题,明显提高系统的性能.会话外观

[4]

管理着业务对象,并向客户端提供统一的粗粒度的服务访问.会话外观,如其名字所示,采

取的是一个会话EJB的形式.客户与会话外观通信,会话外观再根据其他EJB如实体bean来

提供业务服务.

  图1显示了一个会话外观如何控制多个

实体bean的访问并且提供一个对客户统一的

接口.一个会话外观既可以从其他会话EJB

访问服务和数据,也可以从数据访问对象

(

Da2

taAccessObjects)来访问.这些类之间的关系

如图1所示.

通常,会话外观能封装一个或者多个业务

使用案例.通过对该会话外观的一次调用可以

 图

1

 会话外观控制对多个实体

bean

的访问

[2-3,7]

370

暨南大学学报

(

自然科学版

)

2006

年 

得到多个业务操作;可以在服务器上迭代处理数据,只把结果传送回客户.这样就减少了网络传

输量,当然也给服务器处理带来了一些负担.

在本系统中,大量采用了会话外观的设计模式,从而在整体上大大提高了系统的性能.

1.2 值对象设计模式

业务组件的一些方法可以向客户端返回数据.通常,客户端需要多次调用业务对象的

GET方法直到获得所有的属性值.对业务服务对象

(

会话bean或实体bean

)

的每个方法调用

一般都是远程的.因此,在EJB应用程序中此类远程调用并不关心客户端与该Bean的直接交

互,而是用网络层服务,这样带来了一定的网络负载.随着远程方法使用的逐渐增加,应用程

序的性能将会下降很多

的效率会很低.

[6]

.因此,使用多个只返回单个属性值的GET方法来从EJB获得数据

  解决方案:值对象模式.

  上述问题可以通过生成一个值对象(ValueObject)

来解决.值对象把业务数据封装在一个普通的Java对

象中,而不是像EJB这样的重型分布式对象.这样,如

果要得到某个值,就发出一个返回值对象的请求,而不

需要为EJB的每个属性各发出一个请求.通过Java串

行化的值对象将被回送给客户,客户就在其本地地址空

间中访问值对象的属性,从而减轻了许多网络上的传输

负担.客户、EJB和值对象之间的交互如图2所示.

 图

2

 客户、

EJB

和值对象之间的交互图

在本系统中,合理规划了很多值对象,从而大大提

高了系统的性能.

1.3 合理规划EJB的粒度

在EJB的Remote接口中使用粗粒度的方法,尽量少使用细粒度方法,即要合理规划EJB

[2,5]

的粒度.

本系统根据业务逻辑的事务和持久化来作为规划组件粒度的参考.在一般情况下,把需

要在相同事务中使用的业务逻辑或者紧密关联的持久化数据结构合并成一个组件,显著地提

高系统的性能.

1.4 有状态会话bean运行结束时及时被显式删除

在本系统中,当EJB客户机不再需要有状态会话bean时,该客户机用remove()方法将它

删除.调用remove方法之后,对有状态会话bean的引用会停用.这样,应用程序减少了对钝

(

passivation

)

的需要、最小化容器开销和提供更高级的性能.消除了容器对许多有状态会话

bean的管理所耗费的资源.

1.5 JNDI优化

JNDIAPI被用于执行名字和目录服务.每种EJB组件

(

会话、实体和消息驱动的

)

都有

home接口,EJB通过home接口来使用其功能.EJB应用程序依靠JNDI查找来访问其home

接口.因为EJB应用程序往往运行多个bean,并且因为许多组件中经常使用JNDI查找,所以

应用程序大部分性能开销都花费在这些查找上.

所以通过缓存高速缓存InitialContext,可以提高应用程序的性能.即在组件初始化期间创

建一次InitialContext,然后保存它,以供日后的查找请求使用.

3

期朱岸青

,

:

 

J2EE

系统的

EJB

技术性能测试和优化   

371

2

 本系统的性能定量分析

在本系统的开发设计初期,为了优化本系统的性能,进行了大量的对比测试,最终才确

认了系统的设计方案.因为篇幅所限,本节只是举出两组典型测试的例子,分析本系统主要

的几种优化策略为系统性能的提升带来的效益,为简化和明了,当对比测试时,除了优化部分

有区别,其他的测试环境保持一致.

2.1 负载测试工具

TheGrinder是测试J2EE应用程序的优秀工具,它是BSD风格的免费软件.TheGrinder

可以作为J2EE应用程序的负载测试工具,该工具可以模拟任意数量的用户使用你的站点,并

且测试过程可以获取重要的分析数据如平均响应时间等.

2.2 测试用例及测试环境

由于本文主要探讨的是J2EE环境中的性能测试和优化问题,在实际环境中,进行了大

量对比测试最终才选择确定了几种技术方案.在本文中,为了简单起见,仅选择几个典型的测

试用例进行对比分析,具体的测试用例列表如表1所示.

1

 测试用例列表

组别名称

SessionFascade

1

WithoutSessionFascade

描述

利用会话外观

TaskHandlerEJB

来访问

EntityEJB

不利用会话外观而是直接访问

EntityEJB

观察值

AART

RPS

用户数

1

:

最小环境

100

:

典型环境

500

:

苛刻环境

2

ValueObject

WithoutValueObject

利用值对象

ProposeInfo

对象的

设计模式

不用值对象的设计模式

  对于上述测试用例,主要观察以下几个指标来判断其性能的优劣:

(

1

)

ART

(

AverageResponseTime

)

,指的是测试脚本中每个请求的平均响应时间,是通过

[1]

计算每个运行脚本的模拟用户的每个单独响应时间的算术平均值实现的,该数据通过测试

工具Grinder获得.

(

2

)

AART,AART指的是组成测试脚本的所有请求的ART平均值.这个指标反映系统的

响应速度,值越小表示响应速度越快,该数据通过测试工具Grinder获得.

(3)RPS(RequestsPerSecond),指的是在1s的时间内处理的请求数.它是一个容量测

度,代表的是一个测试脚本中所有请求的事务率.该数据通过测试工具Grinder获得.

由于本系统的CPU和内存这两个指标的配置相当高,而且又采用了集群的方式,在各种

环境下系统资源都比较有保证,在测试过程中只是通过观察比较,并不是测试重点关心的问

题,所以在此处没有单独列出.

对于上述用例的测试,每5s钟记录一次性能测度,收集150个样本进行统计.考虑到系

统稳定所经历的初始测试周期,排除掉前50个样本,只取后100个样本进行统计分析.

  为了测试用户的数量

,

分别采用了

1

个、

100

个和

500

个的情况进行测试

.

而且选择的是

在无思考时间的状态下进行的.一个用户的情况是最基本的情况,而该客户服务系统大部分时

[1]

[1]

372

暨南大学学报

(

自然科学版

)

2006

年 

间都运行在100个用户同时操作的状态

下,峰值可能达到500个用户同时使用该

系统.

测试的硬件环境配置如图3所示.测

试数据的数量级在10条记录.

2.3 运行测试及结果分析

以下对上述2组的测试用例及其反映

出来的AART和RPS性能优越性进行分析

和比较.

3

 测试的硬件环境配置图

(1)采用会话外观与不采用会话外观的性能比较.

  会话外观是J2EE架构应用程序中的一种十分重要的设计模式,它是通过会话bean封装

Web组件需要执行的存取器逻辑来实现的,主要是要减少远程方法调用的开销和层直接精细

耦合的性能损失

一个具体例子.

[1-2]

9

.图4、图5反映了本系统中是否使用会话外观所带来的不同的性能的

4

 总的

ART

5

 

RPS

  从图4、5中可以看出,使用会话外观的性能明显优于没有使用会话外观.在典型的环境

(

100个用户

)

,使用会话外观的AART仅是没有使用会话外观的17%,而系统吞吐量前者

是后者的267%,系统性能明显提升.

(

2

)

采用值对象与不采用值对象的性能比较.

值对象的主要功能有2个,一是通过减少对实体bean存取器的精细调用而降低潜在的网

络通信量;二是通过较粗地访问bean的字段值给客户端提供实体bean

中是否使用值对象所带来的不同的性能的一个具体例子.

[1]

.图6、图7是本系统

6

 总的

ART

图图

7

 

RPS

  从图6、7中可以看出,使用值对象的性能明显优越于没有使用值对象.在苛刻的环境中

(

500个用户

)

,使用值对象的AART仅是没有使用会话外观的29%,而系统吞吐量前者是后

者的211%,系统性能明显提升.

3

期朱岸青

,

:

 

J2EE

系统的

EJB

技术性能测试和优化   

373

[参考文献]

[1]

 

PETERZadrozny,PHILIPAston,TEDOsborne.J2EE

性能测试

[M].

北京

:

电子工业出版社

,2003.

[2]

 贺平

.

软件测试技术

[M].

北京

:

机械工业出版社

,2004.

[3]

 纽伯格

.

精通

BEAWEBLOGICSERVER

———构建与部署

J2EE

应用的最佳策略

[M].

王崧译

,

北京

:

电子

工业出版社

,2004.

[4]

 李代平

.Oracle9i

数据库系统管理

[M].

北京

:

冶金工业出版社

,2003.

[5]

 

ANGELAYochem,DAVIDCarlson,TADStephens.J2EE

应用与

BEAWEBLOGICSERVER(

2

)[M].

谢俊译

.

北京

:

电子工业出版社

,2005.

[6]

 

DEEPAKAlur,JOHNCrupi,DANMalks.J2EE

核心模式

[M].

北京

:

机械工业出版社

,2002.

[7]

 吴恒山

,

余华兵

.

一种开放式性能测试框架的研究与应用

[J].

计算机应用

,2005,25

(

2

)

:352-354.

[责任编辑:王蔚良]

(上接第355页)

[参考文献]

[1]

 

CHENC,ingmethodsforconvexinequalitiesandlinearcomplementaritypro

2

blems[J].MathematicalProgramming,1995,71:51-69.

[2]

 

ENGELKES,tor-correctorsmoothingmethodsforthesolutionoflinearprograms[R].

Hamburg:DepartmentofMathematics,UniversityofHamburg,March2000.

[3]

 李兴斯

.

一类不可微优化问题的有效解法

[J].

中国科学

A

,1994,24(4):371-377.

[4]

 

CHENB,landsuperlinearcontinution-smoothingmethodsforandNCPormonotoneNCP

[J].SIAMJournalonOptimization,1999,9:624-645.

[5]

 

CHENB,llinearandlocalquadraticnon-interiorcontinuationmethodfornonlinearcomple

2

mentarityproblemsbasedonChen-Mangasariansmoothingfunction[J].SIAMJournalonOptimization,

1999,9:605-623.

[6]

 张培爱

.

求解混合互补问题的一个非内点延拓方法

[J].

暨南大学学报

:

自然科学版

,2005,26

(

3

)

:279

-283.

[7]

 

WILLH,amplesfornonlinearprogrammingcodes[G].LecturesNotesinEconomicsand

k:Springer-Verlag,1981.

[责任编辑:王蔚良]


本文标签: 性能 系统 测试 对象 使用