jmeter壓力測試值之配置JDBC Connection Configuration(一)


一、下載mysql jar包

下載mysql jar包

http://dev.mysql.com/downloads/connector/j/

網盤下載地址:mysql-connector-java-commercial-5.1.25-bin.jar

查看jar包支持的mysql版本:http://dev.mysql.com/doc/connector-j/en/connector-j-versions.html

查看mysql數據庫版本:SELECT VERSION();

注:如果下載的jar包版本不支持mysql數據庫,運行Jmter時可能會報錯:no suitable driver found for jdbc:mysql//……..

為Jmeter添加jar文件

下載后解壓.zip文件,把mysql-connector-java-x.x.x-bin.jar(例中:mysql-connector-java-commercial-5.1.25-bin.jar)放到Jmeter安裝目錄下的lib目錄下(例中:D:\Program Files\apache-jmeter-2.13\lib)

2.   啟動Jmeter,添加需要的原件,Sampler

二、配置JDBC Connection Configuration

重要參數說明:

  • Variable Name:數據庫連接池的名稱,我們可以有多個jdbc connection configuration,每個可以起個不同的名稱,在jdbc request中可以通過這個名稱選擇合適的連接池進行使用。
  • Max Number of Connection: 數據庫最大鏈接數
  • PoolTimeout: 數據庫鏈接超時,單位ms
  • Idle Cleanup Interval (ms): 數據庫空閑清理的間隔時間,單位ms
  • Auto Commit:自動提交。有三個選項,true、false、編輯(自己通過jmeter提供的函數設置)
  •   Transaction Isolation
    事務間隔級別設置,主要有如下幾個選項:(對JMX加解密) 
    【TRANSACTION_NODE   事務節點 、
    TRANSACTION_READ_UNCOMMITTED  事務未提交讀、
    TRANSACTION_READ_COMMITTED   事務已提交讀 、
    TRANSACTION_SERIALIZABLE   事務序列化 、
    DEFAULT  默認、
    TRANSACTION_REPEATABLE_READ 事務重復讀、
  • Database URL:數據庫url,jdbc:mysql://主機ip或者機器名稱:mysql監聽的端口號/數據庫名稱, 如:jdbc:mysql://localhost:3306/test
  • JDBC Driver classJDBC驅動
  • username:數據庫登陸的用戶名
  • passwrod:數據庫登陸的密碼

 

下面是原文和翻譯:

 

(1) Variable Name Bound to Pool

 

 

 

Variable Name,數據庫連接池的變量名,之后JDBC request可以通過選擇不同的連接池名來選擇不同的數據庫連接

 

Variable name變量名稱:與JDBC Request的Variable name保持一致

 

原因:因為鏈接數據庫是需要在JDBC Connection Configuration中配置好的,然后賦予一個變量名稱,那么JDBC Request想要去訪問數據庫,就必須通過這個配置好的元件去鏈接,所以JDBC Reques就需要通過讀取JDBC Connection Configuration的變量中的信息,

 

那怎么讀取呢,JDBC Reques就需要用到這個變量了,就需要到名稱為mysql的元件中去應用。

 

(2) Connection Pool Configuration

 

Max Number of Connections    該數據庫連接池的最大連接數,一般可設置為0,意思是每個線程都使用單獨的數據庫連接,線程之間數據庫連接不共享
中文:池中允許的最大連接數。在大多數情況下,將其設置為0,這意味着每個線程將得到它自己的池,其中只有一個連接,即線程之間不共享連接。如果您真的想要使用共享池(為什么?),那么將max count與線程數相同,以確保線程不會相互等待。
原文:aximum number of connections allowed in the pool. In most cases, set this to zero (0) . This means that each thread will get its own pool with a single connection in it, i.e. the connections are not shared between threads. If you really want to use shared pooling (why?), then set the max count to the same as the number of threads to ensure threads don't wait on each other.

Max Wait (ms)   在連接池中取回連接最大等待時間
中文:如果在試圖檢索連接過程中(取回連接)超過所設置期限,連接池拋出一個錯誤
原文:ool throws an error if the timeout period is exceeded in the process of trying to retrieve a connection

Time Between Eviction Runs (ms)     疏散時間
中文:在空閑對象驅逐線程運行期間,可以休眠的毫秒數。當非正值時,將運行無空閑對象驅逐器線程。(默認為“60000”,1分鍾)(如果當前連接池中某個連接在空閑了time Between Eviction Runs Millis時間后任然沒有使用,則被物理性的關閉掉。)
原文:The number of milliseconds to sleep between runs of the idle object evictor thread. When non-positive, no idle object evictor thread will be run. (Defaults to " 60000 ", 1 minute)

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秒)
原文:Minimum amount of time a connection may sit idle in the pool before it is eligible for eviction by the idle object evictor, with the extra condition that at least minIdle connections remain in the pool. See BasicDataSource.html#getSoftMinEvictableIdleTimeMillis . Defaults to 5000 (5 seconds)

 

 

 

 

 

(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

 

 

 

  不同數據庫具體的填寫方式,可以參考下面的表格:

Datebase

Driver class

Database URL

MySQL

com.mysql.jdbc.Driver

jdbc:mysql://host:port/{dbname}

PostgreSQL

org.postgresql.Driver

jdbc:postgresql:{dbname}

Oracle

oracle.jdbc.driver.OracleDriver

jdbc:oracle:thin:user/pass@//host:port/service

Ingres (2006)

ingres.jdbc.IngresDriver

jdbc:ingres://host:port/db[;attr=value]

MSSQL

com.microsoft.sqlserver.jdbc.SQLServerDriver

或者

net.sourceforge.jtds.jdbc.Driver

jdbc:sqlserver://IP:1433;databaseName=DBname

或者

jdbc:jtds:sqlserver://localhost:1433/"+"library"

 

  填寫后大致如下:

 

三、配置JDBC Request

重要的參數說明:

  • Variable Name:數據庫連接池的名字,需要與JDBC Connection Configuration的Variable 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語句返回的結果

執行到這里,我們已經將數據從數據庫中原樣的查出來了,但具體如何之取出我們需要的數據呢,顯然,假如我們查詢的sql返回的只是一個數據,上面的方式已經可以滿足我們的需求的,如我們查詢數據的記錄數,

select count(*) from test

  查詢出來的結果就是我們需要的內容,或者通過正則表達式的獲取即可獲取我們的內容。

  但假如像上面那樣子,我們獲取出來的是多行數據,我們需要如何來對數據進行遍歷,只獲取出我們需要的數據呢?請看下面的分析。


免責聲明!

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



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