劉敏娜+解爭龍
收稿日期:2014-02-24
基金項目:陜西省科學技術研究發(fā)展計劃項目,自然基金(面上項目)(2013JM8037)
作者簡介:劉敏娜(1981—),女,陜西咸陽人,講師,碩士,研究方向:高性能網(wǎng)站搭建。
通訊聯(lián)系人,E-mail:mminnaliu@163.com
文章編號:1003-6199(2014)03-0139-06
摘 要:為解決服務器性能隨著訪問量增加不斷降低的問題,本文提出基于SSI框架的高性能網(wǎng)站服務器優(yōu)化策略。優(yōu)化策略包括JSP頁面靜態(tài)化,多線程并發(fā),線程池、定時器技術。經(jīng)過測試,該優(yōu)化策略能有效的降低網(wǎng)站的響應時間,提高網(wǎng)站吞吐量。
關鍵詞:SSI;優(yōu)化策略;JSP頁面靜態(tài)化;多線程并發(fā)
中圖分類號:TP311.1 文獻標識碼:A
High-perfomance web Server Optimization Strategy Based on SSI Framework
LIU Min-na,XIE Zheng-long
(Institute of Graphics and Image Processing, Xianyang Normal University, Xianyang,Shanxi 712000,China)
Abstract:To solve the problem of decrease of server performance with the increase of traffic, this paper puts forward the high-performance web server optimization strategy based on SSI framework.Optimization strategy including the JSP page is static, multi-threaded concurrent, the thread pool technology, a timer.After testing, the optimization strategy can effectively reduce the response time of the site, improve site throughput.
Key words:SSI; optimization strategy;the JSP page static; Multi-threaded concurrent
1 引 言
隨著互聯(lián)網(wǎng)絡的普及,網(wǎng)上的用戶群體數(shù)量不斷增加,網(wǎng)站的訪問流量也呈指數(shù)式增加,例如facebook擁有8.9億的用戶,每天要處理9200億的用戶web請求。很多網(wǎng)絡服務商因為網(wǎng)站沒有經(jīng)過優(yōu)化,一旦訪問量大就顯得不堪重負,體現(xiàn)在服務器不能及時處理用戶的請求,用戶需要長時間等待。因此搭建高性能的網(wǎng)站來滿足不斷增長的訪問量已成為迫在眉睫的問題。高性能的網(wǎng)站主要體現(xiàn)在響應時間較短、并發(fā)數(shù)較大、吞吐容量較大等方面。目前,已經(jīng)有一些資料針對web前端進行優(yōu)化,而針對服務器端程序優(yōu)化的研究很少,本文主要研究通過JSP靜態(tài)化、多線程并發(fā)優(yōu)化從而將網(wǎng)站性能進行提升。
2 網(wǎng)站優(yōu)化目前的研究情況
《互聯(lián)網(wǎng)周刊》中提出通過“集群”軟件來實現(xiàn)多個服務器之間的高速切換,確保服務器系統(tǒng)的高響應[1]。韓濤在《高性能電子商務網(wǎng)站前端設計理念研究》中指出“在網(wǎng)站前端通過合理設置緩存和網(wǎng)站文件的壓縮”來達到提高網(wǎng)站性能的目的[2]。也有文獻提出通過“減少DNS查找”,“優(yōu)化CSS”,“圖片壓縮”等方式來提高網(wǎng)站性能[3] [4]。這些策略在一定程度上可以緩解服務器的壓力,但是存在著一定的問題。如“集群”方式,是通過引入多個服務器協(xié)同工作,引入多個服務器勢必造成搭建網(wǎng)站的費用增加,對于大型的網(wǎng)站,如網(wǎng)易,淘寶可以實現(xiàn),但是對于中小型網(wǎng)站,由于投入的經(jīng)費有限,此種模式可行性不高;通過“web前端”合理設置這種方式,可行性較好,但主要針對的是客戶的瀏覽器的緩存和圖片壓縮等方面進行優(yōu)化,沒有考慮服務器方程序的優(yōu)化,優(yōu)化的程度受到一定的限制。通過查閱資料,發(fā)現(xiàn)在國內(nèi)服務器端優(yōu)化的研究資料非常少,因此,文中提出了基于服務器端的優(yōu)化策略,策略中包括JSP靜態(tài)化,多線程并發(fā)等技術,并將這些優(yōu)化策略引入到咸陽師范學院圖書館網(wǎng)站中。
3 JSP靜態(tài)化
3.1 未靜態(tài)化的JSP執(zhí)行情況
服務器接收到客戶方瀏覽器發(fā)出的訪問JSP頁面的請求之后,服務器先將JSP文件編譯為成為Servlet文件,然后對這個Servlet編譯、執(zhí)行,查詢數(shù)據(jù)庫之后,將動態(tài)拼湊的代碼返回至客戶端。如下圖1所示。
從客戶端發(fā)出瀏覽請求到請求的頁面顯示出來所等待的時間受以下三個因素影響:
1)服務器編譯JSP文件并執(zhí)行所需要的時間。
2)讀寫數(shù)據(jù)庫所需要的時間。
3)客戶方網(wǎng)絡的帶寬,帶寬會影響服務器接收請求以及將處理結(jié)果反饋的時間。
第一個因素通過JSP靜態(tài)化策略可以改善訪問效率,第二個因素借助緩存技術能減小訪問時間。
3.2 JSP靜態(tài)化
多個客戶同時訪問同一個服務器中的JSP頁面,服務器需要對每個請求的JSP文件單獨進行編譯,執(zhí)行,響應時間會比較長。但是如果將客戶請求的JSP頁面靜態(tài)化,也就是轉(zhuǎn)換成html文件,這樣不需要經(jīng)過服務器的編譯,可以直接加載到客戶瀏覽器上顯示,可以有效降低服務器負荷。轉(zhuǎn)換成靜態(tài)頁面適合蜘蛛抓取信息,另外對搜索引擎的SEO優(yōu)化起到很好的效果。JSP靜態(tài)化的執(zhí)行過程如下圖2所示。
JSP靜態(tài)化包括以下三個步驟:
1)定義一個繼承"JspWriter"的類,覆蓋JspWriter的輸出函數(shù),數(shù)據(jù)輸出到指定的文件中。
2)定義數(shù)據(jù)庫查詢并獲取數(shù)據(jù)。
3)讀取網(wǎng)頁模板,添加數(shù)據(jù)后生成新的靜態(tài)網(wǎng)頁。
網(wǎng)頁模板可以通過FreeMarker來定義。FreeMarker是基于模板生成文本輸出的通用工具, 使用純 Java編寫。使用FreeMarker可以生成 HTML頁面,由FreeMarker生成頁面,通過模板顯示準備的數(shù)據(jù)[5]。FreeMarker的工作原理如下圖3所示。
4 基于SSI框架的高性能網(wǎng)站的搭建
應用JSP靜態(tài)化,數(shù)據(jù)緩存等高性能網(wǎng)站策略搭建了咸陽師范學院圖書館網(wǎng)站。該網(wǎng)站采用SSI框架技術,使用My sql數(shù)據(jù)庫管理軟件,應用FreeMarker模版引擎。
SSI 是struts,spring和ibatis的一個集成框架[6],該框架是目前較流行的一種Web應用程序開源框架。系統(tǒng)的基本業(yè)務流程是:view層通過JSP頁面實現(xiàn)交互,接收請求和傳送響應,Struts根據(jù)配置文件struts-config.xml將ActionServlet接收到的Request分派給相應的Action處理;business層管理服務組件,Spring IoC容器向Action提供業(yè)務模型組件和該組件的協(xié)作對象數(shù)據(jù)處理組件完成業(yè)務邏輯,并提供事務處理、緩沖池等容器組件[7] [8] [9]。
4.1 網(wǎng)站系統(tǒng)分析
圖書館網(wǎng)站分為用戶管理,角色管理,日志管理,任務管理,通用頁面管理,列表頁面管理6個模塊[10]。網(wǎng)站的系統(tǒng)結(jié)構(gòu)圖如圖4所示。
4.2 圖書館網(wǎng)站提高性能的策略分析
圖5說明了本文提出的高性能網(wǎng)站的六大策略的關系,定時器在這些策略中起核心作用,它控制生成靜態(tài)網(wǎng)頁的時間和將緩存的數(shù)據(jù)寫入數(shù)據(jù)庫的時間[11][12]。并發(fā)技術和多線程技術的引入是為了更高效的將數(shù)據(jù)寫入緩存。線程池是高效管理數(shù)據(jù)庫的連接的一種方式。
1)JSP靜態(tài)化技術
網(wǎng)站使用FreeMarker作為模板引擎,利用FreeMarker的Configuration類的getTemplate方法生成模板對象,利用模板對象的process方法將數(shù)據(jù)根據(jù)模板寫回指定路徑靜態(tài)文件中,這里的模板是事先定義的以ftl作為擴展名的網(wǎng)頁模板。
靜態(tài)化核心算法如下:
public static void crateHTML(Object, String, String) {
Configuration freemarkerCfg = new Configuration()
freemarkerCfg.setEncoding(Locale.getDefault(), "UTF-8")
Writer out ,Writer outStream
OutputStream fileOut
Template template=freemarkerCfg.getTemplate(templatePath, "UTF-8") template.setEncoding("UTF-8")
String htmlPath = ConfigRuntime.getBaseTargetPath() + targetHtmlPath
File htmlFile = new File(htmlPath)
fileOut = new FileOutputStream(htmlFile)
outStream=new OutputStreamWriter(fileOut,"UTF-8")
out = new BufferedWriter(outStream)
template.process(data, out) }
FileUtils.close(fileOut)
FileUtils.close(outStream)
FileUtils.close(out) } }
2)緩存、多線程、并發(fā)技術
使用緩存技術可以將那些頻繁訪問的數(shù)據(jù),以及那些需要大量處理時間來創(chuàng)建的數(shù)據(jù)存儲在內(nèi)存中,從而提高系統(tǒng)性能。
緩存技術分為操作系統(tǒng)磁盤緩存,數(shù)據(jù)庫緩存,應用程序緩存,Web服務器緩存,客戶端瀏覽器緩存。應用程序緩存主要是減少對數(shù)據(jù)庫的查詢,而Web服務器緩存可以減少對應用服務器的請求??梢?,緩存技術的應用領域是非常廣的。本文主要針對的是應用程序緩存。
為了避免多次訪問數(shù)據(jù)庫,將用戶的session、角色信息和菜單信息存放在全局靜態(tài)map中。frame.base.memory中的一個類緩存了用戶 session 中的菜單,另外一個緩存了所有角色和菜單信息。
Jave web啟動了多個線程將數(shù)據(jù)加入緩存提高訪問效率[13]。多線程操作時對某些變量設置讀鎖或者寫鎖,只有擁有寫鎖的線程才可以修改變量的值,以此避免多線程同時修改變量的值,造成變量的值不一致。
3)數(shù)據(jù)庫鏈接池
使用java創(chuàng)建jdbc數(shù)據(jù)庫連接速度慢,當創(chuàng)建一個jdbc 連接之后,數(shù)據(jù)庫訪問結(jié)束后需要關閉連接,下次訪問數(shù)據(jù)庫還需要重新創(chuàng)建,效率比較低。數(shù)據(jù)庫連接池的基本思想就是為數(shù)據(jù)庫連接建立一個“緩沖池”。預先在緩沖池中放入一定數(shù)量的連接,當需要建立數(shù)據(jù)庫連接時,只需從“緩沖池”中取出一個,使用完畢之后再放回去。
程序中可以設定連接池最大連接數(shù)來防止系統(tǒng)與數(shù)據(jù)庫連接的數(shù)量,也可以通過連接池的管理機制監(jiān)視數(shù)據(jù)庫的連接的數(shù)量和使用情況,為系統(tǒng)開發(fā)、測試及性能調(diào)整提供依據(jù)。
圖書館網(wǎng)站項目通過spring來管理數(shù)據(jù)庫鏈接,在spring-core.xml中定義了數(shù)據(jù)庫初始連接的最大數(shù)為20,最小數(shù)為1,一個連接在池中最小的生存時間為300秒。
配置文件的核心代碼如下:
<!-- 配置初始化大小、最小、最大 -->
<!-- 配置獲取連接等待超時的時間 -->
<!-- 配置間隔多久才進行一次檢測,檢測需要關閉的空閑連接,單位是毫秒 -->
<!-- 配置一個連接在池中最小生存的時間,單位是毫秒 -->
4)定時器技術
通過定時器可以設定靜態(tài)頁面生成的時間以及緩存數(shù)據(jù)寫入內(nèi)存中的時間??梢?,上述的JSP靜態(tài)化以及數(shù)據(jù)緩存技術必須與定時器相結(jié)合才能發(fā)揮定時生成頁面和將緩存數(shù)據(jù)寫入數(shù)據(jù)庫的作用。
圖書館網(wǎng)站中設定有兩種定時器,分別是寫入數(shù)據(jù)的timer定時器和定時生成頁面的Spring定時器。Spring定時器在配置文件spring-quartz.xml中定義。
5 測 試
網(wǎng)站搭建在浪潮NF5240M3服務器上,處理器英特爾XeonE5-24070@2.20GHz,內(nèi)存16GB,主板浪潮NF5240M3,操作系統(tǒng) Windows 2008R2 Server Standard 64位。使用Jmeter測試性能[14],主要測試指標有響應時間、并發(fā)數(shù)、吞吐量[15]。
1)響應時間測試
從打開瀏覽器窗口輸入域名到返回頁面需要的時間如下圖6所示,累積花費時間588ms。
如果網(wǎng)站沒有優(yōu)化,所需要的時間如下圖7,累積響應時間7518ms,經(jīng)過優(yōu)化系統(tǒng)提速12倍。
2)并發(fā)數(shù)和吞吐量測試
(1)測試設置100個線程,每秒有10個線程訪問網(wǎng)站,每個線程循環(huán)5次,累積訪問網(wǎng)站500次。
如下圖8所示,網(wǎng)站系統(tǒng)的吞吐量是每秒處理50.2個請求,在圖中Label表示請求類型,#sample表示樣本數(shù)目,Average是圖形報表中的平均值,Median是圖形報表中的中間值,90%Line是指90%請求的響應時間比所得數(shù)值還要小,Min代表服務器響應的最短時間,Max表示服務器響應的最長時間,Error表示請求的錯誤百分比,Throughout表示服務器每單位時間處理的請求數(shù),KB/sec表示每秒鐘請求的字節(jié)數(shù)。表9為未優(yōu)化的網(wǎng)站的聚合圖,在圖中吞吐量為每秒鐘處理46.1個請求。經(jīng)過優(yōu)化,吞吐量提高了23%。
(2)測試設置500個線程,每秒有10個線程訪問網(wǎng)站,每個線程循環(huán)5次,累積訪問網(wǎng)站2500次。網(wǎng)站的平均吞吐量是每秒鐘2746K字節(jié)。如圖10所示。
圖11為沒有優(yōu)化的網(wǎng)站500個線程訪問量的聚合圖,吞吐量為每秒種2612K字節(jié)。優(yōu)化后吞吐量提高了5%。
6 結(jié)束語
本文基于SSI框架提出了web后臺優(yōu)化策略,從JSP靜態(tài)化技術、緩存、多線程、并發(fā)技術、數(shù)據(jù)庫連接池和定時器等方面進行優(yōu)化,縮短了系統(tǒng)的響應時間和吞吐量。下一步工作是繼續(xù)研究這些優(yōu)化策略對后臺優(yōu)化的不同效率。
參考文獻
[1] 陳谷龍.網(wǎng)絡前端設計[J].互聯(lián)網(wǎng)周刊, 2000,9(04):85-86.
[2] 韓濤.高性能電子商務網(wǎng)站前端設計理念研究[J].江蘇商論,2011,(05):50-52.
[3] 馬淼.高性能網(wǎng)站優(yōu)化設計[J].中國傳媒科技,2012,(05):35-37.
[4] 武俊峰,朱喜梅.基于電子商務的網(wǎng)站設計與性能優(yōu)化研究[J] .自動化技術與應用,2008,( 07):21-23.
[5] 李昊,劉志鏡.線程池技術的研究[J].現(xiàn)代電子技術,2004(03):77-80.
[6] 張琪.企業(yè)WEB應用下SSI框架分析[J]南京工業(yè)職業(yè)技術學院學報,2011(02):56-58.
[7] 約翰遜.Spring框架高級編程[ M ].蔣培譯.北京:機械工業(yè)出版社, 2006 .
[8] 蔣玉婷,劉素訪. 基于Struts架構(gòu)的大型購物系統(tǒng)研究與實現(xiàn)[J].電腦知識與技術,2010(33):21-22.
[9] TEWARIR, DAHLIN M,VIN HM,et al.Beyond Hierarchies: Design Considerationsfor Distribut ed Caching on the Internet [ M] . / /Proc ICD C c99. Aust in , May 1999 .
[10]徐大偉. 基于MVC和iBatis的創(chuàng)新教育網(wǎng)絡平臺的實現(xiàn)[J].長春大學學報,2009(12):41-42.
[11]張建超,張連堂.網(wǎng)站架構(gòu)演變技術研究[J].現(xiàn)代計算機(專業(yè)版),2012 (4) :53-55.
[12]崔英志,張緒玉,高博.Web2.0時代的網(wǎng)站架構(gòu)[J].重慶工學院學報,2008(05):60-63.
[13]施為.Web應用程序中的數(shù)據(jù)緩存技術分析[J].淮陰師范學院學報(自然科學版).2006(05):320-321.
[14]佘青.利用Apache Jmeter進行Web性能測試的研究[J].智能計算機與應用,2012(02):32-33.
[15]陳紹英,夏海濤,金成姬.Web性能測試實戰(zhàn)[M].北京:電子工業(yè)出版社,2006:140-142.
圖書館網(wǎng)站項目通過spring來管理數(shù)據(jù)庫鏈接,在spring-core.xml中定義了數(shù)據(jù)庫初始連接的最大數(shù)為20,最小數(shù)為1,一個連接在池中最小的生存時間為300秒。
配置文件的核心代碼如下:
<!-- 配置初始化大小、最小、最大 -->
<!-- 配置獲取連接等待超時的時間 -->
<!-- 配置間隔多久才進行一次檢測,檢測需要關閉的空閑連接,單位是毫秒 -->
<!-- 配置一個連接在池中最小生存的時間,單位是毫秒 -->
4)定時器技術
通過定時器可以設定靜態(tài)頁面生成的時間以及緩存數(shù)據(jù)寫入內(nèi)存中的時間??梢?,上述的JSP靜態(tài)化以及數(shù)據(jù)緩存技術必須與定時器相結(jié)合才能發(fā)揮定時生成頁面和將緩存數(shù)據(jù)寫入數(shù)據(jù)庫的作用。
圖書館網(wǎng)站中設定有兩種定時器,分別是寫入數(shù)據(jù)的timer定時器和定時生成頁面的Spring定時器。Spring定時器在配置文件spring-quartz.xml中定義。
5 測 試
網(wǎng)站搭建在浪潮NF5240M3服務器上,處理器英特爾XeonE5-24070@2.20GHz,內(nèi)存16GB,主板浪潮NF5240M3,操作系統(tǒng) Windows 2008R2 Server Standard 64位。使用Jmeter測試性能[14],主要測試指標有響應時間、并發(fā)數(shù)、吞吐量[15]。
1)響應時間測試
從打開瀏覽器窗口輸入域名到返回頁面需要的時間如下圖6所示,累積花費時間588ms。
如果網(wǎng)站沒有優(yōu)化,所需要的時間如下圖7,累積響應時間7518ms,經(jīng)過優(yōu)化系統(tǒng)提速12倍。
2)并發(fā)數(shù)和吞吐量測試
(1)測試設置100個線程,每秒有10個線程訪問網(wǎng)站,每個線程循環(huán)5次,累積訪問網(wǎng)站500次。
如下圖8所示,網(wǎng)站系統(tǒng)的吞吐量是每秒處理50.2個請求,在圖中Label表示請求類型,#sample表示樣本數(shù)目,Average是圖形報表中的平均值,Median是圖形報表中的中間值,90%Line是指90%請求的響應時間比所得數(shù)值還要小,Min代表服務器響應的最短時間,Max表示服務器響應的最長時間,Error表示請求的錯誤百分比,Throughout表示服務器每單位時間處理的請求數(shù),KB/sec表示每秒鐘請求的字節(jié)數(shù)。表9為未優(yōu)化的網(wǎng)站的聚合圖,在圖中吞吐量為每秒鐘處理46.1個請求。經(jīng)過優(yōu)化,吞吐量提高了23%。
(2)測試設置500個線程,每秒有10個線程訪問網(wǎng)站,每個線程循環(huán)5次,累積訪問網(wǎng)站2500次。網(wǎng)站的平均吞吐量是每秒鐘2746K字節(jié)。如圖10所示。
圖11為沒有優(yōu)化的網(wǎng)站500個線程訪問量的聚合圖,吞吐量為每秒種2612K字節(jié)。優(yōu)化后吞吐量提高了5%。
6 結(jié)束語
本文基于SSI框架提出了web后臺優(yōu)化策略,從JSP靜態(tài)化技術、緩存、多線程、并發(fā)技術、數(shù)據(jù)庫連接池和定時器等方面進行優(yōu)化,縮短了系統(tǒng)的響應時間和吞吐量。下一步工作是繼續(xù)研究這些優(yōu)化策略對后臺優(yōu)化的不同效率。
參考文獻
[1] 陳谷龍.網(wǎng)絡前端設計[J].互聯(lián)網(wǎng)周刊, 2000,9(04):85-86.
[2] 韓濤.高性能電子商務網(wǎng)站前端設計理念研究[J].江蘇商論,2011,(05):50-52.
[3] 馬淼.高性能網(wǎng)站優(yōu)化設計[J].中國傳媒科技,2012,(05):35-37.
[4] 武俊峰,朱喜梅.基于電子商務的網(wǎng)站設計與性能優(yōu)化研究[J] .自動化技術與應用,2008,( 07):21-23.
[5] 李昊,劉志鏡.線程池技術的研究[J].現(xiàn)代電子技術,2004(03):77-80.
[6] 張琪.企業(yè)WEB應用下SSI框架分析[J]南京工業(yè)職業(yè)技術學院學報,2011(02):56-58.
[7] 約翰遜.Spring框架高級編程[ M ].蔣培譯.北京:機械工業(yè)出版社, 2006 .
[8] 蔣玉婷,劉素訪. 基于Struts架構(gòu)的大型購物系統(tǒng)研究與實現(xiàn)[J].電腦知識與技術,2010(33):21-22.
[9] TEWARIR, DAHLIN M,VIN HM,et al.Beyond Hierarchies: Design Considerationsfor Distribut ed Caching on the Internet [ M] . / /Proc ICD C c99. Aust in , May 1999 .
[10]徐大偉. 基于MVC和iBatis的創(chuàng)新教育網(wǎng)絡平臺的實現(xiàn)[J].長春大學學報,2009(12):41-42.
[11]張建超,張連堂.網(wǎng)站架構(gòu)演變技術研究[J].現(xiàn)代計算機(專業(yè)版),2012 (4) :53-55.
[12]崔英志,張緒玉,高博.Web2.0時代的網(wǎng)站架構(gòu)[J].重慶工學院學報,2008(05):60-63.
[13]施為.Web應用程序中的數(shù)據(jù)緩存技術分析[J].淮陰師范學院學報(自然科學版).2006(05):320-321.
[14]佘青.利用Apache Jmeter進行Web性能測試的研究[J].智能計算機與應用,2012(02):32-33.
[15]陳紹英,夏海濤,金成姬.Web性能測試實戰(zhàn)[M].北京:電子工業(yè)出版社,2006:140-142.
圖書館網(wǎng)站項目通過spring來管理數(shù)據(jù)庫鏈接,在spring-core.xml中定義了數(shù)據(jù)庫初始連接的最大數(shù)為20,最小數(shù)為1,一個連接在池中最小的生存時間為300秒。
配置文件的核心代碼如下:
<!-- 配置初始化大小、最小、最大 -->
<!-- 配置獲取連接等待超時的時間 -->
<!-- 配置間隔多久才進行一次檢測,檢測需要關閉的空閑連接,單位是毫秒 -->
<!-- 配置一個連接在池中最小生存的時間,單位是毫秒 -->
4)定時器技術
通過定時器可以設定靜態(tài)頁面生成的時間以及緩存數(shù)據(jù)寫入內(nèi)存中的時間??梢姡鲜龅腏SP靜態(tài)化以及數(shù)據(jù)緩存技術必須與定時器相結(jié)合才能發(fā)揮定時生成頁面和將緩存數(shù)據(jù)寫入數(shù)據(jù)庫的作用。
圖書館網(wǎng)站中設定有兩種定時器,分別是寫入數(shù)據(jù)的timer定時器和定時生成頁面的Spring定時器。Spring定時器在配置文件spring-quartz.xml中定義。
5 測 試
網(wǎng)站搭建在浪潮NF5240M3服務器上,處理器英特爾XeonE5-24070@2.20GHz,內(nèi)存16GB,主板浪潮NF5240M3,操作系統(tǒng) Windows 2008R2 Server Standard 64位。使用Jmeter測試性能[14],主要測試指標有響應時間、并發(fā)數(shù)、吞吐量[15]。
1)響應時間測試
從打開瀏覽器窗口輸入域名到返回頁面需要的時間如下圖6所示,累積花費時間588ms。
如果網(wǎng)站沒有優(yōu)化,所需要的時間如下圖7,累積響應時間7518ms,經(jīng)過優(yōu)化系統(tǒng)提速12倍。
2)并發(fā)數(shù)和吞吐量測試
(1)測試設置100個線程,每秒有10個線程訪問網(wǎng)站,每個線程循環(huán)5次,累積訪問網(wǎng)站500次。
如下圖8所示,網(wǎng)站系統(tǒng)的吞吐量是每秒處理50.2個請求,在圖中Label表示請求類型,#sample表示樣本數(shù)目,Average是圖形報表中的平均值,Median是圖形報表中的中間值,90%Line是指90%請求的響應時間比所得數(shù)值還要小,Min代表服務器響應的最短時間,Max表示服務器響應的最長時間,Error表示請求的錯誤百分比,Throughout表示服務器每單位時間處理的請求數(shù),KB/sec表示每秒鐘請求的字節(jié)數(shù)。表9為未優(yōu)化的網(wǎng)站的聚合圖,在圖中吞吐量為每秒鐘處理46.1個請求。經(jīng)過優(yōu)化,吞吐量提高了23%。
(2)測試設置500個線程,每秒有10個線程訪問網(wǎng)站,每個線程循環(huán)5次,累積訪問網(wǎng)站2500次。網(wǎng)站的平均吞吐量是每秒鐘2746K字節(jié)。如圖10所示。
圖11為沒有優(yōu)化的網(wǎng)站500個線程訪問量的聚合圖,吞吐量為每秒種2612K字節(jié)。優(yōu)化后吞吐量提高了5%。
6 結(jié)束語
本文基于SSI框架提出了web后臺優(yōu)化策略,從JSP靜態(tài)化技術、緩存、多線程、并發(fā)技術、數(shù)據(jù)庫連接池和定時器等方面進行優(yōu)化,縮短了系統(tǒng)的響應時間和吞吐量。下一步工作是繼續(xù)研究這些優(yōu)化策略對后臺優(yōu)化的不同效率。
參考文獻
[1] 陳谷龍.網(wǎng)絡前端設計[J].互聯(lián)網(wǎng)周刊, 2000,9(04):85-86.
[2] 韓濤.高性能電子商務網(wǎng)站前端設計理念研究[J].江蘇商論,2011,(05):50-52.
[3] 馬淼.高性能網(wǎng)站優(yōu)化設計[J].中國傳媒科技,2012,(05):35-37.
[4] 武俊峰,朱喜梅.基于電子商務的網(wǎng)站設計與性能優(yōu)化研究[J] .自動化技術與應用,2008,( 07):21-23.
[5] 李昊,劉志鏡.線程池技術的研究[J].現(xiàn)代電子技術,2004(03):77-80.
[6] 張琪.企業(yè)WEB應用下SSI框架分析[J]南京工業(yè)職業(yè)技術學院學報,2011(02):56-58.
[7] 約翰遜.Spring框架高級編程[ M ].蔣培譯.北京:機械工業(yè)出版社, 2006 .
[8] 蔣玉婷,劉素訪. 基于Struts架構(gòu)的大型購物系統(tǒng)研究與實現(xiàn)[J].電腦知識與技術,2010(33):21-22.
[9] TEWARIR, DAHLIN M,VIN HM,et al.Beyond Hierarchies: Design Considerationsfor Distribut ed Caching on the Internet [ M] . / /Proc ICD C c99. Aust in , May 1999 .
[10]徐大偉. 基于MVC和iBatis的創(chuàng)新教育網(wǎng)絡平臺的實現(xiàn)[J].長春大學學報,2009(12):41-42.
[11]張建超,張連堂.網(wǎng)站架構(gòu)演變技術研究[J].現(xiàn)代計算機(專業(yè)版),2012 (4) :53-55.
[12]崔英志,張緒玉,高博.Web2.0時代的網(wǎng)站架構(gòu)[J].重慶工學院學報,2008(05):60-63.
[13]施為.Web應用程序中的數(shù)據(jù)緩存技術分析[J].淮陰師范學院學報(自然科學版).2006(05):320-321.
[14]佘青.利用Apache Jmeter進行Web性能測試的研究[J].智能計算機與應用,2012(02):32-33.
[15]陳紹英,夏海濤,金成姬.Web性能測試實戰(zhàn)[M].北京:電子工業(yè)出版社,2006:140-142.