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


1. 引子

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

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

2. 任務情況

2.1 任務總覽

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

2.2 接口情況

本次測試不調用上下游接口,只壓測創建訂單接口。訂單表存量數據19萬,接口請求方式為PUT。

2.3 服務器配置

  • 網關服務器 16核CPU、內存16G
  • 應用服務器 16核CPU、內存16G

3. 測試過程

3.1 測試機及工具選擇

由於在前序的測試過程中,可以確定本機jmeter運行可以驅動200線程數,達到接近系統極限吞吐量的情況。
因此本次穩定性測試決定延續使用本地PC使用jmeter仍以200線程進行測試,測試重點在於較長時間段內的穩定情況。
涉及到服務器資源的監控,將決定使用Jmeter插件perfmon配合serverAgent進行采集,以nmon作為實時監控工具。

具體工具選擇如下:

核心工具 版本 備注
Jmeter 3.3 提供並發請求能力
PerfMon Metrics Collector 2.1 Jmeter插件,用於收集服務器資源使用信息
ServerAgent 2.2.1 以伺服形式發送服務器資源使用信息
nMon 16h v2 實時收集服務器資源信息

3.2 工具安裝配置

3.2.1 Jmeter

  • 下載地址: http://jmeter.apache.org/download_jmeter.cgi 現在的最近版本為5.11,需要JDK 8+。建議使用3系列版本,原因后面說明。
  • 安裝配置:JDK以及環境配置等網上有大量教程,本文不再復述

3.2.2 ServerAgent

這個東西真是難找,從官網下載下來中斷了很多次,好在最后還是下好了。
ServerAgent需要部署在服務器上,他會以service的形式將服務器資源使用信息進行收集和發送。

  • 下載地址: http://jmeter-plugins.org/downloads/all/
  • 安裝配置:將工具包解壓至服務器,賦予755權限,直接使用./startAgent.sh啟動服務。
    啟動成功后應該看到如下信息:
    在這里插入圖片描述
    默認綁定端口為4444.

3.2.3 Perfmon

Perfmon是Jmeter插件,配合ServerAgent進行服務器資源監聽。

3.2.4 nmon

  • 下載地址: http://nmon.sourceforge.net/pmwiki.php?n=Site.Download 找到支持服務器系統的版本下載
    或者通過wget 下載: https://nchc.dl.sourceforge.net/project/nmon/nmon16d_x86.tar.gz
  • 安裝配置: 將壓縮包解壓至自選目錄,賦予755權限,直接運行相應系統的.sh文件即可運行。(如果下載的文件不是.sh格式,可以直接更改后綴名)
    本例中運行的就是如下腳本文件:
    在這里插入圖片描述
    運行成功后可以看到如下界面:
    在這里插入圖片描述
    可以通過鍵入c/m/d/n等調出相關資源監控,如下圖,分別列出了CPU,Memory及磁盤IO:
    在這里插入圖片描述

3.2.5 Perfmon插件配置

在jmeter測試計划中添加perfmon監聽器:
在這里插入圖片描述
在配置界面中,添加所需要的監控項,如本例中監聽了CPU/Memory/磁盤IO三項:
在這里插入圖片描述
注意箭頭標出的按鈕,為監聽具體度量的選擇,本例中選擇的分別是:

  • CPU:combined : 綜合CPU使用情況
  • Memory:usedperc:內存使用比例
  • DIsk IO:usedperc:磁盤IO占用比例

保持ServerAgent開啟,那么在線程組運行開始,perfmon插件就將按照配置開始采集服務器資源數據。

以上工具如遇下載困難,可以到以下網盤下載:
鏈接:https://pan.baidu.com/s/1q_gnMNqY8NpYbm8boSj_Jg
提取碼:uto0

4. 測試結果

4.1 聚合報告

總樣本數 平均 中位 高位 最小 最大 錯誤率 吞吐量 接收數據量(KB/s) 發送數據量(KB/s)
68711231 299 268 791 23 12520 0.00% 667.52975 354.63 809.64

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

4.2 TPS及資源對比

TPS:
在這里插入圖片描述
CPU:
在這里插入圖片描述
內存:
在這里插入圖片描述
可以看到:
TPS穩定在700-800之間,偶有波動,與實驗室網絡環境有關。CPU在TPS峰值時處於高占用狀態,基本維持在70%左右。內存占用穩定在20%。

4.3 結論

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

5. 問題

在測試的過程中發現了部分明顯的問題,在此進行記錄:
問題1:
壓測過程中曾遇系統內存被大量緩存並無法自動釋放的情況。
解決:
建立定時任務,定時清理內存緩存。

問題2:
壓測過程中曾遇系統磁盤被占100%情況,導致TPS降至200左右,經查是由於應用日志寫入導致。
解決:
建立定時任務,定時清理應用日志。

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM