2012-06-06 5 views
1

J'essaie d'obtenir des statistiques sur le temps de réponse sur mon serveur de production.Résultats différents dans ApacheBench avec et sans demandes simultanées

Lorsque vous appelez ab -n100 -c1 "http://example.com/search?q=something" j'obtenir des résultats suivants:

Connection Times (ms) 
       min mean[+/-sd] median max 
Connect:  24 25 0.7  24  29 
Processing: 526 874 116.1 868 1263 
Waiting:  313 608 105.1 596 1032 
Total:  552 898 116.1 892 1288 

Mais quand je l'appelle ab -n100 -c3 "http://example.com/search?q=something" les résultats sont bien pires:

Connection Times (ms) 
       min mean[+/-sd] median max 
Connect:  24 25 0.8  25  30 
Processing: 898 1872 1065.6 1689 8114 
Waiting:  654 1410 765.5 1299 7821 
Total:  923 1897 1065.5 1714 8138 

Compte tenu de ce site est en production, donc il y a des demandes à part le mien, je ne peux pas expliquer pourquoi les appels sans concurrence sont tellement plus rapides qu'avec une concurrence même minime.

Des suggestions?

Répondre

1

Si vous avez une concurrence de 1, cela signifie que vous dites à AB de frapper cette URL, aussi vite que possible, en utilisant un thread. La valeur -c3 dit à AB de faire la même chose mais en utilisant 3 threads, ce qui va probablement entraîner un plus grand volume d'appels qui, dans votre cas, semble avoir causé le ralentissement des choses. (Note AB est un seul thread donc n'utilise pas réellement plusieurs threads mais l'analogie est toujours vraie.)

C'est un peu comme avoir plus de voies au poste de péage, une voie ne peut traiter les voitures si vite, mais avec trois voies que vous allez obtenir plus de débit. Mais peu importe combien de voies vous avez la largeur du tunnel que les voitures doivent traverser après le péage va également affecter le débit qui est probablement ce que vous voyez. En règle générale, une meilleure approche pour tester le chargement est de décider quel niveau de trafic votre application a besoin pour pouvoir prendre en charge puis concevoir un test qui génère ce niveau de débit et pas plus. Exécuter des threads aussi vite qu'ils peuvent aimer AB a tendance à rendre difficile toute sorte de tests contrôlés. JMeter est meilleur.

En outre, vous pourriez penser à mettre en place un serveur de test pour ce genre de chose, moins risqué ...

Questions connexes