web-dev-qa-db-fra.com

Comment faire des tests de charge pour les websockets

Nous construisons une fonctionnalité de discussion de groupe, qui utilise des websockets. Nous voulons tester le nombre de connexions que notre infrastructure actuelle peut prendre en charge. 

En gros, il s’agit de simuler une prise Web.

39
Pankaj

Je peux vous donner une suggestion de mon expérience récente. Vous pouvez connecter des clients virtuels Phantom basés sur un kit Web à votre serveur de discussion et mesurer l'utilisation des ressources (par exemple, le processeur, la mémoire, utilisant éventuellement un script Shell ou un autre utilitaire ou profilant votre service)

var system = require('system');
var page = require('webpage').create();
page.viewportSize = { width: 1024, height: 768 };

page.open("<URL to chat server service>", function (status) {
    // Check for page load success
    if (status !== "success") {
        console.log("Unable to connect");
        phantom.exit();
    } else {
        console.log("Client connected  ");
        //after connecting you may extract further information, taking screenshots etc. refer the phantom.js API for further details
    }
});

Utilisez-vous un framework tel que socket IO pour la communication websocket? 

8

Plusieurs années ont passé, un autre nouvel outil permet de tester la charge de Websockets: https://github.com/observing/thor

5
cooler

Pourquoi ne pas utiliser Jmeter à cette fin? Bien que WebSocket ne soit pas encore directement pris en charge, vous pouvez utiliser l'échantillonneur TCP pour effectuer le travail.

Sinon, vous pourriez obtenir un plug-in qui ajouterait le support WebSocket à JMeter: http://github.com/maciejzaleski/JMeter

Il va sans dire que les plug-ins JMeter et WebSocket sont à la fois open-source et libres d'utilisation.

3
Maciej Zaleski

Vous pouvez utiliser un outil de test de charge pour cela.

J'ai utilisé WebLOAD dans un projet similaire. Il enregistre le trafic Web lorsque vous utilisez le navigateur - il enregistre les requêtes HTTP régulières ainsi que le trafic des sockets Web - vous pouvez alors lire le script avec de nombreux utilisateurs et mesurer le comportement du serveur.

1
Yasei No Umi

Je le ferais avec Node.js afin que vous puissiez utiliser la même bibliothèque client Websocket que vous utilisez également dans le client réel.

0
Tuomas Silen

J'ai eu une belle expérience avec tsung http://tsung.erlang-projects.org/

0
simonC