廖蘋秀,鄧丹,王小娟
(電子科技集團公司第三十研究所,四川成都610041)
監(jiān)控系統(tǒng)需要對上千臺設備進行監(jiān)控,并且能實時監(jiān)控設備的當前狀態(tài)。監(jiān)控系統(tǒng)對設備的管理基于管理協(xié)議來實現(xiàn)的。監(jiān)控系統(tǒng)的管理協(xié)議[1]最大的特點是由研制單位自主設計和研制的,未采用標準的協(xié)議。針對監(jiān)控系統(tǒng)管理協(xié)議的特點,結合LoadRunner[2]并發(fā)性能測試工具,研究出一種可行的監(jiān)控系統(tǒng)并發(fā)性能測試方法,并運用于監(jiān)控系統(tǒng)的并發(fā)性能測試。
監(jiān)控系統(tǒng)并發(fā)性能測試需求來源于具體的業(yè)務需求,性能最終是以用戶能感受到形態(tài)得以體現(xiàn)。根據(jù)已發(fā)貨的監(jiān)控系統(tǒng)在用戶實際部署環(huán)境中所管理的設備的數(shù)量來分析,監(jiān)控系統(tǒng)應具備很強的管控能力,同時需對部署于不同位置的上千臺設備進行監(jiān)控,并且能實時地查詢設備的當前狀態(tài),其工作模式如圖1[1]所示。
圖1 監(jiān)控系統(tǒng)工作模式
被管設備啟動后需要向監(jiān)控系統(tǒng)申請配置信息后才能完成啟動,按照用戶使用設備的方式和特點可將被管設備分為如下兩類:
終端類設備:此類設備部署在用戶工作環(huán)境內,用戶每天上班時開機,下班時關機。設備開機時會進行配置信息申請,設備工作時會定時上報運行狀態(tài)。
機架類設備:此類設備部署在機房內,日常一般不會關機,長期處于工作狀態(tài)。設備工作時會定時上報運行狀態(tài)。
綜上所述:設備開機申請配置信息,定期上報運行狀態(tài)兩個業(yè)務會對監(jiān)控系統(tǒng)造成并發(fā)壓力。此次主要針對上述兩個業(yè)務開展測試。
監(jiān)控系統(tǒng)并發(fā)性能測試環(huán)境由控制臺、負載機和監(jiān)控終端組成
圖2 監(jiān)控系統(tǒng)并發(fā)測試環(huán)境
上圖中負載機準備使用高性能服務器來安裝Load Runner11的負載生成器??刂婆_為一臺PC機安裝Windows操作系統(tǒng)以及Loadrunner11的Windows版本,控制臺可以調用負載機上的服務來生成負載對被測設備發(fā)起并發(fā)測試。交換機均采用華的萬兆交換機。
為了滿足使用LoadRunner進行并發(fā)測試的需要,監(jiān)控系統(tǒng)需要對程序進行修改,固化了每次業(yè)務交互中臨時產生的數(shù)據(jù)、去掉了協(xié)議中抗重放處理的內容。
監(jiān)控系統(tǒng)并發(fā)測試所有的數(shù)據(jù)包,均采用shell腳本準備,根據(jù)協(xié)議設計,將協(xié)議中固定的字段部分準備成固定的文件,可變部分通過插樁方式獲取數(shù)據(jù)。準備數(shù)據(jù)包過程中涉及到大量的運算,所有的運算通過專用運算工具完成。最終按照協(xié)議格式生成協(xié)議交互過程的完整數(shù)據(jù)包。
上一代監(jiān)控系統(tǒng)并發(fā)測試中測試腳本采用錄制回放的方式準備。由于每個被管設備的證書、協(xié)議的特殊字段均不相同,無法在腳本中進行參數(shù)化。如需模擬300個并發(fā)用戶,則需要錄制300次腳本,每次錄制一次需要模擬不同設備準備相關數(shù)據(jù),至少要5分鐘以上,而且當監(jiān)控系統(tǒng)版本更換后,準備的腳本可能無法重用,需要重新錄制,效率非常低。
這一代的監(jiān)控系統(tǒng)并發(fā)測試過程中對采用3.1節(jié)所述的方式對準備測試數(shù)據(jù),腳本的開發(fā)是利用LoadRunner性能測試工具的VirtualUserGenerator生成測試腳本,協(xié)議選擇WebService和Windows Sockets。測試腳本主要分三個部分:Vuser_init,Action和Vuser_end。各部分主要功能如下:
Vuser_init:將3.1節(jié)中準備的數(shù)據(jù)包寫入到buffer中,同時將設備id參數(shù)化成Vuserid;
Action:創(chuàng)建套接字,按照協(xié)議發(fā)送和接收數(shù)據(jù)包,同時根據(jù)協(xié)議內容創(chuàng)建事務,對各測試指標按照事務進行統(tǒng)計;同時在創(chuàng)建套接字連接時設置開始事務lr_start_action()[3],在關閉套接字連接時設置結束事務lr_end_action()[3],設置開始和結束事務的主要目的是測試過程中對各類指標進行統(tǒng)計和計算。
Vuser_end:程序執(zhí)行完成后,返回。
采用這種方式測試數(shù)據(jù)的優(yōu)點在于:一旦數(shù)據(jù)包腳本準備好后,如果監(jiān)控系統(tǒng)版本更新,只需要重新運行腳本產生協(xié)議交互數(shù)據(jù)包即可,測試腳本不用改變,可大大節(jié)約時間,提升測試效率。
從并發(fā)性能測試數(shù)據(jù)分析中可以得到對系統(tǒng)性能的科學評估,為系統(tǒng)性能調整優(yōu)化提供數(shù)據(jù)資料。Loadruner提供了圖形化測試數(shù)據(jù)分析功能,包括虛擬用戶數(shù)曲線、每秒事務數(shù)曲線以及事務響應時間曲線。
虛擬用戶指向被測設備發(fā)起訪問的用戶,這些用戶必須跟被測設備進行數(shù)據(jù)交互。使用Load-Runner進行測試時的虛擬用戶就是圖3和圖4中縱坐標上顯示的Vusers數(shù)。
圖3和圖4所示為實測的虛擬用戶數(shù)曲線的兩個示例。從圖3中可以看出,虛擬用戶數(shù)達到一個峰值400后,每運行一段時間虛擬用戶數(shù)就會減少,減少的虛擬用戶是由于程序有缺陷導致虛擬用戶執(zhí)行失敗后退出。程序中的缺陷修復后的虛擬用戶數(shù)見圖4,系統(tǒng)支持的虛擬用戶數(shù)在達到一個峰值(400)過后一直處于非常平穩(wěn)的狀態(tài),直到運行結束后自動退出。
圖3 虛擬用戶數(shù)示例一
圖4 虛擬用戶數(shù)示例二
每秒事務數(shù)指每秒鐘傳輸?shù)氖聞盏奶幚韨€數(shù),即被測設備每秒處理的業(yè)務數(shù)量。每秒事務數(shù)曲線統(tǒng)計的是在測試場景中運行的并發(fā)業(yè)務每秒通過、失敗以及停止的次數(shù),事務的開始和結束在測試腳本中設置。
圖5和圖6所示為實測的每秒事務數(shù)的兩個示例。圖5中事務處理能力隨著時間軸上下振蕩,說明系統(tǒng)在業(yè)務處理過程中存在處理缺陷,從而影響了系統(tǒng)的性能指標。經過修改和調優(yōu)后,每秒事務數(shù)曲線如圖6所示,在測試周期內系統(tǒng)每秒事務數(shù)趨于穩(wěn)定而且每秒事務數(shù)也比圖5所示的每秒事務數(shù)提升了25%左右。
圖5 每秒事務數(shù)示例一
圖6 每秒事務數(shù)示例二
平均事務響應時間指針對某個業(yè)務的訪問統(tǒng)計所有的響應時間,然后求平均值。平均事務響應時間曲線統(tǒng)計的是在測試場景中運行的并發(fā)業(yè)務在不同時間點的事務運行所消耗時間的平均值。
圖7實測的平均事務響應時間的示例,在并發(fā)用戶數(shù)不變的條件下,平均事務響應時間與每秒事務數(shù)成反比的關系。結合圖5可以看出,當平均事務響應時間曲線為波峰的時候,每秒事務數(shù)為波谷,平均響應時間越短則每秒事務數(shù)越大。
圖7 平均事務響應時間
本文介紹了利用性能測試工具LoadRunner對監(jiān)控系統(tǒng)進行并發(fā)測試,設計了一種對監(jiān)控系統(tǒng)進行并發(fā)性能測試的新方案,該方案與已有方案的主要不同之處在于其優(yōu)化了準備測試數(shù)據(jù)和腳本的方法,大大提高的測試的效率,從而降低了測試成本。將該方案運用于監(jiān)控系統(tǒng)并發(fā)性能測試,并通過對測試結果進行分析,找出了系統(tǒng)的性能瓶頸并進行了優(yōu)化,從而避免系統(tǒng)在上線以后遇到的性能風險。
[1] 辜彬,廖蘋秀,古紅峰.管理協(xié)議并發(fā)性能測試研究[J].通信技術,2013,(8).
[2] 張卉,高仲合,黃銘.基于Load Runner的Web作業(yè)系統(tǒng)性能測試方案的研究與設計[J].現(xiàn)代計算機(專業(yè)版),2015,(5).
[3] 陳夢云,高建華.基于Load Runner的理財平臺性能測試[J].上海師范大學學報(自然可科學版),2016,(4).