2

J'ai besoin de créer plusieurs connexions TCP simultanément à une application de serveur TCP personnalisée pour ses tests de performances. Je connais beaucoup de tels pour le Web (c'est-à-dire curl-loader basé sur libcurl), mais je n'ai pas trouvé de général.
Le scénario pour le client est le plus simple: créer une connexion, envoyer des données spéciales, lire la réponse et fermer la connexion. À chaque étape, il y a l'horodatage. Tous les horodatages doivent être écrits dans le fichier pour les calculs ultérieurs. J'ai besoin d'environ 10 000 connexions de ce type en parallèle.
Je préfère une solution prête mais il n'y a rien trouvé dans Google, donc je suis prêt à écrire celui-ci avec Python. Si oui, pouvez-vous me recommander un module python approprié qui pourrait produire cette quantité de connexions? (multi-traitement, torsadé ..?)Plusieurs connexions client tcp simultanées pour test de performance

Répondre

0

La manipulation des connexions 10k est un problème difficile (connu sous le nom de problème C10K). Si vous avez besoin de nombres réels, respectez les bibliothèques C++ (Boost/POCO ou l'API native OS) ou répartissez les clients entre 10 clients générateurs de charge.

Pas moyen d'essayer ceci avec Python (gérer 10'000 connexions sur 1 CPU - pas réaliste).

+0

'socket' est un [prolongement C] (http://svn.python.org/view/python/tags/r31/Modules/socketmodule.c?view=markup) dans le python (au moins en Python 3.1.2); Il ne devrait pas y avoir trop de surcharge en termes d'utilisation de l'UC, sauf si vous créez un nouveau thread par connexion car la bibliothèque de threads de Python n'est pas implémentée de manière native. Or C++ est-il beaucoup plus efficace? –

+0

C++ est beaucoup plus efficace, et pourrait vous tous les cœurs de processeur. Python dû à GIL fonctionne seulement sur 1 noyau à tout moment. Avec un tel tas de connexions minuscules frais généraux ici et là prennent la plupart du temps. – BarsMonster

+0

Python multi-threading n'est pas l'option, bien sûr. Mais peut-être que le multitraitement va aider ..? – DominiCane

1

Mes deux cents:

  1. Go pour Twisted, ou tout autre bibliothèque de réseau asynchrone.
  2. Assurez-vous que vous pouvez ouvrir suffisamment de descripteurs de fichiers sur le client et sur le serveur . Sur ma boîte Linux, par exemple, je ne peux pas avoir plus de 1024 descripteurs de fichiers fichier par défaut:

    [email protected]:~$ ulimit -a 
    core file size   (blocks, -c) 0 
    data seg size   (kbytes, -d) unlimited 
    [..] 
    open files      (-n) 1024 
    [..] 
    
  3. Il peut payer pour exécuter le client et le serveur sur des machines différentes.

+0

Comment puis-je faire beaucoup de connexions avec tordu? Y a-t-il un exemple de travail/référence? – DominiCane