java.io.EOFException avec l'ops

je veux faire un test de stress sur mosquitto, j'ai donc créer un code comme ci-dessous

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();
    }

Mais, j'ai eu quelques erreurs comme EOFException au cours de l'exécution et parmi ses clients, on est déconnecter.
Je veux savoir combien de clients peuvent publier des messages en même temps avec un mosquitto serveur, et comment puis-je faire le test de stress. Merci!

Le détail exception est la suivante :

    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

Et j'ai trouvé un log de mosquitto serveur:

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

S'il vous plaît aidez-moi, merci!

  • Vous pouvez poster l'exception exacte? Sonne comme le socket a été fermé. Pouvez-vous essayer avec une plus grande MQTT keepAlive valeur? Je soupçonne que, sous cette haute charge de l'Ops client n'arrive pas à envoyer des requêtes ping correctement.
  • merci pour votre réponse, j'ai ajouter des détails exception. Ce sujet de la "keepAlive" la valeur que vous mentionnez. je ne peux pas la trouver dans mosquitto.conf , je n'ai trouvé que "keepalive_interval" , est-il juste? merci encore
  • 32109 est le code d'erreur pour "perte de Connexion" sur le côté client. Cela signifie que le socket a été fermé de façon inattendue. Si vous voulez un plus haut keepAlive, vous devez passer un MqttConnectOptions objet de votre méthode connect() à la définition de la directive keepAlive. Si cela ne fonctionne pas, je soupçonne que vous êtes peut-être atteint une limite sur le côté serveur. Avez-vous essayé avec d'autres courtiers comme HiveMQ ou RabbitMQ?
  • Merci , j'ai modifier mon code comme :client = new MqttClient("tcp://192.168.88.203", "Serveur" + j); MqttConnectOptions connOpt = new MqttConnectOptions(); connOpt.setConnectionTimeout(60 * 10); connOpt.setKeepAliveInterval(60 * 5);
  • mais ,il ne peut pas faire un bon effection. J'ai découvert que si je ne publie pas de message, le mosquitto serveur peut accepter 800 client de connexion, mais lorsque je publie un message, le "32109' erreur sera affichée. Je n'ai aucune idée à ce sujet, soupir....
  • salut, quand je lance ce exécuté sur le système d'exploitation linux, il peut bien fonctionner, de sorte que le plaisir, je vous remercie pour votre réponse

InformationsquelleAutor tom | 2013-11-06