web-dev-qa-db-fra.com

Des outils pour tester les serveurs HTTP en charge?

J'ai dû charger plusieurs fois des serveurs HTTP/applications Web de test, et à chaque fois j'ai été déçu par la qualité des outils que j'ai pu trouver.

Ainsi, lorsque vous testez en charge un serveur HTTP, quels outils utilisez-vous? Et quelles sont les choses que je vais probablement faire de mal la prochaine fois que je dois le faire?

39
David Wolever

JMeter est gratuit.

Mercury Interactive Load Runner est super sympa et super cher.

24
Chad Grant

Je me sens inhabituellement qualifié pour répondre à cette question, car mon entreprise actuelle doit simuler 25 000 connexions simultanées à nos serveurs Web (nous diffusons des publicités en ligne).

Pour les tests de charge à volume extrêmement élevé, Httperf est la voie à suivre. C'est gratuit, et selon notre expérience, il peut simuler plus de connexions simultanées que JMeter ou STA sur le même matériel.

Éditer:

Juste au cas où vous seriez curieux, nous simulons 3 500 requêtes par seconde sur un Optiplex 330 de faible puissance, peu coûteux et ultra-petit. Ces petites boîtes ne coûtent que 280 $, et nous en avons plusieurs connectées pour fonctionner Httperf à la demande. Par comparaison, JMeter ne pouvait pousser qu'environ 800 à 900 requêtes/sec sur ce matériel.

21
Portman

Si vous souhaitez simplement lancer la charge sur une seule URL à la fois sur un serveur Web, téléchargez Apache AB. Il est livré avec le serveur HTTP Apache.

Commande simple

ab -n 10000 -c 10 http://serverfault.com/questions/2107/tools-for-load-testing-http-servers

exécuterait 10000 demandes avec une concurrence de 10 utilisateurs.

Si vous souhaitez enregistrer des sessions de navigation, augmentez le vote et acceptez la réponse jmeter. Jmeter est incroyable et peut évoluer vers de nombreuses machines de test qui peuvent lancer une charge énorme.

20

Il y a Tsung , un outil basé sur Erlang.

Il y a aussi une très longue liste d'outils sur http://www.softwareqatest.com/qatweb1.html#LOAD

8
Jauder Ho

Pour un test rapide, vous pouvez utiliser des séquences de boucles et des ensembles d'URL. Disons par exemple que nous allons exécuter un test de stress de charge contre Google que nous pouvons exécuter ...

curl -s "http://google.com?[1-1000]"

Cela fera 1000 appels à Google, c'est-à-dire.

http://google.com?1  
http://google.com?2  
http://google.com?3 
... 
http://google.com?1000

Ceci est discuté plus en détail sur Comment tester rapidement un serveur Web avec curl.

6
Ian Purton

Vous devrez configurer différents tests:

  • Test normal, simulez les utilisateurs comme ils se comporteront. Vous allez implémenter le temps de réflexion (pas de fureur http entre les pages). Une façon consiste à enregistrer une session Web, vous aurez donc du temps réaliste pour compléter/lire chaque page. La charge viendra étape par étape jusqu'à ce que vous atteigniez la charge actuelle moyenne en production
  • Test de rupture: comme précédemment, mais ajoutez de la charge jusqu'à ce que vous obteniez la première erreur http 500. Le but est de savoir quelle charge vous pouvez gérer jusqu'à ce qu'elle se casse
  • Test de longue durée. Vous conservez le premier scénario en cours d'exécution pendant 12 heures, pour vous assurer que vous n'avez pas de fuite de mémoire ou de dégradation des performances dans le temps.

Après/avant chaque test, vous devez remettre la plateforme comme avant: restaurer la base de données, redémarrer pour nettoyer la mémoire et le cache.

Vous allez également implémenter un échauffement: Lancez des scénarios une fois avant le vrai test, afin que les pages Web soient compilées, la connexion à la base de données établie. Sinon, le premier appel sera toujours mauvais dans vos statistiques.

Vous pouvez ajouter de la complexité, comme:

  • utiliser différents scénarios (visiteurs/invités, membres), qui fonctionneront différemment.
  • Simulez différents accès à la bande passante
  • Randomisez le mot recherché et pensez au temps.

Une dernière chose importante: vous DEVEZ enregistrer tous les scénarios terminés pour pouvoir les refaire exactement de la même manière, afin de pouvoir comparer les performances avec les tests précédents.

5
Mathieu Chateau

Si vous cherchez simplement à tester comment il gère plusieurs connexions, vous pouvez utiliser quelque chose comme Siege . Je ne sais toujours pas si c'est une bonne mesure, mais cela vous dira au moins comment vous gérez plusieurs connexions

2
trent

J'ai utilisé openSTA .

Cela utilise un langage de script relativement simple.

Vous pouvez facilement tester des services/serveurs Web et écrire vos propres scripts.

Il vous permet de rassembler les scripts dans un test comme vous le souhaitez et de configurer le nombre d'itérations, le nombre d'utilisateurs à chaque itération, le temps de montée en puissance pour introduire chaque nouvel utilisateur et le délai entre chaque itération. Des tests peuvent également être programmés à l'avenir.

C'est open source et gratuit.

Il produit un certain nombre de rapports qui peuvent être enregistrés dans une feuille de calcul. Nous utilisons ensuite un tableau croisé dynamique pour analyser et représenter facilement les résultats.

2
nzpcmad

J'ai déjà utilisé LoadRunner mais, c'est assez cher, j'ai également utilisé les outils d'édition Team Tester de Microsoft qui incluent un système qui effectue des tests de charge. J'étais assez satisfait de la façon dont l'outil fonctionnait, et vous pouviez étendre les tests en utilisant .net qui était une syntaxe plus facile à prendre que celle de LoadRunner.

La version du gestionnaire de charge que nous avons utilisée ne pouvait pas non plus gérer notre AJAX (c'était en 2000, donc je suis sûr que l'outil a été amélioré))

1
JoshBerke

Nous utilisons WAPT , et cela fonctionne très bien. Facile à installer et seulement quelques centaines de dollars. LoadRUnner est ridiculement hors de prix et totalement hors de portée pour tous sauf le Fortune 500.

1
rmalayter

Cela dépend de la complexité de votre scénario.

Pour simuler correctement la charge réelle des utilisateurs sur votre serveur, vous devez essayer de simuler ce que les utilisateurs font réellement. Si vos utilisateurs viennent de frapper le serveur avec une URL, n'importe lequel des outils gratuits/simples ferait l'affaire.

Pour les sites Web qui sont un peu plus complexes, vous voudriez utiliser un outil qui vous aide avec la corrélation de valeurs dynamiques, le paramétrage, etc. Vous pouvez utiliser Load-Runner et similaires, je préfère utiliser WebLOAD =.

0
Yasei No Umi