Jmeter數據庫性能測試


1.網絡請求時間

2.數據庫查詢的時間

數據庫性能指標

TPS:每秒事務數(一秒鍾服務器處理的事務數,事務指,請求出去到響應回來的整個過程的時間)

QPS:每秒查詢量(就是數據庫每秒執行的SQL數量,包含insert/select/update/delete)

連接數(連接數是否釋放)

查詢緩存(不進行select,直接從緩存拿數據,緩存機制可以設置)

 

事務數的計算:Com_commit 提交次數(成功的事務)  Com_rollback回滾次數(失敗的事務)相加

QPS的計算 Questions / Uptime 即可得到的該指標的值

QPS查詢:mysql>show global status like 'Questions';

mysql>show global status like 'Uptime'

 

數據庫容易出現的問題:

1.連接池容易爆掉

2.慢查詢

 

Jmeter需要一個插件才能連接數據庫,一個mysql-connector-java-5.1.7-bin.jar包,放在apache-jmeter-4.0>lib>ext下即可

連接數據庫第一步:

1.“添加”-》“配置元件”-》“JDBC Connection Configuration”

 

QPSQueries Per Second,每秒查詢數)

TPSTransactions Per Second,每秒處理事務數)

通過show status命令查看數據庫運行狀態,會有300多條狀態信息記錄,其中有幾個值幫可以我們計算出QPSTPS,如下:

 

Uptime:服務器已經運行的時間,單位秒

Questions:已經發送給數據庫查詢數

Com_select:查詢次數,實際操作數據庫的

Com_insert:插入次數

Com_delete:刪除次數

Com_update:更新次數

Com_commit:事務次數

Com_rollback:回滾次數

計算方法:

1、基於Questions計算出QPS

mysql> show global status like 'Questions';

mysql> show global status like 'Uptime';

QPS = Questions / Uptime

2、基於Com_commitCom_rollback計算出TPS

mysql> show global status like 'Com_commit';

mysql> show global status like 'Com_rollback';

mysql> show global status like 'Uptime';

 

TPS = (Com_commit + Com_rollback) / Uptime

3、另一種QPS計算方式:

基於Com_selectCom_insertCom_deleteCom_update計算出QPS  

mysql> show global status where Variable_name in('com_select','com_insert','com_delete','com_update');

等待1秒再執行,獲取間隔差值,第二次每個變量值減去第一次對應的變量值,就是QPS

4、另一種TPS計算方式:

mysql> show global status where Variable_name in('com_insert','com_delete','com_update');

計算TPS,就不算查詢操作了,計算出插入、刪除、更新四個值即可。

 

 

配置JDBC Request:

1、重要參數說明:

  Variable Name:數據庫連接池的名字,需要與JDBC Connection ConfigurationVariable Name Bound Pool名字保持一致

  Query:填寫的sql語句未尾不要加“;”

  Parameter valus:參數值

  Parameter types:參數類型,可參考:Javadoc for java.sql.Types

  Variable names:保存sql語句返回結果的變量名

  Result variable name:創建一個對象變量,保存所有返回的結果

  Query timeout:查詢超時時間

Handle result set:定義如何處理由callable statements語句返回的結果

 

配置JDBC Connection Configuration

(1) Variable Name Bound to Pool

Variable Name, 創建池的變量名 。這個變量在后面介紹的 JDBC Request 請求中用到。 

(2) Connection Pool Configuration

Max Number of Connections    池中允許的最大連接數。在大多數情況下,將其設置為零(0),這意味着每個線程都將擁有自己的池,其中只有一個連接,即線程之間不共享連接。如果您真的想使用共享池,那么將 max count 設置為與線程數量相同,以確保線程不會彼此等待。

Max Wait (ms)   在連接池中取回連接最大等待時間
中文:如果在試圖檢索連接過程中(取回連接)超過所設置期限,連接池拋出一個錯誤

Time Between Eviction Runs (ms)     疏散時間
中文:在空閑對象驅逐線程運行期間,可以休眠的毫秒數。當非正值時,將運行無空閑對象驅逐器線程。(默認為“60000”,1分鍾)(如果當前連接池中某個連接在空閑了time Between Eviction Runs Millis時間后任然沒有使用,則被物理性的關閉掉。)


Auto Commit    自動提交sql語句
中文:打開或關閉連接的自動提交。
原文:Turn auto commit on or off for the connections.

 

(3) Connection Validation by Pool 

 

這是Jmeter用來檢驗數據庫連接是否有效的一種機制,超過5秒沒有使用的話,就會用validation query去測試下這個連接是否有效

 

Test While Idle   當空閑的時候測試連接是否斷開
中文:測試連接池的空閑連接,驗證查詢將會被使用去測試。
原文:Test idle connections of the pool, see BasicDataSource.html#getTestWhileIdle . Validation Query will be used to test it.

Soft Min Evictable Idle Time(ms)   
中文:最少的時間連接可能在池中閑置,然后才有資格被閑置的對象驅逐出去,額外的條件是至少在池中保持連接。默認值為5000(5秒)
Validation Query :驗證查詢 。一個簡單的查詢,用來確定數據庫是否仍在響應。 這個驗證查詢在池創建中使用,即使“空閑測試”建議查詢只在空閑連接上使用,也可以驗證它。

驗證查詢的列表可以配置 jdbc.config.check。查詢屬性,默認情況下:

hsqldb:select 1 from INFORMATION_SCHEMA.SYSTEM_USERS

Oracle:select 1 from dual

DB2:select 1 from sysibm.sysdummy1

MySQL:select 1

Microsoft SQL Server (MS JDBC driver):select 1

PostgreSQL:select 1

Ingres:select 1

Derby:values 1

H2:select 1

Firebird:select 1 from rdb$database

 

 (4) Database Connection Configuration

 

Database URL: jdbc:mysql://服務器地址:3306/數據庫名  

 

  (比如:jdbc:mysql://ip:3306/數據庫名?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true)

    備注:“&allowMultiQueries=true” 這句話的意思呢  是為了在JDBC中執行多條select語句的時候用的!

JDBC Driver class:數據庫JDBC驅動類名:com.mysql.jdbc.Driver

Username:數據庫連接用戶名

password:數據庫連接密碼

例如(上面url或class如有問題,可試一試下面的):

Database URL:  jdbc:mysql://localhost:3306/information_schema?serverTimezone=GMT%2B8

JDBC Driver class:  com.mysql.cj.jdbc.Driver

Username:root

password:xxx

 

 


免責聲明!

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



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