Jmeter對基於websocket協議的壓力測試

  近期項目須要對基於websocket的協議進行壓力測試。做爲小白的我,聽到這樣的消息,首先先去了解這個協議,而後肯定使用的工具。html

    1、websocket協議介紹python

    先簡單介紹一下這個協議。web

    首先,Websocket是一個持久化的協議,相對於HTTP這種非持久的協議來講。
簡單的舉個例子吧,用目前應用比較普遍的PHP生命週期來解釋。
    HTTP的生命週期經過Request來界定,也就是一個Request 一個Response,那麼在HTTP1.0中,此次HTTP請求就結束了。
在HTTP1.1中進行了改進,使得有一個keep-alive,也就是說,在一個HTTP鏈接中,能夠發送多個Request,接收多個Response。
可是請記住 Request = Response , 在HTTP中永遠是這樣,也就是說一個request只能有一個response。並且這個response也是被動的,不能主動發起。
    首先Websocket是基於HTTP協議的,或者說借用了HTTP的協議來完成一部分握手。
在握手階段是同樣的
    首先咱們來看個典型的Websocket握手(借用Wikipedia的。。安全

    WebSocket握手協議

一、客戶端握手請求(注意:鍵值之間有一個空格,行間有換行符號0x13x10或者說\r\n)服務器

 

[python] view plain copywebsocket

  1. GET /WebSocket/LiveVideo HTTP/1.1  
  2. Upgrade: WebSocket  
  3. Connection: Upgrade  
  4. Host: localhost:8080             (客戶端請求主機)  
  5. Origin: http://127.0.0.1         (來源網頁地址)  
  6. Sec-WebSocket-Key1: 23 asdfJKj,asdjk  
  7. Sec_WebSocket-Key2: wewerw234 jij998  
  8. 0x13x10 + 8個字節Sec_WebSocket-Key3值,沒有鍵名(注意,這裏的0x13x10的額外的,也就說有兩個連續的0x13x10)  


二、服務端握手回覆session

 

[python] view plain copyapp

  1. HTTP/1.1 101 Web Socket Protocol Handshake  
  2. Upgrade: WebSocket  
  3. Connection: Upgrade  
  4. Sec-WebSocket-Origin: http://127.0.0.1     (來源網頁地址)  
  5. Sec-WebSocket-Location: ws://localhost:8080/WebSocket/LiveVideo  

    2、Jmeter測試webocket協議socket

Jmeter自己不支持websocket協議的,因此須要安裝第三方的插件還有6個依賴包。連接: http://pan.baidu.com/s/1kV8QmN1 密碼: hx2v  ide

安裝方式很簡單,解壓完成之後直接放到jmeter的\lib\ext\目錄下。而後重啓Jmeter就OK了。

 

而後再採樣那裏就能夠看到websocket了

 

接下來看看websocket的頁面

解釋一下各項的意思

一、WebServer
(1)Server Name or IP:WebSocket發送的目標服務器的地址或者名稱
(2)Port Number:WebSocker服務器監聽的端口號。(通常是HTTP 80端口,能夠經過WireShark數據包獲得)


二、Timeout: 
(1)Connection – 發送一個鏈接請求後,Jmeter等待鏈接完成的最長時間,單位是毫秒。
(2)Response - 對響應消息的最大等待時間。


三、WebSocket Request
(1)Implementation – 只支持RFC6455(v13) ,WebSocket協議標準的最新版。
(2)Protocol – 有ws與wss之分,  ws前綴是WebSocket鏈接的辨別標識,wss前綴是WebSocket安全鏈接的辨別標識。根據本身的實際狀況填寫
(3)Streaming Connection – 選擇這個TCP session要不要保持,若是勾上標識鏈接會一直存在,若是沒有勾上,那麼獲得第一次響應後該連接就會被關閉。
(4)Request data:填入將要發送的請求,要跟開發溝通好,這個是什麼格式的消息。


4.WebSocket Response
(1)Response Pattern – 採樣器將等待含有該標識的消息並繼續通訊(或者直到timeout,該鏈接關閉)
(2)Close Connection Pattern – 若是服務器返回的消息含有這樣的字符,就結束會話。
(3)Message Backlog – 定義服務器返回消息保留的最大長度。

 

3、Jmeter測試

找個環境測試一下http://www.websocket.org/echo.html  

運行而後查看結果就OK了。

相關文章
相關標籤/搜索