首页 > 解决方案 > 性能测试 - 多个 websocket 连接

问题描述

我需要测试服务器接收越来越多的 websocket 连接的“阻力”,通过 MQTT 发送数据。为此,我创建了一个带有“onLoad”指令的简单网页,以便在加载时,它通过 websocket 连接到服务器并开始接收数据。为了模拟(并增加 websocket 连接的数量),我想到了带有打开页面的 Loop 控制器的 JMeter。但是,我注意到当 JMeter 加载页面时,它不会在页面中建立 websocket(换句话说,它丢弃了“onLoad”)javascript 指令。我缺少一个特殊的 JMeter 配置吗?还有其他方法可以实现我想要的吗?非常感谢 - 克里斯蒂安

标签: htmlwebsocketjmeterperformance-testing

解决方案


根据JMeter 项目主页

JMeter 不是浏览器,它在协议级别工作。就 Web 服务和远程服务而言,JMeter 看起来像一个浏览器(或者更确切地说,是多个浏览器);但是 JMeter 并不执行浏览器支持的所有操作。特别是,JMeter 不执行 HTML 页面中的 Javascript。它也不像浏览器那样呈现 HTML 页面(可以将响应视为 HTML 等,但时间不包含在任何示例中,并且一次只显示一个线程中的一个示例)。

因此,JMeter 的HTTP 请求采样器完全忽略了您的onload 事件,因为它不执行任何功能。

如果您想对 websocket 后端进行负载测试,您需要使用JMeter WebSocket 采样器并使用相关采样器建立连接/发送有效负载。该插件可以使用JMeter Plugins Manager安装,有JMeter WebSocket Samplers - A Practical Guide文章和一些示例 JMeter 脚本,您可以将其用作参考


推荐阅读