多数のクライアント (Eclipse paho に基づく) を MQTT ブローカーに接続しようとしています。
ブローカに接続するサブスクライバの速度を低下させる不適切なハイ メモリ ウォーターマーク セットが頻繁に表示されます。
これは約 10k 接続で発生し始め、それ以上の接続が遅くなります。この時点で、すべての rabbitmq プロセスによって報告される %mem は、8 GB の 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
クライアント/サーバー構成の作成中に必要なものはありますか?
ありがとう ...