Question

J'ai écrit une implémentation de serveur TCP à l'aide de laquelle j'ai créé une application fonctionnant comme un service d'écho TCP.

Maintenant, je veux tester ce serveur d'écho en termes de

  • Combien de connexions il peut gérer
  • Quel est le temps de réponse
  • Combien de mémoire et de processeur il utilise

Pouvez-vous suggérer une méthode / des outils standard pour tester ce serveur d'écho? Je comprends que l’implémentation de TCP et de serveur d’écho est une pratique assez standard, j’espère trouver des outils éprouvés pour le tester.

P.S .: Je peux écrire ma propre application de test mais je ne veux pas le faire parce que si je vois un problème, je dois être sûr que c'est mon serveur qui le fait mal. Je ne veux pas finir par tester mon client test en premier.

J'ai écrit cette implémentation à l'aide de C # et de .NET 3.5, même si j'estime que la référence à la question n'a pas d'importance.

Était-ce utile?

La solution

J'ai un outil gratuit qui pourrait vous aider. Je l'utilise pour tester des serveurs construits avec mon framework de serveur C ++. Cet outil est disponible ici: http: // www. lenholgate.com/blog/2005/11/windows-tcpip-server-performance.html . Il vous permet de créer un nombre configurable de connexions sur votre serveur cible à un débit configurable, puis d'envoyer des données sur chaque connexion (à nouveau à un débit configurable).

Si vous trouvez que la meilleure façon de l’utiliser est de l’exécuter sur un ordinateur différent du serveur (assez évident, je sais, mais ...) et éventuellement d’exécuter plusieurs copies sur plusieurs ordinateurs différents. Notez que si vous constatez que vous ne pouvez pas établir plus de 4 000 connexions environ, il est fort probable que vous deviez modifier votre paramètre de registre MAX_USER_PORT sur la machine qui exécute le client.

Une fois que vous avez testé votre code TCP, vous devrez peut-être tester le protocole pris en charge par votre serveur. J'ai écrit un outil de test pour ce genre de situation en C # disponible sur CodeProject ( http: //www.codeproject.com/KB/IP/testingsocketservers.aspx ). Cela vous permet d’écrire un "plugin". pour prendre en charge votre protocole et gérer les éléments agnostiques de protocole (beaucoup de connexions, de séparer les messages pour obtenir des lectures fragmentées, etc.). La conception est plutôt viciée, connexion par connexion. Par conséquent, il est préférable de réimplémenter quelque chose à l'aide d'une conception asynchrone, mais j'ai mes outils C ++, je n'ai donc jamais eu l'idée de modifier ce programme de test. .

Autres conseils

Dans la même situation que précédemment, j’ai utilisé FunkLoad. Si vous pouvez écrire un petit client sous forme d'extrait de code Python, FunkLoad s'exécutera autant de fois que vous le souhaitez sur le serveur, et représentez les résultats sous forme de graphique:

https://funkload.nuxeo.org/

Un exemple entièrement élaboré sur une série de serveurs de test est la pièce maîtresse de la deuxième édition de mon livre Foundations of Python Network Programming, au cas où son référentiel de code source public serait utile:

https://github.com/brandon-rhodes/fopnp/ arbre / m / py2 / chapitre07

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top