java.io.EOFException mit paho

möchte ich den stress-test auf der mosquitto, so dass ich einige code, wie unten

for (int i = 0; i < 800; i++) {
        final int j = i;
        Thread t = new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println(j + " : ************");
                try {
                    MqttClient client = new MqttClient("tcp://192.168.88.203", SERVER_CLIENTID_PREFIX + j); 
                    client.connect();

                    MqttMessage message = new MqttMessage((j + ":me").getBytes());
                    message.setQos(2);

                    client.publish(TOPIC_PREFIX + j, message);
                } catch (MqttSecurityException e) {
                    e.printStackTrace();
                } catch (MqttException e) {
                    e.printStackTrace();
                }
            }
        });
        t.start();
    }

Aber, ich habe einige Fehler, wie EOFException während des Laufs und einige client trennen.
Ich möchte wissen, wie viele clients können Nachrichten veröffentlichen zur gleichen Zeit, mit mosquitto-server, und wie kann ich den stress-test. Danke!

Detail-Ausnahme :

    Connection lost (32109) - java.io.EOFException
    at org.eclipse.paho.client.mqttv3.internal.CommsReceiver.run(CommsReceiver.java:162)
    at java.lang.Thread.run(Thread.java:662)
Caused by: java.io.EOFException
    at java.io.DataInputStream.readByte(DataInputStream.java:250)
    at org.eclipse.paho.client.mqttv3.internal.wire.MqttInputStream.readMqttWireMessage(MqttInputStream.java:51)
    at org.eclipse.paho.client.mqttv3.internal.CommsReceiver.run(CommsReceiver.java:121)
    ... 1 more

Und ich fand einige log von mosquitto server:

1383736170: Socket read error on client Server-82, disconnecting.

Bitte helfen Sie mir, danke!

Können Sie nach den genauen Ausnahme? Klingt wie der socket geschlossen wurde. Können Sie versuchen, mit einer höheren MQTT keepAlive-Wert? Ich vermute, dass unter dieser hohen Belastung der Paho-client nicht verwalten zum senden von pings richtig.
vielen Dank für deine Antwort, ich habe append detail Ausnahme. Was ist mit der "keepAlive" - Wert, Sie zu erwähnen. ich kann es nicht gefunden in mosquitto.conf , ich fand nur "keepalive_interval" , ist es richtig? nochmals vielen Dank
32109 ist der Fehlercode für "Connection Lost" auf der client-Seite. Das bedeutet, dass der socket geschlossen wurde unerwartet beendet. Wenn Sie wollen, eine höhere keepAlive, Sie haben, um einen MqttConnectOptions-Objekt der Methode connect() mit der angegebenen keepAlive. Wenn das nicht hilft, vermute ich, dass vielleicht erreichen Sie eine Grenze, die auf der server-Seite. Haben Sie versucht, mit anderen Brokern wie HiveMQ oder RabbitMQ?
Danke , das werde ich ändern mein code :client = new MqttClient("tcp://192.168.88.203", "Server-" + j); MqttConnectOptions connOpt = new MqttConnectOptions(); connOpt.setConnectionTimeout(60 * 10); connOpt.setKeepAliveInterval(60 * 5);
aber ,es kann nicht machen Sie ein gutes effection. Ich fand, wenn ich keine Nachricht veröffentlichen, den mosquitto-server akzeptieren könnten, 800 client-Verbindungsauf -, aber wenn ich die Nachricht veröffentlichen, die "32109" Fehler angezeigt. Ich habe keine Ahnung, seufz....

InformationsquelleAutor tom | 2013-11-06

Schreibe einen Kommentar