我正在尝试将大量客户端(基于 eclipse paho)连接到 MQTT 代理。
我经常看到不正确的高内存水印集会减慢连接到代理的订阅者的速度。
这开始在大约 10k 连接时发生,并减慢进一步的连接。此时所有 rabbitmq 进程报告的 %mem 小于 8GB RAM 的 30%。
=INFO REPORT==== 31-Oct-2014::12:52:58 ===
vm_memory_high_watermark clear. Memory used:7420789416 allowed:7430278348
=WARNING REPORT==== 31-Oct-2014::12:52:58 ===
memory resource limit alarm cleared on node 'rabbit@jb-m01'
我启用了 hipe compile,但即使没有,情况也是如此。
所有订阅者都connect()
在线程池上执行方法。
我有不同的没有。在 20、100、200、20 或更低的线程中,%cpu 是正常的 ~ 60-80,在 100 及以上时,我有时会看到 ~ 200-300。即使没有。连接数不会增长(变化〜10K)。
此时我还看到订阅者抛出以下错误。这是否意味着经纪人因超载而停滞不前?
Connection lost (32109) - java.io.EOFException
at org.eclipse.paho.client.mqttv3.internal.CommsReceiver.run(CommsReceiver.java:138)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.io.EOFException
at java.io.DataInputStream.readByte(DataInputStream.java:267)
at org.eclipse.paho.client.mqttv3.internal.wire.MqttInputStream.readMqttWireMessage(MqttInputStream.java:56)
at org.eclipse.paho.client.mqttv3.internal.CommsReceiver.run(CommsReceiver.java:100)
... 1 more
在编写客户端/服务器配置时我需要满足什么?
谢谢 ...