標簽(空格分隔): Jmeter
Sampler是性能測試過程中向服務器發送請求,記錄響應信息,記錄響應時間的最小單元。 Jmeter默認支持的請求
- Web - HTTP, HTTPS (Java, NodeJS, PHP, ASP.NET, …)
- SOAP / REST Webservices
- FTP
- Database via JDBC
- LDAP
- Message-oriented middleware (MOM) via JMS
- Mail - SMTP(S), POP3(S) and IMAP(S)
- Native commands or shell scripts
- TCP
- Java Objects
Http Request Sampler (HTTP請求)
Http請求用發送,接收Http/Https請求。
基本用法
-
web服務器信息:
-
協議:http 或則https(大小寫不明感)可以為空默認為http
-
服務器器名稱或則ip:http請求發的的目標服務器名稱或者IP地址。
-
端口:目標服務器端口,默認為 80.
-
http請求
-
方法:發送器http請求的法。GET,POST,PUT,PATCH
-
路徑:目標url路徑(不包括服務器地址和端口號)
-
內容編碼:內容編碼的方式,默認為iso8859.
-
自動重定向:如果選中該項,發送出的http請求后得到的響應是301/302時JMETER自動重定向到新頁面。默認不選中
-
跟隨重定向:
-
使用KeepAlive:當選中該選項時,Jmeter和目標之前使用keep-alive方式進行http通信,默認選中。
-
對對psot使用mutilpart/from-data:當發送http post請求是,使用mutilpart/from-data方式發送,默認不選中
-
與瀏覽器兼容的頭:
-
在請求中發送URL參數,對於帶參數的URL,Jmeter提供了一個簡單的對參數進行參數化的方式。用戶可以將URL中的所有參數設置在表中,表中的每一行是一個參數值對(對應url中parementrel=valuel)
-
消息體數據 http請求體中的的數據
-
文件上傳 在請求中發送文件。
構造http 請求
用戶中心游客登錄
- URL:/uc/v1/login/guest
- 請求方法:GET
- 參數: |參數名稱|類型|說明| |--|---|--| |appId|integer|項目appId,不是游戲服務器ID| |openId|string|自定義(注冊后玩家的openId、unionId)格式要求:32位字符串| |deviceId|string| 設備類型 1:iOS,0:Android|

游客綁定微信賬號
- URL:/uc/v1/wechat/bind
- 請求方法:PATCH
- 參數: |參數名稱|類型|說明| |--|---|--| |appId|integer|項目appId,不是游戲服務器ID| |openId|string|自定義(注冊后玩家的openId、unionId)格式要求:32位字符串| |gid|integer|玩家全局唯一標示| |unionId|string|玩家微信認證的unionid| |wechatAccessToken|string|玩家微信認證的accesstoken|
gid需要從游客登錄的返回中獲取,需要在在游客登錄請求中加入后置處理器,獲取gid

JDBC Connection Configuration 數據庫連接配置
數據庫連接配置器,用來連接數據庫,是一個連接池。 界面介紹 
-
Variable Name for created pool:數據庫連接池的名稱,我們可以有多個jdbc connection configuration,每個可以起個不同的名稱,在jdbc request中可以通過這個名稱選擇合適的連接池進行使用。
-
Max Number of Connections:連接池的最大連接數,在大多數情況下,將其設置為零(0)。這意味着每個線程將獲得其自己的池,其中包含單個連接,即線程之間不共享連接。如果你真的想使用共享池),那么將最大鏈接數設置為與線程數相同,以確保線程不會相互等待。
-
Max Wait (ms):最大超時間
-
Time Between Eviction Runs (ms) :空閑連接池清理的時間間隔。
-
Auto Commit:事務是否自動提價選項,比如Oracle執行一條更新操作,不Commit一下,數據不會更新到數據庫中的,這個選項幫我們自動提交。
-
Transaction Isolation:JDBC事務控制 數據庫的事務控制ADIC傳送門
-
TRANSACTION_NONE:不支持的事務,TRANSACTION-NONE=0
-
TRANSACTION_READ_UNCOMMITEED:允許臟讀,不可重復讀和幻讀
-
TRANSACTION_READ_COMMITEED:禁止臟讀,允許不可重復讀和幻讀
-
TRANSACTION_REPEATABLE_READ:禁止臟讀和不可重復讀,允許幻讀
-
TRANSACTION_SERILIZABLE:禁止臟讀,不可重復讀和幻讀
-
DEFAULT:JMETER設定的。默認值是1,其實是TRANSACTION_READ_COMMITEED 禁止臟讀,允許不可重復讀和幻讀。
-
什么是臟讀,不可重復讀,幻讀
臟讀:一個事務讀取另外一個事務未提交的數據。 不可重復讀:一個事務再次讀取之前的數據時,這個數據已經被另外一個事務修改。 幻讀:一個事務重新執行一個查詢,返回的記錄包含了其他事務提交的新紀錄。
-
-
Test While Idle:測試池的空閑連接,請參閱BasicDataSource.html#getTestWhileIdle。查詢驗證。
-
Soft Min Evictable Idle Time(ms):
-
Validation Query:驗證SQL的語法
-
Database URL:數據庫地址,以下為不同數據庫的連接方式
MySQL Driver class com.mysql.jdbc.Driver Database URL jdbc:mysql://host[:port]/dbname PostgreSQL Driver class org.postgresql.Driver Database URL jdbc:postgresql:{dbname} Oracle Driver class oracle.jdbc.OracleDriver Database URL jdbc:oracle:thin:@//host:port/service OR jdbc:oracle:thin:@(description=(address=(host={mc-name})(protocol=tcp)(port={port-no}))(connect_data=(sid={sid}))) Ingress (2006) Driver class ingres.jdbc.IngresDriver Database URL jdbc:ingres://host:port/db[;attr=value] Microsoft SQL Server (MS JDBC driver) Driver class com.microsoft.sqlserver.jdbc.SQLServerDriver Database URL jdbc:sqlserver://host:port;DatabaseName=dbname Apache Derby Driver class org.apache.derby.jdbc.ClientDriver Database URL jdbc:derby://server[:port]/databaseName[;URLAttributes=value[;…]] -
JDBC Driver class:數據庫類型,數據庫的驅動包需要放到
/lib目錄下,使用mysql依賴mysql-connector-java-8.0.13.jar下載地址 -
Username:用戶名
-
Password:密碼
JDBC Request JDBC 請求
用來向數據庫發送請求
界面介紹 
-
Variable Name of Pool declared in JDBC Connection Configuration(必須) :連接池綁定的JMeter變量的名稱。這必須與JDBC連接配置的“變量名稱”字段一致。
-
Query Type:查詢類型,根據語句設置查詢的類型
- Select Statement:執行查詢語句的時候使用。可以使用
${}引入參數,不可使用占位符進行參數化 - Update Statement :執行更新操作的時候用到,包括插入與修改。可以使用
${}引入參數,不可使用占位符進行參數化。 - Callable Statement:對應JDBC規范中的CallableStaenent對象,它為所有的DBMS提供了一種以標准形式調用存儲過程的方法,白話就是可以調用存儲過程,也就是可以有入參,有占位符。可以使用
${}引入參數,也可以使用占位符引入參數。 - Prepared Select Statement:預編譯查詢語句,與Select Statement相比效率更好,可以使用
${}引入參數,可以使用占位符引入參數。 - Prepared Update Statement:預編譯更新語句,包括查詢與插入,與Update Statement 效率更好,支持占位符引入參數。 可以使用
${}引入參數,可以使用占位符引入參數。 - Commit:當前連接狀態中的內容提交,查詢語句中的SQL在執行完成后馬上提交,使用該項時JDBC Connection Configuration 中的 Auto commint 選項為False。可以使用
${}引入參數,可以使用占位符引入參數。 - Rollback:當前連接狀態中的內容可回滾。可以使用
${}引入參數,可以使用占位符引入參數。 - Autocommit(false):指明不要自動提交,如果JDBC Connection Configuration 中的 Auto commint為true 覆蓋該選項。可以使用
${}引入參數,可以使用占位符引入參數。 - Autocommit(true):指明允許自動提價。可以使用
${}引入參數,可以使用占位符引入參數。 - Edit :變量應用,引用的為上述的任意一個變量
- Select Statement:執行查詢語句的時候使用。可以使用
-
SQL Query SQL查詢語句,
不需要輸入行尾的分好 -
Parameter values:參數值,多個值用
,分割 -
Parameter types:參數類型,
INTEGER, DATE, VARCHAR, DOUBLE -
Variable Names:SQL的執行語句往往返回的是一個數據集,我們可以把它保存的變量中,讓后面的元件調用。
-
Result variable name :上面的 Variable Names中額變量是個數與隊列對應的,Result variable name創建一個數組,保存所有返回的結果。
-
Query timeout:定義查查詢時間
-
Handle result set:定義如何處理由callable- statements語句返回的結果
實例1 連接mysql數據庫 ,並查詢數據庫的表
-
連接mysql數據庫,
- 定義數據庫連接池名稱:MYSQL
- URL:
jdbc:mysql://rm-wz955w1jr2dnj6u9bo.mysql.rds.aliyuncs.com:3306/majiang - JDBC Driver class:com.mysql.jdbc.Driver
- Username:
- Password:

-
查詢全部表

-
查詢結果

實例2 對查詢數據進行參數化
-
使用${}引入參數 用戶自定義的變量添加用戶昵稱變量
nickname
在查詢語句中使用通過${nickanme}引入變量, 注意加括號,不然報錯
查詢結果 
-
通過占位符
?引入變量 Parameter values:hunan%, 9586 Parameter types:VARCHAR,INTEGER 查詢語句select Nike, id, unionid, openid from user where Nike like ? and openid=?
查詢結果 
實例3引用返回的的結果
-
通過設置Variable Names來保存變量 查詢語句
select Nike, id, unionid, openid from user where Nike like ? and openid<?我們的查詢語句中指定了4個返回的值,也就是說會返回4個列。在Variable Names 設置
A,B,C,D。A保存第一列的數據,B保存第二列的數據以此類推。那么如下變量會被設置為。A_#=2 (總行數) A_1=第1列, 第1行 A_2=第1列, 第2行 C_#=2 (總行數) C_1=第3列, 第1行 C_2=第3列, 第2行如果返回結果為0,那么
A_#和C_#會被設置為0,其它變量不會設置值。如果第一次返回6行數據,第二次只返回3行數據,那么第一次那多的3行數據變量會被清除。可以使用可以使用${A_#}, ${A_1}...來獲取相應的值
使用Beanshell Sampler 輸出結果
日志結果
請求返回的結果 
-
通過Result variable name保存結果,Result variable name會將返回的結果保存為數組,通過
vars.getObject("result").get(0).get("Nike")獲取值
輸出語句
執行結果
在http元件中使用結果,通過函數__jexl3()執行vars.getObject("result").get(0).get("Nike")
TCP Sampler Tcp控制元件
Tcp用來與指定服務器建立TCP/IP連接,發送文本,等待服務器響應。
界面介紹 
- TCPClient classname 需要使用的Tcp客戶端,Jmeter提供了三個TCPClient,但是因為不同的傳輸編碼方式,所以測試TCP的時候大部分情況需要自己編寫TCPClinet。
- TCPClientImpl
- BinaryTCPClientImpl
- LengthPrefixedBinaryTCPClientImpl
- ServerName or IP:服務器名稱或則TCP服務器地址
- Port Number:服務的端口號
- Re-use connection:復用連接,勾選后將保持連接,不勾選將在讀取數據后關閉連接
- Close connection:關閉連接,勾選后,在Tcp Sampler運行結束后關閉連接
- Set NoDelay:勾選后使用納格算法(Nagle's algorithm)
- SO_LINGER:創建套接字的時候指定延遲時間啊(已秒為單位),如果設置為0,可以防止大量套接字處於TIME_WAIT狀態。
- End of line(EOL) byte value:行尾的字節值,將值設置為-128~+127之外的值可以跳過檢查。可以在
jmeter.properties中設置eolByte的屬性,如果在TCP Sampler Config和jmeter.properties同時設置該了該屬性,會使用TCP Sampler Config中的設置 - Connect Timeout:連接超時
- Response Timeout:響應超時
- Text to Send:需要發送的文本
- Login User:用戶名,默認不使用
- Password:密碼,默認不使用
實例1,發送簡單的文本信息 Classname:TCPClientImp
返回的信息 








查詢結果
使用Beanshell Sampler 輸出結果
請求返回的結果
輸出語句
在http元件中使用結果,通過函數