Apache Bench - Comparaison des sorties

Dans ce chapitre, nous comparerons les sorties avec et sans indicateurs. Voyons comment l'utilisation d'indicateurs appropriés peut augmenter les performances de votre application Web. Avant cela, nous devons comprendre comment si votre application est simple, vous ne remarquerez peut-être pas la différence. Comme c'est le cas avec notre application simple, avec et sans drapeaux. Ensuite, nous effectuerons le même test avechttps://www.apache.org/ URL, et voyez la différence.

Tester notre application sans drapeaux

Dans cette section, nous allons comprendre comment tester notre application sans drapeaux.

$ ab -n 100 -c 10 http://127.0.0.1:8000/

Production

This is ApacheBench, Version 2.3 <$Revision: 1604373 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking 127.0.0.1 (be patient).....done


Server Software:        Rocket
Server Hostname:        127.0.0.1
Server Port:            8000

Document Path:          /
Document Length:        Variable

Concurrency Level:      10
Time taken for tests:   0.244 seconds
Complete requests:      100
Failed requests:        0
Non-2xx responses:      100
Keep-Alive requests:    0
Total transferred:      27700 bytes
HTML transferred:       6600 bytes
Requests per second:    2208.77 [#/sec] (mean)
Time per request:       4.527 [ms] (mean)
Time per request:       0.453 [ms] (mean, across all concurrent requests)
Transfer rate:          597.49 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        1    2   0.7      2       3
Processing:     0    2   0.7      2       4
Waiting:        0    2   1.0      2       3
Total:          4    4   0.3      4       5

Percentage of the requests served within a certain time (ms)
  50%      4
  66%      4
  75%      5
  80%      5
  90%      5
  95%      5
  98%      5
  99%      5
 100%      5 (longest request)

Tester notre application avec des drapeaux

Dans cette section, nous allons comprendre comment tester notre application avec des indicateurs.

$ ab -l -r -n 100 -c 10 -k -H "Accept-Encoding: gzip, deflate"  http://127.0.0.1:8000/

Production

...
Requests per second:    2277.07 [#/sec] (mean)
Time per request:       4.392 [ms] (mean)
Time per request:       0.439 [ms] (mean, across all concurrent requests)
Transfer rate:          615.97 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        1    2   0.7      2       3
Processing:     0    2   0.7      2       4
Waiting:        0    2   1.0      2       3
Total:          4    4   0.2      4       5

Percentage of the requests served within a certain time (ms)
  50%      4
  66%      4
  75%      4
  80%      4
  90%      5
  95%      5
  98%      5
  99%      5
 100%      5 (longest request)

Nous pouvons simplement noter qu'il n'y a pas beaucoup de différence entre les statistiques de sortie.

Test du site Web de l'organisation Apache sans drapeaux

Voyons maintenant comment tester le site Web de l'organisation Apache sans indicateurs.

$ ab -n 100 -c 10 http://www.apache.org/

Production

This is ApacheBench, Version 2.3 <$Revision: 1604373 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking www.apache.org (be patient).....done

Server Software:        Apache/2.4.7
Server Hostname:        www.apache.org
Server Port:            80

Document Path:          /
Document Length:        58433 bytes

Concurrency Level:      10
Time taken for tests:   1.498 seconds
Complete requests:      100
Failed requests:        0
Total transferred:      5877500 bytes
HTML transferred:       5843300 bytes
Requests per second:    66.74 [#/sec] (mean)
Time per request:       149.840 [ms] (mean)
Time per request:       14.984 [ms] (mean, across all concurrent requests)
Transfer rate:          3830.58 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:       12  110 295.2     12    1012
Processing:    37   38   0.5     38      39
Waiting:       12   13   0.3     13      15
Total:         49  147 295.4     50    1051

Percentage of the requests served within a certain time (ms)
  50%     50
  66%     50
  75%     50
  80%     50
  90%    816
  95%   1050
  98%   1051
  99%   1051
 100%   1051 (longest request)

Test du site Web de l'organisation Apache avec des indicateurs

Testons maintenant le site Web de l'organisation Apache avec des indicateurs.

$ ab -l -r -n 100 -c 10 -k -H "Accept-Encoding: gzip, deflate"  http://www.apache.org/

Production

...
Document Length:        Variable

Concurrency Level:      10
Time taken for tests:   0.357 seconds
Complete requests:      100
Failed requests:        0
Keep-Alive requests:    100
Total transferred:      1358510 bytes
HTML transferred:       1317700 bytes
Requests per second:    280.28 [#/sec] (mean)
Time per request:       35.678 [ms] (mean)
Time per request:       3.568 [ms] (mean, across all concurrent requests)
Transfer rate:          3718.41 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    1   3.7      0      12
Processing:    14   17  21.3     15     227
Waiting:       14   17  21.3     14     227
Total:         14   18  21.5     15     227

Percentage of the requests served within a certain time (ms)
  50%     15
  66%     15
  75%     15
  80%     15
  90%     27
  95%     28
  98%     29
  99%    227
 100%    227 (longest request)

Vous pouvez simplement noter comment la demande par seconde a augmenté avec l'utilisation des indicateurs. Dans le cas présent, il est notamment dû à l'utilisation de-H "Accept-Encoding: gzip, deflate car cet indicateur indique au serveur Apache de servir les requêtes dans gzipped format.

Prise en compte des résultats du banc Apache

Quelques points importants doivent être pris en compte en ce qui concerne les résultats d'Apache Bench. Cela nous aidera à concevoir notre stratégie globale pour supprimer les goulots d'étranglement dans notre application et améliorer ses performances.

Nous avons besoin de demandes par seconde. Cela nous donne une idée de la façon dont la configuration de notre serveur Web fonctionne; plus le nombre est élevé, meilleures sont les performances. Viennent ensuite les temps de connexion (ms) et le pourcentage des demandes servies. Vous devrez peut-être modifier les paramètres de votre serveur Web pour modifier ces mesures en fonction des performances souhaitées.

Vérifiez s'il y a des erreurs dans les journaux d'erreurs d'Apache ou du serveur Web utilisé ou dans les journaux (généraux). Au fur et à mesure que vous augmenterez votre charge, les choses commenceront à s'étouffer: des problèmes de mémoire commenceront à apparaître. De nombreux scripts python commenceront à planter s'ils ne sont pas écrits avec la simultanéité à l'esprit.

Vous avez besoin de savoir quelle est la valeur de concurrence critique au-dessus de laquelle votre serveur Web plante et / ou expire? Normalement, cela devrait se produire à un niveau de concurrence assez élevé. Si cette valeur est basse, quelque chose ne va pas et vous devez ajuster ces paramètres plus bas / plus haut.

Conclusion

Dans ce didacticiel, nous avons appris comment Apache Bench peut être utilisé pour tester le chargement de tout site Web ou application Web. Apache Bench peut être un outil très précieux pour déterminer comment la configuration de votre serveur d'applications Web doit être améliorée, pour réduire les goulots d'étranglement et augmenter les performances. Maintenant que vous êtes familiarisé avec l'utilisation de base d'Apache Bench, vous pouvez commencer par créer de nouveaux plans de test pour mesurer les performances de vos applications dans divers scénarios.