• JMeter之Websocket测试


    上一篇:WebSocket初步的认识 

    通过上一篇,以及对websocket有个初步的了解,接下来学习如何在JMeter里进行websocket的通讯。

    websocket插件介绍

    如下图,在插件助手里搜索web,安装两个插件~ 安装完成后就可以看到取样器里增加了几个websocket的请求。

    • Websocket Close:用于正常关闭websocket连接;
    • Websocket Open Connection:建立连接不接受、不发送数据;
    • Websocket Ping/Pong:保持心跳;
    • Websocket Sampler:Websocket请求
    • Websocket Single Read Sampler:读取消息的采样器;
    • Websocket Single Write Sampler:用于发送消息的采样器;
    • Websocket request-response Sampler:建立连接,发送、接收消息;

    元件的使用场景:日常测试时,使用Websocket request-response Sampler就足够了,进行性能测试时,只关注读或者写,可以使用Websocket Single Read Sampler或者Websocket Single Write Sampler。

    Websocket request-response Sampler

    Connection,有两个单选,一个是使用已经建立的连接,如果选择这种,那么,在该取样器之前要使用 websocket opnen connection先连接;

    如果选择新建一个连接,则该取样器中,需要配置serverURL信息。

    serverURL中,首先是协议,下拉框有两个选项,ws( 端口80) 和 wss(端口443)相当于http和https的差别。

    server name or ip 就填写服务器的域名或ip地址;
    port 对应服务的端口;
    path 对应服务路径,可以用 /;
    data 就是发送的数据,支持两种,text文本,和binary 二进制;
    request data为发送的数据,当数据类型为文本式,可以带jmeter的参数,如果为binary 二进制时,则输入的为二进制内容。

    工具的配置就是这些,如果你只配置了websocket request-Response sampler 请求结束后,websocket连接不会关闭。

    但是会在下次运行时,GC(垃圾收集)会自动回收资源关闭连接,如果期望测试结束时,立马关闭,可以使用websocket close ;

    也可以修改jmeter.properties文件,设置:websocket.thread.stop.policy = wsClose;

    若设置为:websocket.thread.stop.policy=tcpClose则要在关闭jmeter时关闭连接。

    遇到的问题

    问题1:Websocket本身就是长连接,进行Websocket性能测试时多用户压测是一个什么概念?

    常规的HTTP压测,是靠多次发送请求与服务器建立连接给服务器压力,而Websocket是长连接,当多个用户与服务器连接时(只保持Ping/Pong),是不是就是对服务产生压力了?

    对也不对,通过上一篇 :WebSocket初步的认识 中得知,仅仅时保持连接即保持心跳时,因为本身通讯占用的资源很小(指的是发送的数据包非常小),对服务器消耗也很小了。这里性能测试主要测试的不是Websocket的保持连接数,而是服务器 读/写 时的业务处理能力。

    问题2:WARN e.l.j.w.RequestResponseWebSocketSampler: Sampler 'WebSocket request-response Sampler' is using wss protocol (with TLS) on port 80; this might indicate a configuration error

     原因:Websocket 的 ws 协议使用 80 端口;运行在TLS之上时,wss 协议默认使用 443 端口。其实说白了,wss 就是 ws 基于 SSL 的安全传输,与 HTTPS 一样样的道理。

    参考文档:

    1、jmeter如何测试websocket接口

    2、最强辅助Jmeter,测试WebSocket协议应用

  • 相关阅读:
    【Win11 搭建miniconda 的pytorch1.12环境】
    2024年MathorCup数学建模思路B题思路分享
    TypeScript核心篇——类(class)-可选参数-存取器-构造函数-静态属性方法-抽象类
    vue3新一代状态管理器 — pinia的学习与使用
    DEJA_VU3D - Cesium功能集 之 068-空间坐标系之箭头
    Java通用C# SM2加密解密
    Matlab中图形对象属性gca使用
    【NLP】情绪分析与酒店评论
    ROS2系列知识(3):环境配置
    2011年03月16日 Go生态洞察:Go朝着更高稳定性迈进
  • 原文地址:https://blog.csdn.net/u011072936/article/details/126167653