如何用JMeter+MQTT插件模拟负载均衡测试4台无负载均衡服务器?
实现方案:用JMeter+MQTT插件完成多节点均匀负载测试
完全可以实现你的需求,而且不需要依赖JMeter的Remote Start功能(你对它的理解没错,它是用来分布式压测单个目标的,不适合多节点分发场景)。具体实现步骤如下:
用CSV配置实现节点轮询/随机分发
- 把4台服务器的MQTT连接地址(比如
tcp://server1:1883、tcp://server2:1883等)整理成一个CSV文件,每行一个地址。 - 在JMeter里添加
CSV Data Set Config,配置读取这个CSV文件,设置Recycle on EOF为True,Stop thread on EOF为False,Sharing Mode选All threads。这样每个线程会按顺序循环获取不同的服务器地址。 - 如果想要随机分发,可以在CSV配置里勾选
Random order,让线程随机挑选服务器地址。
- 把4台服务器的MQTT连接地址(比如
配置MQTT采样器绑定动态地址
- 确保你已经安装了JMeter的MQTT插件(不是内置插件,但通过JMeter插件管理器一键就能安装)。
- 添加
MQTT Publisher采样器,在Server URL字段里引用CSV配置里的变量(比如${mqtt_server},变量名和CSV配置里的一致)。这样每个线程启动时,会自动连接到分配的服务器并发送消息。
调整线程数保证均匀施压
- 把线程组的线程数设置为4的倍数(比如40、80),这样每个服务器会分到等量的线程,实现均匀的消息分发。如果需要不同的压力比例,也可以调整CSV里地址的重复次数(比如想给某台服务器多一倍压力,就把它的地址在CSV里写两次)。
验证分发效果
- 添加
Summary Report,在Group by选项里选择Sample Label或者自定义变量(比如把服务器地址作为采样器的标签),就能直观看到每个节点的请求量是否均匀。 - 可以添加
Response Assertion,检查MQTT消息的发送状态,确保所有节点的消息都发送成功。
- 添加
总结:JMeter没有内置的多节点负载均衡分发插件,但通过自带的CSV配置元件+MQTT插件,完全能实现你需要的消息均匀分发和负载施压需求,不需要额外部署负载均衡器。
内容的提问来源于stack exchange,提问作者mohammadreza
相关产品推荐
相关产品推荐

