MQTT性能分析

简介: MQTT性能分析

生产者:

#include <iostream>
#include <string>
#include "mqtt/async_client.h"
const std::string SERVER_ADDRESS = "tcp://broker.example.com:1883";
const std::string CLIENT_ID = "publish_client";
const std::string TOPIC = "test/topic";
const int QOS = 1;
class mqtt_callback : public virtual mqtt::callback {
public:
    void connection_lost(const std::string& cause) override {
        std::cout << "\nConnection lost." << std::endl;
        if (!cause.empty())
            std::cout << "Cause: " << cause << std::endl;
    }
    void delivery_complete(mqtt::delivery_token_ptr token) override {}
};
int main(int argc, char* argv[]) {
    mqtt::async_client client(SERVER_ADDRESS, CLIENT_ID);
    mqtt_callback callback;
    client.set_callback(callback);
    mqtt::connect_options connOpts;
    connOpts.set_clean_session(true);
    try {
        client.connect(connOpts)->wait();
        for (int i = 0; i < 100000; i++)
        {
            std::string message = std::to_string(i);
            mqtt::message_ptr pubmsg = mqtt::make_message(TOPIC, message);
            pubmsg->set_qos(QOS);
            client.publish(pubmsg)->wait();
        }
        client.disconnect()->wait();
    }
    catch (const mqtt::exception& exc) {
        std::cerr << "\nError: " << exc.what() << std::endl;
        return 1;
    }
   return 0;
}

测试发现推送数据量比较大的时候,消费端消费的数据不及时。分析:wait()函数是个阻塞函数,会等待服务器返回ack消息后生产者才会往下继续执行,发送下一条指令。使用wireshark抓包可以看出。

临时解决方案:删除wait()函数,不需要等待服务器的ack返回。

相关实践学习
RocketMQ一站式入门使用
从源码编译、部署broker、部署namesrv,使用java客户端首发消息等一站式入门RocketMQ。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
2月前
|
监控 NoSQL MongoDB
EMQ
|
10月前
|
消息中间件 监控 网络协议
MQTT 性能测试入门:常见测试场景和指标
探讨常见的测试场景和用于评估MQTT Broker性能的关键指标。通过这些技术和见解,优化您的系统可靠性和物联网基础设施。
EMQ
375 0
MQTT 性能测试入门:常见测试场景和指标
|
11月前
|
缓存 测试技术 数据库连接
如何正确进行API性能测试并提高可靠性
由于高传入流量导致 Web 应用程序失败的案例很多。这些主要是由于系统复杂、测试不充分、对系统依赖性了解不足、系统过载、资源耗尽以及复杂的故障恢复例程。 我们可以采取必要的步骤来避免故障,并通过执行性能测试更好地了解应用程序的局限性。
|
SQL 监控 Java
02 性能分析之解决方案
02 性能分析之解决方案
|
测试技术 数据库 UED
06 性能分析之通过标准
06 性能分析之通过标准
|
算法 固态存储 Java
性能测试 操作系统性能分析思路总结
性能测试 操作系统性能分析思路总结
232 0
|
SQL 存储 缓存
性能分析优化的道与术
如果网络不稳定,也会导致RT的曲线抖动较为剧烈,产生毛刺甚至丢包,这个时候P90/P99的数值也可能变大。因此稳定和足够的网络带宽,对系统的性能来说是很重要的。
性能分析优化的道与术
EMQ
|
存储 物联网 测试技术
MQTT X 1.9.0 发布:开箱即用的 bench 命令,MQTT 性能测试更便捷
近日,MQTT 5.0客户端工具MQTT X 1.9.0正式发布:命令行客户端新增bench命令,帮助用户轻松完成MQTT服务的性能测试。
EMQ
232 0
MQTT X 1.9.0 发布:开箱即用的 bench 命令,MQTT 性能测试更便捷
|
测试技术 程序员
GoFrame grpool性能测试 | 对比原生goroutine
今天这篇来做一下grpool的性能测试分析,让大家更好的了解什么场景下使用grpool比较好。
223 0
|
Web App开发 移动开发 缓存
干货 | H5性能分析实战来啦~
干货 | H5性能分析实战来啦~