基於jmeter perfmon的穩定性測試記錄

2021-09-25 12:18:23 字數 2598 閱讀 2584

最近承接了專案中一些效能測試的任務,因此決定記錄一下,將測試的過程和一些心得收錄下來。

說起來效能測試算是軟體測試行業內,有些特殊的部分。這部分的測試活動,與傳統的測試任務差別是比較大的,也比較依賴工具,一定程度上效能測試被認為是測試中的「高階」部分,跟自動化測試、安全測試等並稱。

本次平台穩定性測試的目的在於:在伺服器壓力處於較飽和(達到80%系統最大tps)壓力之下,在較長時間(>8小時)之內觀測伺服器穩定性問題,以及資源使用情況和異常。

本次測試不呼叫上下游介面,只壓測建立訂單介面。訂單表存量資料19萬,介面請求方式為put。

由於在前序的測試過程中,可以確定本機jmeter執行可以驅動200執行緒數,達到接近系統極限吞吐量的情況。

因此本次穩定性測試決定延續使用本地pc使用jmeter仍以200執行緒進行測試,測試重點在於較長時間段內的穩定情況。

涉及到伺服器資源的監控,將決定使用jmeter外掛程式perfmon配合serveragent進行採集,以nmon作為實時監控工具。

具體工具選擇如下:

核心工具

版本備註

jmeter

3.3提供併發請求能力

perfmon metrics collector

2.1jmeter外掛程式,用於收集伺服器資源使用資訊

serveragent

2.2.1

以伺服形式傳送伺服器資源使用資訊

nmon

16h v2

實時收集伺服器資源資訊

3.2.1 jmeter

3.2.2 serveragent

安裝配置:將工具包解壓至伺服器,賦予755許可權,直接使用./startagent.sh啟動服務。

啟動成功後應該看到如下資訊:

預設繫結埠為4444.

3.2.3 perfmon

perfmon是jmeter外掛程式,配合serveragent進行伺服器資源監聽。

將jar包放至jmeter 安裝目錄下的 lib/ext 子目錄下,重啟jmeter即可生效。

同樣將perfmon jar包放至相同路徑即可啟用perfmon外掛程式。

也可以通過gui介面中的plugin manager 搜尋安裝,如下圖所示:

3.2.5 perfmon外掛程式配置

在jmeter測試計畫中新增perfmon***:

在配置介面中,新增所需要的監控項,如本例中監聽了cpu/memory/磁碟io三項:

注意箭頭標出的按鈕,為監聽具體度量的選擇,本例中選擇的分別是:

提取碼:uto0

總樣本數

平均中位

高位最小

最大錯誤率

吞吐量接收資料量(kb/s)

傳送資料量(kb/s)

68711231

299268

79123

12520

0.00%

667.52975

354.63

809.64

總體樣本數達到68676639個,平均響應時間299,吞吐量667.5/s,錯誤率0,總體比較穩定。

記憶體:

可以看到:

tps穩定在700-800之間,偶有波動,與實驗室網路環境有關。cpu在tps峰值時處於高占用狀態,基本維持在70%左右。記憶體占用穩定在20%。

經過本輪初步測試,在系統tps保持在700以上的條件下,系統表現穩定,事務成功率達100%。測試過程中,cpu保持高位占用,其它系統資源未見明顯瓶頸。

在測試的過程中發現了部分明顯的問題,在此進行記錄:

問題1:

壓測過程中曾遇系統記憶體被大量快取並無法自動釋放的情況。

解決:建立定時任務,定時清理記憶體快取。

問題2:

壓測過程中曾遇系統磁碟被佔100%情況,導致tps降至200左右,經查是由於應用日誌寫入導致。

解決:建立定時任務,定時清理應用日誌。

問題3:

測試中曾遇jmeter報錯address already in use,經查是由於jmeter5本機環境過度占用系統埠導致,嘗試增加開放埠數但是並未解決。改用jmeter3.3以後解決!(這塊仍不確定問題所在,有知道的朋友歡迎交流!)

AspectJ基於xml和基於註解

一 基於xml 執行的切入點中具體方法有返回值,則方法結束會立即執行後置通知,然後再執行環繞通知的放行之後的 2 連線點即所有可能的方法,切入點是正真被切的方法,連線點方法名 其中,只有環繞通知的切入點引數不一樣,是可以放行的切入點 3 異常通知是處理異常 切面類中的異常通知的方法引數列表中異常引數...

拓撲排序(基於dfs 基於佇列)

dfs函式的返回值表示是否成環,若存在有向環,則不存在拓撲排序。不包含有向環的有向圖稱為有向無環圖 dag 可以借助dfs完成拓撲排序,在訪問完乙個結點時把他加入當前拓撲序的首部。舉個栗子 比如乙個 1,2 1,3 2,3 的有向無環圖,就先搜尋1,再遞迴搜尋2,再搜尋3,3沒有出度了,於是放進拓撲...

基於insert update delete的注入

inset注入原理 所謂inset注入就是指我們前端註冊的資訊會被後台通過insert操作插入到資料庫裡邊去,若此時後台沒有做出相應的處理就會構成insert注入。insert注入方法 insert用法例如 insert into member username,pw,phonenum,email,...