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?
JMeter est gratuit.
Mercury Interactive Load Runner est super sympa et super cher.
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.
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.
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.
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
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.
Vous devrez configurer différents tests:
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:
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.
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
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.
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é))
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.
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 =.