首页 > 其他分享 >docker jmeter分布式压测部署 jmeter websocket压测

docker jmeter分布式压测部署 jmeter websocket压测

时间:2024-01-16 14:03:57浏览次数:29  
标签:__ websocket 变量 压测 循环 格式 jmeter

测试场景:

1.多名用户加入房间。

2.房间人数为固定人数(比如4人) 

3.有人进入时,进入用户会收到反馈当前房间人员列表。

4.其他人会收到反馈新加入用户的信息消息。

5.当人数已满时,会自动推送消息给所有人。

6.在人满后,每个人需要按固定序列,发送消息。

7.所有人发送特定消息后,推进房间状态,返回新的一组信息。

 

jmeter的逻辑结构

建立连接

循环1开始

  进入房间

  循环2开始

    接受消息

    解析消息

    if(消息格式符合条件1)

      执行动作1

    if(消息格式符合条件2)

      执行动作2

      设置循环2控制变量,跳出循环

    ...

  循环2结束

 循环1结束

 

 

 

在整个编辑过程中,踩了几个小坑。

1.用户自定义变量 不可修改

问题场景:在控制循环2的跳出条件时,直接使用了【用户自定义变量】来定义控制循环2的变量,结果,总是无法正确触发跳出循环。查询资料才知道【用户自定义变量】是会只读一次的类型。

解决方案:修改为【用户参数】,解决问题。

2.while循环和if判定的条件格式

问题场景:同样是用于条件格式,只有if强调了需要使用 __jexl3() 来计算语句逻辑,最终必须为true格式。

然后在实际使用中发现,while的判断也需要类似的需求。

最初填写的内容为  ${x}==a  ,此处由于  ${x} 不为 null 或false,就直接验证为成功了。

之后尝试修改 ${x}的值,仍然无法正确跳出循环,再加上问题1,导致浪费了很多时间。

解决方案:通过修改为 ${__jexl3(${notInRoom}==1,)},强制逻辑计算,解决手问题。

3.变量格式不一致,导致的判断异常

问题场景:同样是if判断,在判断中,由于字符变量的表现格式,在jmeter和java中的差异导致。

原本的判断类型为变量 stage 的值是否为字符串 settle。开始使用 ${__jexl3( ${stage} == settle,)},总是无法正确获取判断结果。

解决方案:修改两侧格式为字符串,${__jexl3( "${stage}" == "settle",)},解决问题。

4.固定定时器的延时状态会导致接受消息的时机被错过。

问题场景:原本为了放缓代码的刷新速度(调试阶段,太多了看不过来),在循环中添加了【固定定时器】延时。

结果在延时的过程中,经常会丢掉一些关键信息,导致本地逻辑无法继续。

解决方案:加长 response timeout的时长,代替延时

标签:__,websocket,变量,压测,循环,格式,jmeter
From: https://www.cnblogs.com/R-bear/p/17967498

相关文章

  • 【JMeter】jmeter 操作 mysql 数据库
    一、下载驱动包二、JDBC连接配置三、JDBCRequest1、单条查询语句2、多条查询语句3、增删改语句4、参数化sql语句5、占位符语句 本文内容基于如下测试环境:JMeter4.0版本Win7系统mysql-connector-java-5.1.7-bin.jar不同环境下可能会有不一致的地方。......
  • JMeter测试WebSocket的经验总结
    最近有一个微信聊天系统的项目需要性能测试,既然是测试微信聊天,肯定绕不开websocket接口的测试,首选工具是Jmeter,网上能搜到现成的方法,但是网上提供的jar包往往不是最新的,既然是用最新版本的Jmeter4.0,那么所依赖的插件jar包也应该追求新的。所以提供了以下链接供大家下载(甚至连源码......
  • jmeter jdbc操作myql数据库及mysql驱动下载
     mysql驱动下载https://dev.mysql.com/downloads/connector/j/   1、先安装mysql的驱动mysql-connector-java-5.1.7-bin.jar配置jdbc的connectionconfigurationDatabaseUrl:jdbc:mysql://xxx.xxx.xxx.xxx:3306/test?allowMultiQueries=true&serverTimezone=UTC&c......
  • java调用jmeter集群服务压力测试 jmeter数据库压测
    目录〇、前言。一、jmeter工具安装。二、数据库驱动插件jar包安装。三、脚本开发与调试。四、加压设置。五、数据监听。  正文〇、前言。依据云栖大会项目部分数据库压测经验编写。一、jmeter工具安装。1、Apache官网下载地址:https://jmeter.apache.org/download_j......
  • jmeter压测网站、数据库、接口及分布式压测
    Jmeter是apache组织开发的基于java的压力测试工具。Jmeter可以用于对服务器、网络活对象模拟巨大的负载,来自不同压力类别下测试他们的强度和分析整体性能。另外,jmeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活......
  • JMeter-JDBC,连接数据库增、删、改、查操作
     1、Callablestatement这是一个可调用语句类型,只要语法正确,任何语句,再多的条数都能支持,所以查询或者插入数据,进行多个sql语句操作,那么就要选择Callablestatement。插入多条sql语句,则要现在Callablestatement。  上面是插入单条数据,使用不方便,下面就行参数化1.加一......
  • jmeter入门:数据库压力测试全解析
    一.下载安装下载地址https://jmeter.apache.org/download_jmeter.cgi解压,打开apache-jmeter-5.2.1\binjmeter.bat即可。 二.配置jmeter1.添加线程组其中参数为:线程数:相当为50个用户ramp-up:每秒增加的线程数0相当于并发循环次数:emmm....2.配置jdbc以下选项需......
  • Jmeter对数据库做压力测试,完整过程
    Jmeter对数据库做压力测试一、环境:apache-jmeter-5.0,Oracle11g、windows7、jdk1.8、ojdbc14-10.2.0.2.0.jar二、操作配置:2.1、启动Jmeter Jmeter初始化界面.png  2.2、界面切换到中文界面切换语言.png  中文界面.png    2.3、在项目上添加一个线程组 ......
  • Django中安装websocket
    完整代码:https://gitee.com/mom925/django-system项目结构:先安装所需库:pipinstallchannels下面将websocket作为插件一样的只需要引入配置的结构asgi.py文件http请求不变、修改websocket请求调用路径importosimportdjangofromchannels.httpimportAsgiHandlerfr......
  • 41. 干货系列从零用Rust编写负载均衡及代理,websocket与tcp的映射,WS与TCP互转
    wmproxywmproxy已用Rust实现http/https代理,socks5代理,反向代理,静态文件服务器,四层TCP/UDP转发,七层负载均衡,内网穿透,后续将实现websocket代理等,会将实现过程分享出来,感兴趣的可以一起造个轮子项目地址国内:https://gitee.com/tickbh/wmproxygithub:https://github.com/......