1.在線程組中添加“TCP取樣器”
2.填寫數據
以下截圖是必須配置的
TCPClient classname: 填寫TCP報文格式(有三類),默認前綴:org.apache.jmeter.protocol.tcp.sampler.
- TCPClientImpl:普通文本傳輸,可設置他的編碼格式(eg:json串)
- BinaryTCPClientImpl:十六進制報文(常用)
- LengthPrefixedBinaryTCPClientImpl:繼承BinaryTCPClientImpl類,並在BinaryTCPClientlmpl前面增加兩個字節數據長度。
Target Server:填寫正確的IP,和端口
Timeouts:最大連接時間和響應時間,一旦超時就被當做失敗。(一般不設置)
Re-use connection:TCP長連接,一個線程里,復用這個連接(常用)
End of line(EOL) byte value:響應數據的最后2位,轉換為10進制的值。取值區間[-128,127]
- 因為TCP長連接是不會斷開的,我們需要從響應數據來判斷並告知TCP取樣器這次請求已經獲得了數據/響應成功,然后運行其他線程
-
例如:響應數據為“F000”,最后2位是“00”,所以這里填入“0”
-
如果不知道返回數據,可以調測。因為沒有設置EOL所以在運行后,自行點擊stop。然后在“查看結果樹”的響應數據中查看數據。
-
要發送的文本:這個文本需要開發提供
- 坑1:十六進制數之間不能有空格(報錯:Response message: java.lang.IllegalArgumentException: Hex-encoded binary string contains an uneven no. of digits)
- 坑2:不能有換行(報錯:Response message: java.lang.IllegalArgumentException: Hex-encoded binary string contains an uneven no. of digits)
3.jmeter屬性配置文件修改
依據當前采用的報文格式,修改
#tcp.handler=TCPClientImpl
#tcp.handler=BinaryTCPClientImpl
#tcp.handler=LengthPrefixedBinaryTCPClientImpl
4.單線程測試通過后,設置並發量,啟動查看測試結果