websocket 性能压测

文章介绍了如何使用JMeter插件jmeter-websocket-samplers进行WebSocket测试,关注点在于建立长连接的并发考量,包括连接数、消息处理量,并讨论了自收自发和甲发乙收两种模式下的实现策略,以及如何处理并发压力和消息丢失问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

工具: Jmeter, 用到插件jmeter-websocket-samplers

要求:

每个线程建立一个长连接,中间不停的收发消息消息数也是并发考量点。一共两个考量点,连接同时在线数,每个连接接受/发送的消息处理数。

备注:

本次例子中连接不必要求建立连接过程的强并发,只是需要考量在一定数量的连接下,系统消息的处理能力,所以在创建连接的过程可以是阶梯式的创建,等所有连接创建好后再进行消息的发送/接收。

一, 自发自收型:

自收自发型比较简单

1, 线程中中添加 WebSocket Open Connection, 建立长连接

2, 添加循环控制器

3,再循环控制器中添加 WebSocket Request-Response Sampler 选择使用已建立的连接,并设置发送的消息信息以及响应断言

4,循环之外关闭连接

二,甲发乙收型

发给第三方收稍微复杂点。首先要清楚一个概念,发消息的连接和收消息的连接必须同时在线时,这一组消息才会被成功处理,比如甲为消息发送方,发消息给乙, 如果甲发送消息的时候,乙还没有建立连接已经错过甲发送的消息了,等乙再建立连接时也无法再收到甲之前发送过的消息了,只能接收建立连接之后甲发送的消息。

另外如果一个连接在长时间内一条消息都没有发送,只是收消息的话,会被自动关掉, 所以为了能够顺利进行压测,乙在接收消息的同时需要给一段时间发送一条消息以免被迫下线。

1, 首先新建两个线程一个用来放甲方专门发送消息的,一个方乙方专门验证收消息的。为了减小创建连接的压力将甲乙创建连接的时间点错开,且设置20-30秒内完成连接即可,另为了所有连接在线后再开始接收、发送消息,这里再建立连接后添加一个同步定时器。

0

2,添加计数器,和循环控制器. 计数器用来放在消息体中区分不通的消息,好断言判断收到的消息时正确的

3,循环控制器中添加接收、发送消息的sampler,

比较麻烦的点:

连接并发量大的时候,系统支撑不了那么大的并发连接,实际也不存在这种情况需要错开连接,但是又得保证发送方和接收方得连接同时建立后,才开始收发消息,至少发消息要等到连接都建立后,不然会导致消息丢失,整个压测得结果就会收到影响。所以错开延时时间以及Ramp-up得时间需要根据实际情况调整

另,接收消息得超时时间可以设置大点,以防消息延迟,或者再发送得时候刚好错过接收,这里做了2次重试处理,即:第一次断言是否收到消息n时,失败了收到得时消息n-1,那么有两次重试得机会直到成功。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值