sitemesh效能測試結果比較驚豔
阿新 • • 發佈:2019-01-22
最近想在一個專案中使用sitemesh作為view層的裝飾器,於是今天就做了一下sitemesh的效能測試。
由於只是測試view層的效能,所以系統框架只有了spring mvc3(3.0.3)+freemarker(2.3.16)+sitemesh(2.4.2)
servlet容器:jetty-6.1.21
jdk:1.6.0_17-b04
壓力測試工具:loadRunner 8.1
應用伺服器配置:8cup Intel(R) Xeon(R) CPU E5410 @ 2.33GHz; 記憶體:4G
sitemesh相關配置:
裝飾器頁面main.jsp:
30使用者併發訪問上面頁面,jetty啟動時沒有使用任何jvm優化引數
不使用sitemesh時的測試結果
由於只是測試view層的效能,所以系統框架只有了spring mvc3(3.0.3)+freemarker(2.3.16)+sitemesh(2.4.2)
servlet容器:jetty-6.1.21
jdk:1.6.0_17-b04
壓力測試工具:loadRunner 8.1
應用伺服器配置:8cup Intel(R) Xeon(R) CPU E5410 @ 2.33GHz; 記憶體:4G
測試程式碼:
Java程式碼
@Controller public class TestController { @RequestMapping(value="/hello", method=RequestMethod.GET) public void sayHello(Model model){ model.addAttribute("timestamp",new Long(System.currentTimeMillis())); } }
freemaker程式碼
<html> <head> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" /> <meta http-equiv="Cache-Control" content="no-store"/> <meta http-equiv="Pragma" content="no-cache"/> <meta http-equiv="Expires" content="0"/> </head> <title>freemarker title</title> <body> <#list 1..100 as r> <#list 1..1000 as xx> <h5>${timestamp%xx}</h5> </#list> </#list> </body> </html>
sitemesh相關配置:
web.xml: <filter> <filter-name>sitemesh</filter-name> <filter-class>com.opensymphony.sitemesh.webapp.SiteMeshFilter</filter-class> </filter> <filter-mapping> <filter-name>sitemesh</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> decorators.xml <decorators defaultdir="/decorators"> <!-- Any urls that are excluded will never be decorated by Sitemesh --> <excludes> <pattern>/exclude.jsp</pattern> <pattern>/exclude/*</pattern> </excludes> <decorator name="main" page="main.jsp"> <pattern>/*</pattern> </decorator> </decorators>
裝飾器頁面main.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://www.opensymphony.com/sitemesh/decorator" prefix="decorator" %>
<%@ taglib uri="http://www.opensymphony.com/sitemesh/page" prefix="page" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title><decorator:title default="Mysterious page..." /></title>
<decorator:head />
</head>
<body>
<h1>header</h1>
<decorator:body />
<h1>footer</h1>
</body>
</html>
30使用者併發訪問上面頁面,jetty啟動時沒有使用任何jvm優化引數
不使用sitemesh時的測試結果
Visualvm的監控截圖
使用sitemesh時的測試結果
Visualvm的監控截圖
從上面這些測試結果來看sitemesh對頁面平均響應時間的影響還是比較小的,這個影響我覺得基本可以接受。
但是從Visualvm的監控結果讓我非常的驚訝,使用sitemesh以後使得jvm的記憶體使用劇增,是未使用之前的10倍之多,與此同時cpu的使用率也是原來的3-4倍,由於記憶體使用量的劇增導致jvm的GC也頻繁了許多。
新做的一輪測試,供大家參考
參考 rapid-framework的繼承實現方式得到的測試結果
參考老外搞的freemarker
layouthttp://richardbarabe.wordpress.com/2009/03/19/freemarker-a-brief-example/ 實現方式得到的測試結果
從上面這一輪測試可以看出來這兩種方案的實現效果在頁面響應時間上差不多,基本沒有區別。記憶體波動也大致相同,唯一差別較大的是,使用rapid測試的場景cpu的使用率波動較頻繁,而使用巨集實現的裝飾器cpu波動較少,CPU使用率相對較低。
此外使用rapid的場景中執行緒數的波動圖較其他幾個場景的波動要明顯,不過在測試的時候我沒有注意到這個情況,所以目前還不知道執行緒數量增多的原因。我懷疑是在這個場景下由於請求處理的稍微慢一些,導致VVM統計的活動執行緒數要高於其他場景。
希望以上這些測試結果對大家有參考意義。
原網址:http://seanhe.iteye.com/blog/715100