2010-11-14 21 views
4

Je souhaite effectuer une charge de test pour une page Web. Je veux le faire en python avec plusieurs threads. La première requête POST se connecterait à l'utilisateur (configurez les cookies).Page Web de test de chargement de script Python

Ensuite, j'ai besoin de savoir combien d'utilisateurs peuvent faire simultanément la même requête POST. Je pense donc à générer des threads dans lesquels les requêtes seraient faites en boucle.

J'ai quelques questions: 1. Est-il possible d'exécuter 1000 - 1500 demandes en même temps CPU? Je veux dire que ça ne ralentirait pas le système, donc ce n'est plus fiable? 2. Qu'en est-il des limitations de bande passante? A quel point le canal devrait-il être bon pour que ce test soit fiable?

Le serveur sur lequel le site de test est hébergé est un script Amazon EC2 qui serait exécuté à partir d'un autre serveur (Amazon également).

Merci!

Répondre

5

cPython ne tire pas parti de plusieurs cœurs lors de l'exécution de plusieurs threads. Cela signifie que, fondamentalement, vous aurez seulement un noyau faisant le travail de test.

Il existe des outils dédiés pour faire ce que vous voulez faire. Permettez-moi de suggérer deux:

FunkLoad est un testeur web fonctionnel et de charge, écrit en Python, dont les principaux cas l'utilisation sont:

  • Les tests fonctionnels des projets web, et donc les tests de régression ainsi. Tests de performance: en chargeant l'application Web et en surveillant vos serveurs, il vous aide à identifier les goulots d'étranglement, donnant un rapport détaillé de la mesure de performance.
  • Charger l'outil de test pour exposer les bogues qui ne font pas surface dans les tests superficiels, comme les tests de volume ou les tests de longévité.
  • Outil de test de contrainte pour submerger les ressources de l'application Web et tester la récupérabilité de l'application .
  • Ecriture d'agents Web en scriptant toute tâche répétitive Web, par exemple en vérifiant si le site est actif.

Tsung est un outil de test de charge distribué multi-protocole open-source

Le but de Tsung est de simuler utilisateurs afin de tester l'évolutivité et les performances de la propriété intellectuelle à base applications client/serveur. Vous pouvez l'utiliser pour faire des tests de charge et de stress de vos serveurs. De nombreux protocoles ont été mis en œuvre et testés, et peut être facilement étendu. WebDAV, LDAP et le support MySQL ont été ajoutés récemment (expérimental) .

Il peut être distribué sur plusieurs machines clientes et est capable de simuler des centaines de milliers d'utilisateurs virtuels simultanément (ou même millions si vous avez assez de matériel ...).


Si vous décidez d'écrire votre propre outil, vous voudrez probablement utiliser multiprocessing module de Python comme il te laisser utiliser plusieurs cœurs. Vous devriez également jeter un oeil sur Twisted car il vous permettrait de gérer facilement plusieurs sockets tout en limitant le nombre de threads. Ce serait beaucoup mieux que de générer un nouveau thread pour chaque socket.

Vous travaillez avec Amazon EC2, donc je vous recommande d'utiliser Tsung. Vous pouvez louer une douzaine de serveurs multicœurs pendant quelques heures et effectuer des tests de charge très lourds avec Tsung. Il évolue très bien dans ce type de configuration. En ce qui concerne la bande passante, ce n'est généralement pas un problème, mais cela dépend de l'application. Vous devrez surveiller toutes vos ressources de près tout en effectuant un test de charge.

+0

Merci pour la réponse! Tsung semble faire tout ce que je veux :) – Leonti

1

trop de variables. 1000 au même temps ... no. dans la même seconde ... éventuellement. la bande passante pourrait bien être le goulot d'étranglement. c'est quelque chose de mieux résolu par l'expérimentation.