sitemesh性能测试

Sitemesh对于性能的影响实验报告
时间:2009-07-15 11:11    来源:未知    做者:YODA
核心提示:1. 目的 Sitemesh 是一个很好的页面渲染框架,基本上我如今所在项目都是适用sitemesh作页面框架和整合渲染的,给页面部分的工做带来了很大的便利性。 在sitemesh的文档中,对于sitemesh的工做原理给出了一个图示,根据这个图能够看出,sitemesh是经过组合适

1. 目的

Sitemesh 是一个很好的页面渲染框架,基本上我如今所在项目都是适用sitemesh作页面框架和整合渲染的,给页面部分的工做带来了很大的便利性。java

在sitemesh的文档中,对于sitemesh的工做原理给出了一个图示,根据这个图能够看出,sitemesh是经过组合适用filter和 标签将被渲染页面的内容抽取出来,再整合到一个统一的框架页面中去。曾经有一段时间测试环境的Websphere服务器频繁出现内存溢出的问题,在跟踪内 存溢出问题时,发现sitemesh组件使用StringBuffer对象进行大量内存申请的动做。这就须要检测sitemesh具体是如何来分析页面 的,个人猜想就是将被渲染的页面中的最终HTML代码展出到一个大的字符串,而后根据关键标签来进行分析和内容抽取,而后再整合到框架页面中。先无论 sitemesh是用什么方式来分析、抽取和整合的,他对于内存的影响是比较明显的,因此,本实验的目的就是比较使用sitemesh和不使用 sitemesh时,运行期性能是否存在差别。web

 

2. 环境

本实验使用到的环境以下:服务器

· OS: Windows XP Professional SP2app

· HW: Intel Core 2 Duo T7300 2.0GHz, 2GB RAM框架

· Web Server: Resin 3.2.1jsp

· Sitemesh: 2.3ide

· Test Tool: Load Runner 8.0工具

· JDK: Java HotSpot(TM) Client VM 1.5.0_09-b03性能

· Analysis Tool: IBM Pattern Modeling and Analysis Tool for Java Garbage Collector 2.5测试

 

 

3. 过程

1. 使用ant example建立sitemesh自带的example web应用

2. 在sitemesh example应用中加入一个JSP页面data.jsp,该页面中包含一个43行7列的静态表格,表格部分的HTML源码约17KB

3. 一样制做上述数据的非sitemesh处理页面data_nosm.jsp,在sitemesh的配置文件decorators.xml中将data_nosm.jsp添加到排除列表

4. 以展开包的方式部署sitemesh example应用到resin服务器

5. 设置resin的JVM参数为:-Xms64m -Xmx256m -XX:MaxPermSize=256m -Xss1m -verbose:gc -Xloggc:C:/apps/resin-3.2.1/gc.log -XX:+PrintGCDetails

6. 在Load Runner中制做2个压力测试脚本,一个用来请求data.jsp,一个用来请求data_nosm.jsp

7. 在Load Runner中设计压力测试场景:10个用户,持续请求5分钟,每一个用户的每轮请求中包含10次对于页面的请求

8. 从新启动resin服务器,进行data.jsp的压力测试。测试完成以后,收集Load Runner的数据以及GC的数据

9. 从新启动resin服务器,进行data_nosm.jsp的压力测试。测试完成以后,收集Load Runner的数据以及GC的数据

10. 数据汇总及处理

 

 

4. 结果

根据测试的结果,整理GC部分和压力测试部分的数据以下:

 

 

使用sitemesh

未使用sitemesh

GC次数

6,746

74

Full GC次数

1

1

GC消耗

0.02

0.00

GC暂停(秒)

7.00

0.00

最大持久代(字节)

8,388,608.00

8,388,608.00

平均持久代(字节)

6,036,328.00

6,205,085.00

最大旧生代(字节)

61,983,744.00

59,024,384.00

平均旧生代(字节)

42,583,685.00

31,929,903.00

最大新生代(字节)

61,983,744.00

59,024,384.00

平均新生代(字节)

4,426,710.00

4,610,566.00

请求次数

137,344.00

198,188.00

平均每秒请求

454.78

658.43

页面平均响应时间(秒)

0.042

0.029

上表的数据制做成图表以下(为了便于图表显示,部分数据进行了放大):

 

未命名

在上表中,GC消耗和GC暂停考量指标中,未使用sitemesh的状况下显示为0,是由于所用的分析工具IBM Pattern Modeling and Analysis Tool for Java Garbage Collector 2.5的显示精度不足致使,实际的并不是是真正的0,而应该是一个很小的数值。

从数据上看,使用sitemesh和不使用sitemesh对于虚拟机堆内存的使用差别不太大,可是在GC次数上的差别很大。从GC日志的详细信息 能够看出,在使用sitemesh时,发生次要GC(Minor GC)的频率很是的高,能够推断在运行时期产生了大量的短生命周期的对象,而后又迅速的被释放,GC在新生代就已经完成了。主要GC(Major GC, Full GC)在使用sitemesh和不使用的状况下,均发生了1次,并且这1次主要GC也是在resin启动中发生的,不是应用在进行压力测试时发生的。因为 使用sitemesh时的GC次数远远大于不使用sitemesh,因此在整个测试过程当中,GC上消耗的时间也是差别很是大的。

从压力测试的探测能够看出,不使用sitemesh时完成的请求数是使用sitemesh时的144.3%。同时页面响应时间也仅为使用sitemesh时的69.0%。

 

 

5. 结论

从上述测试数据来分析,使用sitemesh对于系统性能是有较大的影响的,主要表如今GC的次数会显著增多。建议在大压力、页面内容大的系统中,慎重选择sitemesh,而且使用以前对其带来的性能影响进行一个较为合理、全面的评估。

相关文章
相关标签/搜索