Comment bencher le serveur Web avec banc Apache

Comment bencher le serveur Web avec banc Apache

Apache Banc est un outil utilisé pour mesurer les performances d'un serveur Web. Malgré «Apache» en son nom, il peut en fait être utilisé pour tester tout type de serveur Web. Dans ce tutoriel, nous passerons en revue les étapes pour utiliser le banc Apache et comment interpréter son rapport sur les performances d'un serveur Web.

Apache Bench fonctionne en envoyant différentes quantités de demandes HTTP au serveur Web et en enregistrant les temps de réponse. Il peut vous dire combien la congestion que le serveur peut gérer avant qu'elle ne soit dépassée et que les performances diminuent.

Dans ce tutoriel, vous apprendrez:

  • Comment installer le banc Apache
  • Comment utiliser le banc apache
  • Comment interpréter les résultats du banc Apache
Comment bencher le serveur Web avec banc Apache

Exigences et conventions logicielles utilisées

Exigences logicielles et conventions de ligne de commande Linux
Catégorie Exigences, conventions ou version logicielle utilisée
Système Toute distribution GNU / Linux
Logiciel un B
Autre Accès privilégié à votre système Linux en tant que racine ou via le Sudo commande.
Conventions # - Exige que les commandes Linux soient exécutées avec des privilèges racine soit directement en tant qu'utilisateur racine, soit par l'utilisation de Sudo commande
$ - Exige que les commandes Linux soient exécutées en tant qu'utilisateur non privilégié régulier

Comment installer le banc Apache

Apache Banc fait partie du package Apache2-Utils, qui peut être installé avec le gestionnaire de packages de votre système.
Pour Ubuntu et d'autres distributions basées sur Debian, utilisez la commande apt-get pour l'installer:

$ sudo apt-get install apache2-utils 

Pour CentOS / RHEL, exécutez:

# DNF Installer HTTPD-Tools 


Comment utiliser le banc apache

Utilisez le banc apache avec la commande ab. La syntaxe la plus élémentaire est:

$ ab hostname / 
NOTE
un B Nécessite la barre de fin sur le nom d'hôte / adresse IP.

Cette commande de base n'est pas particulièrement utile sans aucune option supplémentaire, alors incluons certains. Apache Banc a beaucoup d'options disponibles, mais certaines des plus utiles sont:

  • -n (numéro): utilisé pour spécifier le nombre de demandes AB doit envoyer à Apache
  • -T (temps mort): utilisé pour spécifier (en quelques secondes) combien de temps AB doit continuer les demandes d'envoi
  • -C (simultané): utilisé pour spécifier le nombre de demandes simultanées pour AB à faire

Vous pouvez jouer avec ces options afin de simuler un trafic plus réaliste pour votre serveur Web et d'observer comment il fonctionne sous diverses quantités de stress.

$ ab -t 10 -n 10000 -c 100 hostname / 

Cette commande compara notre serveur Web pendant 10 secondes, envoyant un maximum de 10 000 demandes au total et envoie 100 de ces demandes simultanément.

Considérations

Il y a quelques éléments à considérer lors de l'utilisation du banc Apache. Lorsqu'un serveur reçoit des milliers de demandes HTTP d'une seule source en quelques secondes, de nombreux pare-feu vont interpréter cela comme un déni d'attaque de service et tenter de bloquer les connexions répétées pendant un certain temps.

Nous recommandons uniquement d'utiliser le banc Apache sur un réseau local et de tester contre les hôtes que vous contrôlez. Pourtant, ce n'est pas une simulation parfaite du trafic réel.

Lors de la connexion à un serveur Web quelque part dans le monde, les utilisateurs auront différents niveaux de latence et houblon (l'itinéraire que leur connexion emprunte vers le serveur Web), qui jouent des rôles majeurs dans la vitesse perçue de votre site Web.
De plus, votre machine de test (le système à partir duquel vous exécutez la commande AB) pourrait être un goulot d'étranglement. Si vous soupçonnez que votre système n'a pas les ressources nécessaires pour lancer ce grand nombre de connexions, vous pouvez vérifier en utilisant la commande supérieure pour surveiller le processeur et l'utilisation de la mémoire pendant que AB effectue son test.

Si vous obtenez un La connexion a expiré Erreur, vos connexions ont probablement été bloquées par un pare-feu ou le serveur Apache a été dépassé et n'a pas pu traiter d'autres demandes.

Résultats du test du banc Apache

Lorsque Apache Bench termine son test, il sortira les résultats vers le terminal et devrait ressembler à ceci:

Terminé 882 Demandes Logiciel du serveur: Apache / 2.4.29 Nom de l'hôte du serveur: --- Port du serveur: 80 Chemin de document: / Longueur du document: 4878 octets Concurrence Niveau: 100 Temps pris pour les tests: 10.008 secondes Demandes complètes: 882 Demandes d'échec: 0 Total Transféré: 4480560 octets HTML transférés: 4302396 DÉQUES D'OTTES par seconde: 88.13 [# / sec] (Moyenne) Temps par demande: 1134.700 [MS] (moyenne) Temps par demande: 11.347 [MS] (moyenne, sur toutes les demandes simultanées) Taux de transfert: 437.20 [kytes / sec] Temps de connexion reçus (ms) min Moyenne [+/- sd] médian max connect: 77 327 1008.3 89 7240 Traitement: 87 115 43.4 101 807 En attente: 86 112 39.1 100 604 TOTAL: 168 442 1009.1 192 7373 Pourcentage des demandes desservies dans un certain temps (MS) 50% 192 66% 202 75% 224 80% 268 90% 428 95% 1207 98% 3208 99% 7345 100% 7373 (demande la plus longue)) 


Interprétation des résultats du banc Apache

La sortie ci-dessus contient toutes les informations nécessaires; Vous avez juste besoin de savoir ce que signifient ces différentes mesures afin de donner un sens aux résultats. Nous allons les passer en revue dans cette section.

Résultats du test du banc Apache

Les premières lignes donnent simplement des informations générales sur le serveur Web. Les informations utiles commencent vraiment par le Temps pris pour les tests doubler.

Temps pris pour les tests Rapports combien de temps la commande AB a pris pour terminer son test. Puisque nous avons spécifié -N 10 dans notre commande AB, cette ligne va évidemment signaler que le test a pris 10 secondes. Si nous n'avions pas précisé de temps mort, cette ligne vous dira combien de temps il a fallu pour terminer l'envoi du nombre spécifié de demandes. Après avoir appliqué des optimisations à votre serveur Web, vous devriez voir une diminution du temps pris pour que les tests se terminent (lorsque vous ne spécifiez pas de délai d'attente).

Demandes complètes Signale combien de demandes ont été envoyées et retournées avec succès.

Demandes échouées rapporte combien de demandes n'ont pas pu compléter. Vous voudrez évidemment voir un très petit nombre, idéalement zéro. Si cette ligne rapporte quelques demandes ratées, cela pourrait indiquer que le serveur Web a été dépassé et incapable de répondre à toutes les demandes à temps.

Total transféré et HTML transféré Rows Signaler la quantité de données, en octets, a été envoyée au serveur Web.

Demandes par seconde est la moyenne du nombre de demandes que le serveur Web a pu gérer dans une seconde. Il est utile pour déterminer comment votre serveur Web fonctionnera lorsque de nombreux utilisateurs y connectent en même temps.

Temps par demande est le temps, en moyenne, il a fallu pour traiter une demande. Les valeurs sont données en millisecondes, donc dans notre exemple de sortie, le temps était 1.1 seconde. La deuxième temps par demande La valeur est simplement multipliée par la valeur concurrencée.

Taux de transfert est la vitesse à laquelle il a pu transférer les données, qui ne devrait pas poser de type goulot d'étranglement sur un réseau local. Si les tests sur Internet, les limitations de routage et de bande passante pourraient affecter cette valeur bien avant Apache elle-même.

Le Temps de connexion (ms) La section répertorie les temps de réponse pour différentes étapes des demandes HTTP.

Temps de connexion (ms) min Moyenne [+/- sd] médian max connect: 77 327 1008.3 89 7240 Traitement: 87 115 43.4 101 807 En attente: 86 112 39.1 100 604 TOTAL: 168 442 1009.1 192 7373 

Connecter Indique combien de temps il a fallu AB pour établir une connexion avec le serveur Web.

Traitement est le temps qu'Apache a passé les demandes. Étant donné qu'AB ne peut pas vraiment mesurer cela, il enregistre simplement le temps où une connexion est ouverte après avoir été initiée.

En attendant est combien de temps AB doit attendre entre l'envoi d'une demande et recevoir une réponse du serveur Web.

Total indique le temps total écoulé de l'initiation d'une connexion au serveur, de la réception d'une réponse et enfin de fermeture de la connexion.

La dernière métrique d'Apache Bench offre un aperçu plus précis du temps de réponse moyen du serveur Web en triant les temps de connexion en centiles.

Pourcentage des demandes desservies dans un certain temps (MS) 50% 192 66% 202 75% 224 80% 268 90% 428 95% 1207 98% 3208 99% 7345 100% 7373 (demande la plus longue) 


Dans notre exemple de sortie ci-dessus, 50% des demandes HTTP ont été traitées et fermées en seulement 192 ms ou moins. Ce rapport indique également que les réponses prenant 7 secondes (il n'y en a que deux) temps de connexion Signaler moins alarmant. 90% de nos demandes HTTP ont été traitées en moins d'une demi-seconde.

Conclusion

Dans cet article, nous avons vu comment installer le banc Apache et l'utiliser pour tester les performances d'un serveur Web. Nous avons également appris à interpréter la sortie du banc Apache, nous permettant de déterminer où se trouvent les goulots d'étranglement. Après avoir optimisé davantage votre serveur Web, exécutez à nouveau le banc Apache et attendez-vous à voir de meilleurs résultats de performances, s'il y a eu des améliorations apportées.

Tutoriels Linux connexes:

  • Test de référence USB Drive sur Linux
  • Comment comparer les performances du disque sur Linux
  • Une introduction à l'automatisation Linux, des outils et des techniques
  • Choses à installer sur Ubuntu 20.04
  • Comment travailler avec l'API WooCommerce REST avec Python
  • Masterring Bash Script Loops
  • Comparaison des MPM de Linux Apache PreFork vs Worker
  • Choses à faire après l'installation d'Ubuntu 20.04 Focal Fossa Linux
  • Analyseur de journal Linux Apache
  • À quelle fréquence devez-vous redémarrer votre serveur Linux?