2011-06-16 2 views
1

J'utilise le blocage des sockets TCP en C et je veux simuler une charge élevée sur le serveur quand il y a beaucoup de connexions simultanées et ensuite je veux mesurer le temps nécessaire pour accéder au serveur via un navigateur pendant ce temps de chargement élevé (le serveur comprend les en-têtes HTTP). En outre, chaque requête client se termine rapidement (envoie un en-tête HTTP - obtient du texte).simuler le chargement du serveur avec des sockets BSD

Comment faire ceci (sans écraser ma machine locale -> j'ai essayé d'utiliser fork pour faire beaucoup de clients, aussi, j'ai aussi une machine virtuelle). Si quelqu'un a une idée ou des instructions générales sur la façon de faire cela, cela signifierait beaucoup. Editer: J'ai besoin d'exécuter ceci avec mon propre client, qui utilise une version modifiée de la bibliothèque OpenSSL pour me connecter à mon serveur SSL/TLS, donc je ne peux pas utiliser d'outils de test externes.

Je veux savoir comment construire le client et le serveur. Je ne sais pas trop sur les autres sockets que celles qui bloquent, je suis juste en train de parcourir le livre de Richard Stevens sur la programmation de réseaux UNIX, mais je me demandais si quelqu'un pouvait indiquer la solution exacte.

Merci!

Répondre

1

La solution la plus simple serait de télécharger un cadre de test de stress existant tel que fwptt (http://fwptt.sourceforge.net/). Si vous voulez implémenter votre propre cadre de tests de stress, je vous suggère de perdre le caractère bloquant de votre code et d'adopter un design parallèle qui évoluera magnifiquement. Le facteur limitant est à peu près votre CPU alors. Avoir deux serveurs physiques serait idéal, de sorte que votre test de stress n'affecte pas la CPU (et donc les temps de réponse) du serveur. De plus, votre machine virtuelle absorbe le précieux temps CPU.

+0

merci pour votre réponse rapide. Malheureusement, je dois utiliser un client modifié. Je suis en train de tester un serveur SSL/TLS et j'ai ajouté des extensions à OpenSSL, j'ai donc besoin que le client fonctionne avec cette version modifiée. – andrei

Questions connexes