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,而且使用以前對其帶來的性能影響進行一個較爲合理、全面的評估。

相關文章
相關標籤/搜索