隨著電商的高度發(fā)展,其技術和機制均面臨許多機遇和挑戰(zhàn)。本文將通過 Jpetstore 的簡單網(wǎng)購架構平臺、Badboy 的錄制腳本功能、JMeter 的抗壓測試功能以及 EasyAPM 的性能測試功能,了解電子商務智能技術的內部結構及運行機制,嘗試模擬電商平臺在短時間內大量用戶涌進情況下可能出現(xiàn)的隱患。
一、電商發(fā)展現(xiàn)狀
電子商務,簡稱電商,是借助互聯(lián)網(wǎng)實現(xiàn)貿(mào)易過程中各階段的貿(mào)易活動。相對于傳統(tǒng)商業(yè)模式存在諸多弊端,如庫存弊端、價格弊端、宣傳弊端等,電子商務技術可使得人們獲取信息的方法發(fā)生極大的改變,獲取信息的速度也得到極大提高;與此同時,購物方式也隨之改變,網(wǎng)購變得更加舒適與便捷;新型教育方式逐漸普及,網(wǎng)課慢慢進入老百姓的家中;休閑娛樂方式得到前所未有的改變,直播、電子游戲等新興產(chǎn)物漸漸被人們接受。
目前我國電商平臺已形成取中間化、去中心化、去邊界化,多行業(yè)、多領域、全方位生態(tài)圈布局。技術方面:作為我國最知名的電商平臺,淘寶技術架構經(jīng)歷了 LAMP 架構→Java 架構→分布式架構→IDC 架構。運行機制方面:電商平臺的運行機制大體上可以分為“瀏覽商品”、“加入購物車”、“提交訂單”以及“支付訂單”四部分。
隨著電商的發(fā)展,云計算、物聯(lián)網(wǎng)、互聯(lián)網(wǎng)+等新興技術的興起,大數(shù)據(jù)成為當代的主旋律,其必定會面臨眾多機遇與挑戰(zhàn):
①集群規(guī)模的增大,系統(tǒng)故障發(fā)生的概率也增加,易出現(xiàn)節(jié)點失效、網(wǎng)絡失效、軟件錯誤以及資源限制等故障情況。
②洪峰流量的上漲,會帶來服務器與數(shù)據(jù)庫的壓力。
③資源問題、業(yè)務擴展性還有容災問題。
二、實驗平臺及工具介紹
電商平臺面臨諸多風險,通過上線前的性能檢測和故障診斷可以在一定程度上降低電商平臺故障發(fā)生概率。電商平臺可以使用壓力測試工具測試系統(tǒng),并監(jiān)測系統(tǒng)運行時的應用性能,從而根據(jù)性能變化趨勢定位系統(tǒng)中的瓶頸或故障。其主要包括:壓力測試(STRESS TESTING),負載測試(LOAD TESTING),性能測試(PERFORMANCE TESTING)。 LoadRunner 的三大主要模塊為: VirtualUser Generator(用于錄制性能測試腳本),LoadRunner Controller(用于創(chuàng)建、運行和監(jiān)控場景),LoadRunner Analysis(用于分析性能測試結果)。
(一)實驗平臺:JPetStore
以一個小型寵物商店電子商務平臺為原型,展示了一個帶有簡單數(shù)據(jù)庫連接的 J2EE Web 層的應用。它由若干模塊組成,包括:控制模塊、購物車模塊、登陸模塊、消息模塊、類別模塊,客戶模塊。通過創(chuàng)建模型、界面和控制器三層將面向對象的設計與可視化接口分開。
(二)主要使用工具
1.EasyAPM:
由中科院軟件所所研發(fā)的用于應用執(zhí)行時實現(xiàn)軟件性能監(jiān)測、業(yè)務流程追蹤的一款專業(yè)工具,其由三個主要功能模塊組成:Server、Agent和Web。其中,Server負責處理Agent發(fā)送過來的trace和系統(tǒng)運行狀態(tài)信息并將其儲存在MySQL數(shù)據(jù)庫中;Web應用負責對 trace及系統(tǒng)運行時信息進行可視化展示,用戶可以通過 Web 查看所有的監(jiān)測信息;EasyAPM Server 可以接收多個agent的鏈接。
2.Apache JMeter
它作為一款廣為流傳的開源測壓產(chǎn)品,有三大主體功能:一是可以用于測試靜態(tài)和動態(tài)資源;而是可以對服務器、網(wǎng)絡或對象進行負載模擬,通過施加不同的壓力測試其強度、分析整體性能;三是可以對應用程序做功能測試和回歸測試,允許使用正則表達式創(chuàng)建斷言。其特點包括:對 HTTP、FTP 服務器、數(shù)據(jù)庫進行壓力測試和性能測試;完全的可移植性;完全輕量組建支持包;完全多線程;緩存和離線分析 /回放測試結果;可鏈接的取樣器;具有提供動態(tài)輸入到測試的功能;支持腳本編程的取樣器等。在設計階段,JMeter能夠充當 HTTP PROXY(代理)來記錄瀏覽器的 HTTP 請求,也可以記錄Apache 等 WebServer 等 log 文件來重現(xiàn) HTTP 流量,并在測試運行時以此為依據(jù)設置重復次數(shù)和并發(fā)度(線程數(shù)) 來進行壓測。
三、挖掘電商平臺內部結構及運行機制
本文以Jpetstore的簡單網(wǎng)購架構為實驗平臺、借助EasyAPM的流程追蹤功能和Badboy的錄制腳本功能,了解電子商務智能技術的內部結構及運行機制。
(一)基于EasyAPM的電商事務追蹤
對數(shù)據(jù)進行可視化展示,在首頁上可以清晰觀察應用性能指數(shù)、吞吐量、平均響應時間以及組件所占時間百分比等數(shù)據(jù)。在數(shù)據(jù)追蹤欄中,可找出概覽、追蹤詳細、SQL語錄等數(shù)據(jù),并可以詳細觀察出各組件所用時間及占比。在追蹤詳細中,可以觀測各個事務單獨時間及占比,從而了解其運行的詳細情況。
(二)基于Badboy 的錄制腳本實驗
Badboy 被用于測試和開發(fā)復雜的動態(tài)應用。它提供了強大的屏幕錄制和回放功能,同時提供了豐富的圖形結果分析功能,實驗操作結果如圖:
四、模擬電商平臺在短時大量用戶涌進下存在的隱患
本文利用JMeter開源測壓工具,通過改變線程量,從而模擬大量用戶涌進的真實情況。再利用 EasyAPM 的追蹤功能與可視化顯示功能,從宏觀和微觀兩個方面清晰的找到并分析可能存在的隱患。
(一)基于JMeter 的壓力測試
分別設置線程量為100、500、1000,記錄不同參量下的測試結果如下:
可以清晰看出,平均值、偏高、中值隨線程量增長而增長;而吞吐量在上升至一個高峰后,會出現(xiàn)停滯或下降。
(二)基于EasyAPM 的性能診斷
診斷針對注入了錯誤和異常的問題電商平臺進行,錯誤的挖掘過程按照如下流程,循環(huán)往復:
①發(fā)現(xiàn)錯誤
②通過EasyAPM初步觀測錯誤內容
③進入Web具體查找錯誤原因
④展開事務追蹤,找到錯誤
最后,記錄數(shù)據(jù),進行多次實驗,總結歸納出現(xiàn)的異常類型。
(三)存在隱患分析
(1)電商平臺面臨大規(guī)模用戶訪問時,有如下幾個組件占用時間較長:
Org/apache/struts/action/ActionServlet.doPost0
Org/apache/tomcat/websocket/server/WsFilter.doFilter()
(2)電商平臺面臨大規(guī)模用戶訪問時,以下事務可能會導致系統(tǒng)性能下降:
jpetstore/shop/viewCategory.shtml
jpetstore/shop/newOrderForm.Shtml
jpetstore/shop/signon.shtml
jpetstore/shop/index.shtml
(3)分析電商平臺可能會出現(xiàn)的異常類型及其原因大體有以下幾點:
五、結語
本文在學習電商的基礎上,利用 Jpetstore 的簡單網(wǎng)購架構平臺、Badboy 的錄制腳本功能、JMeter 的抗壓測試功能以及 EasyAPM 的性能測試功能,了解電子商務智能技術的內部結構及運行機制,模擬電商平臺在短時間內大量用戶涌進下的情況,分析可能存在的錯誤類型有操作超時、數(shù)據(jù)庫查找異常、算數(shù)異常這三類。
(作者簡介:叢川奇,威海紫光實驗學校高二一班學生。)