1. 程式人生 > >Jmeter TCP socket介面測試(一)

Jmeter TCP socket介面測試(一)

1.tcp取樣器相關知識:

使用JMeter對套接字進行測試,有以下的選項可以做控制:
  1. TCPClient classname: 預設的org.apache.jmeter.protocol.tcp.sampler。TCPClientImpl, TCPClient只能實現基於文字格式的套接字應用的測試。隨JMeter提供的還有另外的兩個實現,分別是BinaryTCPClientImpl和LengthPrefixedBinaryTCPClientImpl,用於處理二進位制格式的資料,後文將對這兩個做詳細的介紹。
  2. ServerName or IP: 套接字伺服器應用的地址
  3. Port Number: 套接字伺服器應用的埠
  4. Re-use connection: 如果選中,連線會一直處於開啟狀態,否則讀取到資料之後就關閉
  5. Close connection: 如果選中,在TCP Sampler執行完畢之後就會被關閉
  6. SO_LINGER:該配置項用於控制在關閉連線之前是否要等待緩衝區中的資料傳送完成。如果SO_LINGER選項指定了值,則在得到關閉連線的請求之後還會等待指定的秒數以完成緩衝區中資料的傳送,在指定的SO_LINGER秒數完成後,關閉連線。因此,如果你把該選項設定成0,那麼所有連線在收到關閉連線的時候都會立即關閉,避免產生很多處於TIME_WAIT狀態的套接字。
  7. End of line(EOL) byte value:判斷行結束的byte值,如果你指定的值大於127或者小於-128,則會跳過EOL檢測。比如伺服器端返回的字串都是以回車符結尾,那麼我們可以將該選項設定成10。
  8. Connect Timeout:與伺服器套接字應用連線超時時間(毫秒)。
  9. Response Timeout:響應超時時間(毫秒),這個值的設定跟End of line(EOL) byte value有關係,如果End of line(EOL) byte value中的值設定不正確,會導致JMeter一直在等待無法結束,但是如果指定了Response Timeout這個值的話,在到達這個值的時候就關閉連線。
  10. Set NoDelay:是否使用Nagle演算法,是否需要使用該選項,需要跟實際的業務情況結合。
  11. Text to Send:傳送的文字,跟“CSV dataset config”一起使用能夠從檔案中直接讀取。
  12. Username和Password:這兩個選項在TCP相關的Sampler中都未使用,請忽略這兩個選項。

2.關於Jmeter的TCP介面測試,需要明確兩個問題:

第一發送給伺服器的資料格式,是文字形式還是十六進位制格式;

第二一條資料的結束符是什麼;

3.明確問題1後對Jmeter進行配置

(1).修改JMeter啟動配置,就是前文提到的指定BinaryTCPClientImpl適配 在jmeter.properties檔案中找到如下部分,修改一下 #---------------------------------------------------------------------------
# TCP Sampler configuration
#--------------------------------------------------------------------------- # The default handler class
#tcp.handler=TCPClientImpl
tcp.handler=BinaryTCPClientImpl 關於tcp.handler,jmeter支援的有三種模式:
根據要傳送的資料格式選擇對應的classname (2)設定結束符--->如果不設定,tcp會以流的形式,一直讀取,直到超時,報500錯誤 原始碼如下:
只有讀到了結束符,才會break出來;
若以文字形式傳送,且以\n作為結尾,EOL配置為10,文字新增換行符 4.若伺服器接到的資料沒有結尾符時,需要對Jmeter進行二次開發,覆寫TCPClient classname,來滿足測試的要求,請參考另一篇部落格Jmeter TCP socket介面測試(二)