遇到Websocket就不会测了?别慌,学会这个Jmeter插件轻松搞定

01websocket简介及优势

1.websocket简介:

websocket 是一种双向通信协议,在建立连接后,websocket服务端和客户端都能主动向对方发送或者接收数据,而在http协议中,一个request只能有一个response,而且这个response也是被动的,不能主动发起。

2.websocket优势:

当服务器完成协议升级后(HTTP->Websocket),服务端就可以主动推送信息给客户端啦。

就变成了这样,只需要经过一次HTTP请求,就可以做到源源不断的信息传送了。(在程序设计中,这种设计叫做回调,即:你有信息了再来通知我,而不是我傻乎乎的每次跑来问你)

这样的协议解决了上面同步有延迟,而且还非常消耗资源的这种情况。

02WebSocket插件安装及使用

1、安装ws插件,并重启jmeter

2、WebSocket的使用

重启jmeter 后,添加线程组,右键添加取样器,会出现WebSocket 相关插件

(1)不勾选streaming

(2)勾上streaming connection

(3)设置一个测试(添加一个loop controller,设置循环次数为3)

循环中的sampler都勾选了streaming,最后一个sampler没有勾选此选项,结果中可以看出:在loop controller中的sampler使用的是一个连接,在loop外面的这个sampler会打开一个新的连接,可以得出一个结论,实际上,当勾选了streaming connection时,不仅会在结束会话后保留连接,而且勾选了的sampler会在有可用连接是直接使用,而没有勾选的sampler即使存在可用连接也会重新打开一个新的连接。因此,如果是要在一个会话中发送多条消息,请勾选这个streamingconnection

(4)输入request data 查看结果

03常规选项解释

1、WebServer

Server Name or IP:WebSocket发送的目标服务器的地址或者名称

Port Number:WebSocker服务器监听的端口号。(一般是HTTP 80端口,可以通过WireShark数据包得到)

2、Timeout

Connection – 发送一个连接请求后,Jmeter等待连接完成的最长时间,单位是毫秒。

Response - 对响应消息的最大等待时间。

3、WebSocket Request

Implementation – 只支持RFC6455(v13) ,WebSocket协议标准的最新版。

Protocol – 有ws与wss之分, ws前缀是WebSocket连接的辨别标识,wss前缀是WebSocket安全连接的辨别标识。根据自己的实际情况填写

Streaming Connection – 选择这个TCP session要不要保持,如果勾上标识连接会一直存在,如果没有勾上,那么得到第一次响应后该链接就会被关闭。

Request data:填入将要发送的请求,要跟开发沟通好,这个是什么格式的消息。

4.WebSocket Response

Response Pattern – 采样器将等待含有该标识的消息并继续通信(或者直到timeout,该连接关闭)

Close Connection Pattern – 如果服务器返回的消息含有这样的字符,就结束会话。

Message Backlog – 定义服务器返回消息保留的最大长度。

04WebSocket解决服务器上消耗资源的原理

其实我们所用的程序是要经过两层代理的,即HTTP协议在Nginx等服务器的解析下,然后再传送给相应的Handler(PHP等)来处理。

简单地说:我们有一个非常快速的接线员(Nginx),他负责把问题转交给相应的客服(Handler)。

本身接线员基本上速度是足够的,但是每次都卡在客服(Handler)了,老有客服处理速度太慢,导致客服不够。

Websocket就解决了这样一个难题,建立后,可以直接跟接线员建立持久连接,有信息的时候客服想办法通知接线员,然后接线员在统一转交给客户。这样就可以解决客服处理速度过慢的问题了。

同时,在传统的方式上,要不断的建立,关闭HTTP协议,由于HTTP是非状态性的,每次都要重新传输identity info(鉴别信息),来告诉服务端你是谁。虽然接线员很快速,但是每次都要听这么一堆,效率也会有所下降的,同时还得不断把这些信息转交给客服,不但浪费客服的处理时间,而且还会在网路传输中消耗过多的流量/时间。

Websocket只需要一次HTTP握手,所以说整个通讯过程是建立在一次连接/状态中,也就避免了HTTP的非状态性,服务端会一直知道你的信息,直到你关闭请求,这样就解决了接线员要反复解析HTTP协议,还要查看identity info的信息。

同时由客户主动询问,转换为服务器(推送)有信息的时候就发送(当然客户端还是等主动发送信息过来的…),没有信息的时候就交给接线员(Nginx),不需要占用本身速度就慢的客服(Handler)了。

05chrome查看WebSocket

你可能感兴趣的:(遇到Websocket就不会测了?别慌,学会这个Jmeter插件轻松搞定)