使用 JMeter 进行连续流加载测试 websocket

问题描述 投票:0回答:2

JMeter中的WebSocket流仅针对一帧执行,我无法使用可用的jar加载测试连续流@https://bitbucket.org/pjtr/jmeter-websocket-samplers

Jmeter WebSocket jmx 当我尝试通过终端触发 WebSocket 请求时,它会传输输出/日志。但对于 JMeter,Websocket 仅针对一个框架运行。

使用端口 443 的 WSS 请求:

感谢您回答问题。请您解答我的一些疑虑:我正在尝试对客户端持续监听 WebSocket 的场景进行负载测试。

1 Using a jar file I am able to continuously stream the data when I hit the java jar in the terminal. I can see the data flowing



2. Now I try to replicate the scenario in JMeter, the sampler acts like a request/response, where the connection is lost after the response.



3. Now if I set a loop in JMeter, it does not satisfy the purpose of streaming. It will act as multiple requests sent to the same channel.



还在附加的图像链接中,选中了流连接的复选框,但它的作用类似于请求/响应。

循环是 WebSocket 流的唯一选择吗?

线程名称:线程组 1-1 示例开始:2017-04-27 17:21:40 IST 加载时间:1383 连接时间:0 延迟:0 字节大小:1065 已发送 字节:0 标头大小(以字节为单位):0 主体大小(以字节为单位):1065 示例 计数:1 错误计数:0 数据类型(“text”|“bin”|“”): 响应代码: 200 回复信息:

【执行流程】 - 打开新连接 - 使用响应消息模式“” - 使用断开模式“” - 等待服务器连接 60000 毫秒 - WebSocket 连接已打开 - 连接已建立 - 等待消息 60000 毫秒 - 接收帧#1(15 字节);匹配的响应模式 - 收到消息#2(15 字节);匹配的响应模式 - 保持流媒体连接打开

[变量] - 消息数:2

[问题]

响应标头:

示例结果字段:内容类型:数据编码:UTF-8

websocket jmeter streaming
2个回答
2
投票
(我无法发表评论,这对于第一部分来说更合适)

根据您帖子中的文字,您正在使用

https://bitbucket.org/pjtr/jmeter-websocket-samplers,但您发布的日志记录不是来自该插件,而是来自 Maciej Zaleski 的插件....

我不是 100% 确定“负载测试连续流”的含义,但如果您的意思是服务器只是将帧推送到客户端,则可以使用以前的插件进行测试。只需使用“单读采样器”设置一个循环...


-1
投票
感谢彼得在此话题上的回复。 我有一个非常相似的用例,只是想了解一件事:

如果我在“循环”中保留“单读采样器”,是否有可能在循环迭代之间丢失一些消息,或者是否有某种缓冲/流传输来确保迭代之间消息不会丢失和返回在下一个“单读采样器”中阅读?

提前感谢您对此的帮助。

更新:

正如 Peter 对这个答案的评论所预期的那样,我们确实看到帧是从输入流中一个接一个地读取的,没有任何丢失。

但是,我们观察到:

    不同的 WS 读取超时值对读取的影响非常不同
  1. 对于给定的连接,如果我们预计会收到 500 条消息,在这之间的某个时间,即使服务器确实推送了该消息(超时 = 7 秒),WS 也不会读取该消息(在 18 毫秒内),因此,最终读取计数为 499。可以看出,这种行为的极端取决于读取超时(即使消息是在超时内推送的)。
以前是否观察到过这种行为?您能想到任何解释来解释为什么会发生这种情况吗?任何有关此问题的解决方案/帮助都会有很大帮助,谢谢。

PS:我无法将此添加为评论,所以很抱歉在这里发布查询。

© www.soinside.com 2019 - 2024. All rights reserved.