天天看點

Jmeter壓力測試Mysql資料庫

作者:散文随風想

一、連接配接MQSQL資料庫

1、準備mysql驅動包

jmeter要連接配接mysql資料庫,首先得下載下傳mysql jdbc驅動包,盡量保證其版本和你的資料庫版本一緻,至少不低于資料庫版本,否則可能有問題。官網下載下傳位址為:MySQL :: Download Connector/J
Jmeter壓力測試Mysql資料庫

下載下傳之後解壓放到本地目錄~

2、準備好驅動包後,需要把jdbc驅動jar包引入測試計劃。

點選測試計劃-->點選浏覽-->選中mysql驅動jar包-->打開,如下圖所示:

或者,把 mysql-connector-java-5.1.28.jar 放到Jmeter安裝目錄的lib/exp目錄下,并重新開機jmeter.

Jmeter壓力測試Mysql資料庫

3、配置JDBC Connection Configuration

線上程組下建立一個JDBC Connection Configuration配置元件,需要用到這個元件來完成資料庫的連接配接,詳細配置如下圖所示:
Jmeter壓力測試Mysql資料庫

這裡我們主要關注Variable Name Bound to Pool 和Database Connection Configuration兩部分内容,其他字段可以保持預設值

Variable Name:資料庫連接配接池的名稱,在JDBC Request中會用到; Database URL:資料庫URL,jdbc:mysql:// IP位址:端口/庫名; JDBC Driver Class:JDBC驅動 Username:資料庫使用者名; Password:資料庫密碼;

4、配置JDBC Requests

上面我們已經完成了對資料庫的連接配接,但要完成對資料庫操作的話呢,還需要建立一個取樣器JDBC Request,如下圖所示:

Jmeter壓力測試Mysql資料庫
Jmeter壓力測試Mysql資料庫

Query: 填寫要被執行的SQL語句

Parameter values:參數值 Parameter types:參數類型 Variable names:儲存sql語句傳回結果的變量名 Result variable name:建立一個對象變量,儲存所有傳回的結果 Query timeout:查詢逾時時間 Handle result set:定義如何處理由callable statements語句傳回的結果
至此一個最簡單的jmeter連接配接mysql資料庫的腳本就基本準備好了,接下來添加一個監聽器:察看結果樹 ,然後運作腳本即可,結果如下圖所示:
Jmeter壓力測試Mysql資料庫

二、設定報告及定時器

2.1 檢視結果樹配置

Jmeter壓力測試Mysql資料庫

2.2 彙總報告配置

Jmeter壓力測試Mysql資料庫

2.3 聚合報告

Jmeter壓力測試Mysql資料庫

2.4 響應時間

Jmeter壓力測試Mysql資料庫

2.5 統一随機定時器

Jmeter壓力測試Mysql資料庫

2.6 觀察并發測試效果

Jmeter壓力測試Mysql資料庫

設定了等待時間後,可以通過聚合報告清楚的看到每間隔2秒,同時發出200個請求。

如果不添加定時器,Jmeter每個連接配接線程向伺服器發送的請求是不規律的,如果要最大程度的模拟請求壓力,就需要用到Jmeter中定時器的功能,設定并發(Synchronizing Timer)、設定等待時間(固定定時器)是最常用的定時器。除了這兩個定時器外,Jmeter還提供了其他幾個定時器,本質上的目的都是控制請求頻次來模拟真實的使用者場景。

Jmeter壓力測試Mysql資料庫

三、JDBC REQUESTS參數化

方法(一):自定義使用者變量,然後進行引用

1.在測試計劃界面【使用者定義的變量】裡定義需要的變量

Jmeter壓力測試Mysql資料庫

2.在JDBC Request界面SQL Query輸入框中以${變量名}的形式引用變量

Jmeter壓力測試Mysql資料庫

或者也可以在JDBC Request裡添加一個使用者定義的變量

點選JDBC Request --> 點選添加,點選配置元件,點選使用者定義的變量

Jmeter壓力測試Mysql資料庫

然後定義需要的變量,如下圖所示

Jmeter壓力測試Mysql資料庫

方法(二):在被執行的SQL語句中使用“?”作為占位符,并傳遞參數值和參數類型,其中,傳遞的參數值有常量和變量之分。

1、當傳遞的參數值是常量時,如下圖所示,傳入的訂單号:

Jmeter壓力測試Mysql資料庫

2、當傳遞的值是變量時,如下圖中的所示:

Jmeter壓力測試Mysql資料庫
Jmeter壓力測試Mysql資料庫

至于這裡引用Variable names時,為什麼在變量名後面加了一個“_1”,是因為查詢到的結果是一個清單,是以不管它查詢的是一條還是多條資料,都要通過下标去取它的值,寫法就是:變量名_下标。

比如:

id name
100 Mike
101 Jane
sql語句傳回2行2列,id和named的Variable names設定為A、C,那麼要取name為Mike的值,就設定為C_1,取name等于Jame的值,就設定為C_2。

四、生成測試報告

生成測試報告指令:​

jmeter -n \
-t D:\OpenSources\校園小商品交易測試計劃.jmx(腳本的絕對路徑) \
-l 校園小商品交易JMeter測試.jtl(自定義的名稱) \
-e -o D:\jmeterResult(測試報告的絕對路徑)

# example
jmeter -n \
-t D:\OpenSources\test.jmx \
-l test-result.jtl \
-e -o D:\jmeterResult           

參數說明:

n: 非GUI模式執行JMeter
t: 腳本檔案(.jmx檔案)的路徑
l: 指定生成測試結果的儲存檔案(.jtl格式),此檔案必須不存在
e: 測試結束後,生成測試報告
o: 用于存放測試報告的路徑           

繼續閱讀