吳瑕
四川郵電職業技術學院 四川成都 610067
目前的許多大型系統都是由多個系統或組件構成的,而隨著網絡的發展,多用戶、高并發、數據集中等特性,都給提供服務的系統帶來嚴重負荷。軟件系統的性能對于客戶而言,是可以直接感受的。如果用戶在系統面前得到“當前系統忙,請稍后再試”的信息,那么他們可能會失去耐心放棄等待,這就是性能問題。排隊等待,往往是性能問題導致的。
性能測試的目的在于,通過制定性能測試策略、測試計劃、執行測試腳本、分析測試結果,來尋找當前性能瓶頸,優化系統性能,改善性能狀況。本文采用主流的性能測試工具Loaderunner,針對系統Web端進行性能測試,并選取其中的一個查詢頁面進行性能指標分析。
辭海中性能一詞是用來描述機械、器材、物品等所具有的速度、效率和能力的綜合評價。性能測試即是對機械、器材、物品的性能定性或定量的量測過程。在計算機的世界里,性能是一種指標,表明軟件系統或構件對于其及時性要求的符合程度。Web性能測試主要考慮以下幾個因素:網絡帶寬,工作負載,并發用戶數量,請求響應時間,事務響應時間,吞吐量,吞吐率,TPS,點擊率,資源利用率等。將這些指標數據加以分析,能夠挖掘出系統配置、SQL語句、內存泄露、遞歸算法、代碼邏輯等問題,很好的知道系統性能,預估系統承受能力,確定問題所在并及時優化。
常見的性能測試分以下幾類:穩定性測試、壓力測試、負載測試。負載測試指目標系統正常運行的前提下,它所能承擔的最大服務負荷數量。例如,逐漸增加模擬用戶的數量,觀察不同用戶負載下系統的資源占用情況、吞吐率、及事務的響應時間等。穩定性測試,也叫可靠性測試,指的是在給定的負荷的情況下,有外界或內部非正常的干擾的,系統能提供穩定服務的能力。例如,讓系統持續運行一兩天,甚至更久,檢查系統是否能夠穩定運行。有些系統會在執行到十幾個小時之后,逐漸變慢。壓力測試指在指定的負載的情況下,目標系統長時間提供正確服務系統的能力。例如,測試一個 Web 站點在大負荷工作下,系統的響應何時會退化或失敗。通常情況下,壓力測試要分析磁盤空間、系統內存、網絡帶寬、CPU 可用性等。
一個簡單的Web請求處理包括(1)客戶發送請求;(2)服務器接受到請求并進行處理;(3)服務器向DB獲取數據;(4)服務器生成用戶的頁面,返回給用戶。那么,針對Web的性能測試,主要參考的指標有:
1、事務(Transaction)
一個事務表示一個完整的請求處理。一般的響應時間都是針對事務而言的。
2、請求響應時間(Response Time)
請求響應時間指從客戶端client發起一個請求開始,到客戶端接收到服務器返回的響應結束,所耗費的時間。一般用“秒”或者“毫秒”為單位來度量。參考2/5/10原則:當響應時間在2秒內,用戶會感覺系統速度很快;當響應時間在2-5秒內,用戶會感覺系統速度還行;當響應時間在5-10秒內,用戶會感覺系統速度慢,但勉強能夠接受;當響應時間超過10秒,用戶會認為系統已經失去響應,準備發起第二次請求,或轉向其他系統。
3、每秒處理事務數(Transaction per Second)
這是分析性能的重要指標,該指標用來評價場景運行的每一秒鐘,通過事務的數量。通過它可以確定系統在任何給定時刻的時間事務負載。將TPS的曲線走向,與平均事務響應時間進行對比,可以分析事務數目對執行時間的影響。
4、系統負載(Load)
計算機系統中進程隊列的大小,即計算機系統在一段時間內可以處理的工作任務的多少。
5、CPU利用率(CPU usage)
CPU利用率表示運行的程序占用的CPU資源,利用率越高,表明在此期間有很多進程在運行,有可能是應用程序設計不良,需要優化。CPU分為用戶態,系統態和空閑態,分別表示CPU處于用戶態執行的時間,系統內核執行的時間,和空閑系統進程執行的時間。
3.1 測試需求
某系統平臺首頁查詢頁面,目前訪問量大概為日均10萬次。通過對服務端的服務請求壓力測試,了解服務端的平均響應時間(RT),平均事務處理量(TPS)、單臺服務器的最大并發事務處理量;單臺服務器在最大并發事務處量的壓力下系統硬件資源性能及利用率;通過對各系統壓力測試,了解系統平均響應時間(Response time)、每秒處理事務數(TPS)、系統資源(CPU Using, System Load, Memory Using, System I/O)、單個事務的拐點。
測試基準,DB中表task_info已有的記錄大概為10萬。
3.2 測試步驟
分析需求,創建腳本,定義虛擬用戶數,創建場景,運行場景,得出測試結果,分析測試結果并評估。
3.3 測試結果
并發用戶數,從20個增加到60個,得到的性能指標如表1所示:

表1 系統性能指標表

圖1 30個用戶并發的TPS—響應時間關系圖

圖2 30個虛擬用戶并發執行時間
30個用戶并發的CPU利用率,均值約為40%,其中CPU1-CPU4的利用率分別為50%、28%、31%、30%。
3.4 測試分析
從圖1可以看出,當30個用戶并發時,系統TPS處理,及響應時間達到拐點。那么,我們可將30個用戶并發作為系統峰值。從響應時間來看,通過查詢系統日志得知,開始發送查詢請求,到查詢請求返回的時間約為3秒。代碼層面,可對此查詢做DB層面的優化。
從TPS來看,按5臺服務器集群來計算,得到線上每天能處理的事務數:3.55*5*3600*24*80%=122680,約122.6萬筆。
本文介紹了Web性能測試的定義,介紹了Web性能測試的關注指標。最后針對某系統中的一個Web查詢頁面進行性能測試實踐,找到系統瓶頸,得到系統性能指標。