【问题标题】:RabbitMq with Mqqt protocol with ubuntuRabbitMq 与 Mqtt 协议与 ubuntu
【发布时间】:2016-11-28 12:32:06
【问题描述】:

我正在使用带有 paho.mqttv3 协议的 RabbitMq 3.6.6 我的简单代码,如

int max_connections =400000;
String broker = "tcp://xxx.xxx.x.xx:1883";
String clientId = "Publisher";
String content="Hii";
int qos=1;
String topic="Cluster";


MemoryPersistence persistence = new MemoryPersistence();
MqttClient sampleClient[] = new MqttClient[max_connections];

Thread t[] = new Thread[max_connections];
MqttConnectOptions connOpts = new MqttConnectOptions();
connOpts.setCleanSession(true);

for (int i = 0; i < max_connections; i++) {
    try {
        sampleClient[i] = new MqttClient(broker, clientId + "" + i, persistence);
        sampleClient[i].connect(connOpts);
    } catch (MqttException ex) {
        ex.printStackTrace();
        return;
    } 
}

我遇到了异常:

线程“MQTT Con:Publisher2919”中的异常 java.lang.OutOfMemoryError:无法创建新的本地线程 java.lang.Thread.start0(本机方法)在 java.lang.Thread.start(Thread.java:714) 在 org.eclipse.paho.client.mqttv3.internal.CommsSender.start(CommsSender.java:60) 在 org.eclipse.paho.client.mqttv3.internal.ClientComms$ConnectBG.run(ClientComms.java:654) 在 java.lang.Thread.run(Thread.java:745)

我的系统 RAM 为 8 GB,带有 Corei5 处理器。

我也在 Windows PC 中尝试过同样的错误,但它高达 7k 连接

so any OS level Configuration in Ubuntu to make more Connection?

【问题讨论】:

    标签: java windows multithreading rabbitmq mqtt


    【解决方案1】:

    错误消息很容易解释。尝试创建 400,000 个线程并不现实。

    我假设您正在尝试对您的 MQTT 代理进行负载测试,您最好看看 Apache 的 JMeter 之类的东西,它可以在分布式模式下运行并使用多台机器来产生非常高的负载水平。

    【讨论】:

    • 感谢 Hardlib 的快速响应,是的,我同意你的看法,因为我正在尝试测试多连接 .. 但是 Mqtt 代理仅创建 3k 的连接.....是否可以创建更多比这个??
    • 错误消息是关于每个线程使用的内存量,在 3000 时它消耗的内存比您的机器拥有的内存或操作系统允许的任何给定进程都多
    • 是的,这是内存的问题,我试图在 RabbitMq 配置文件中增加“高水位线”,但仍然无法连接超过 3000 个连接。正如你所说,使用 Distribute 运行同样如何我明白了吗?
    • 错误出在客户端,而不是代理。更改代理上的设置不会做任何事情
    • 好的,对于这种改变有什么想法如何创建按需连接?
    猜你喜欢
    • 2015-07-06
    • 1970-01-01
    • 2021-05-01
    • 1970-01-01
    • 2016-11-06
    • 1970-01-01
    • 2016-12-19
    • 2013-01-20
    • 1970-01-01
    相关资源
    最近更新 更多