Apache Benchmark + GNUPlot: mesurez et tracez les performances de votre serveur Web

Peu importe s'il est utilisé Nginx, Apache, Lighttpd ou autre, tout administrateur réseau qui a un serveur Web voudra à un moment donné savoir à quelle vitesse le serveur Web répond à un nombre donné de requêtes.

Services-gérés-Gestion-de-serveur-e1368625038693

Benchmark Apache + GNUPlot

Cette fois, nous utiliserons un outil appelé Benchmark Apache, qui, bien qu'il ait «apache» dans son nom, n'est PAS seulement pour mesurer les performances d'Apache, mais peut également être utilisé pour Nginx et autres. En fait, je vais l'utiliser pour mesurer les performances de Nginx.

Nous utiliserons également GNUPlot, ce qui nous aidera à créer des graphiques comme ceux-ci avec quelques lignes:

résultats

Installer Apache Benchmark et GNUPlot

Apache Benchmark est un outil que nous pouvons utiliser après l'installation du package Apache, GNUPlot sera disponible après l'installation du package du même nom. Donc alors ...

Sur des distributions comme Debian, Ubuntu ou similaires:

sudo apt-get install apache2 gnuplot

Dans des distributions comme ArchLinux ou des dérivés:

sudo pacman -S apache gnuplot

Nous n'avons besoin que d'installer le package Apache, nous n'avons pas besoin de le démarrer ou de configurer quoi que ce soit d'autre, il suffit de l'installer.

Utilisation d'Apache Benchmark

Ce que nous allons faire, c'est envoyer un nombre spécifique de requêtes (100) par groupes de plusieurs (de 20 à 20) vers un site spécifique. Nous enregistrerons le résultat dans un fichier .csv (result.csv) puis le traiterons avec GNUPloit, la ligne serait:

ab -g resultados.csv -n 100 -c 20 http://nuestro-sitio-web.com/

Il est très important de mettre le final / dans l'URL du site à mesurer.

Voici la sortie ou le journal qui me montre lorsque je teste un site sur mon réseau:

Ceci est ApacheBench, Version 2.3 <$ Révision: 1638069 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking gutl.jovenclub.cu (soyez patient) ..... fait

Logiciel serveur: nginx Nom d'hôte du serveur: gutl.jovenclub.cu Port du serveur: 80

Chemin du document: /
Longueur du document: 206 octets Niveau de concurrence: 20 Durée des tests: 0.101 seconde Requêtes complètes: 100 Requêtes ayant échoué: 27 (connexion: 0, réception: 0, longueur: 27, exceptions: 0) Réponses non-2xx: 73 Total transféré: 1310933 octets HTML transférés: 1288952 octets
Requêtes par seconde: 993.24 [# / s] (moyenne)
Temps par demande: 20.136 [ms] (moyenne) Temps par demande: 1.007 [ms] (moyenne, pour toutes les demandes simultanées) Taux de transfert: 12715.49 [Ko / s] reçus Temps de connexion (ms) min moyen [+/- sd] médian max Connect: 0 1 0.2 1 1 Traitement: 1 17 24.8 4 86 En attente: 1 15 21.5 4 76 Total: 1 18 24.8 5 87 Pourcentage des demandes traitées dans un certain temps (ms) 50% 5 66% 6 75% 22 80% 41 90% 62 95% 80 98% 87 99% 87
100% 87 (demande la plus longue)

J'ai marqué en rouge ce que je considère comme la chose la plus importante, qui a été plus ou moins:

  1. Données du serveur que nous testons, ainsi que l'URL en question.
  2. Nombre de requêtes par seconde.
  3. Combien de millisecondes il a fallu au serveur pour répondre à la demande qui a pris le plus de temps, c'est-à-dire celle qui a mis le plus de temps à répondre.

Avec ces informations, ils peuvent avoir une idée du temps qu'il faudra au serveur pour répondre à ce nombre de demandes, ils peuvent ensuite ajouter un meilleur système de cache, désactiver les modules qu'ils n'utilisent pas, etc. etc., réexécuter le test et voir si les performances se sont améliorées ou non. .

Je recommande d'exécuter le test 2 ou 3 fois, afin de créer quelque chose comme une marge, car rarement les résultats de deux tests consécutifs sont identiques.

Autres options ou paramètres utiles d'Apache Benchmark:

-k -H 'Accepter-Encodage: gzip, dégonfler' : Avec ce ab acceptera le cache et la compression que le serveur a configuré, donc les temps seront inférieurs.

-f URL.txt : Donc, au lieu de simplement tester l'index du site, il effectuera des tests sur les URL que nous spécifions dans ce fichier.

Quoi qu'il en soit ... jetez un oeil à homme ab à toi de voir.

Afficher le résultat dans un graphique:

Mettre cette sortie dans une image, c'est-à-dire dans un support plus visuel et que de nombreuses fois, c'est tout ce que les managers parviennent à comprendre ... pour cela nous allons utiliser comme je l'ai déjà dit, GNUPlot

Dans le même dossier où nous avons le fichier results.csv (rappelez-vous, nous venons de générer avec la commande ci-dessus) nous allons créer un fichier appelé gnuplot.p:

nano plot.p

Nous y mettrons ce qui suit:

définir la taille du terminal png 600 définir la sortie "results.png"définir le titre"100 demandes, 20 requêtes simultanées "set size ratio 0.6 set grid and set xlabel"demandes"définir ylabel"temps de réponse (ms)"terrain"results.csv"en utilisant 9 sbezier lisse avec le titre des lignes"gutl.jovenclub.cu"

J'ai indiqué en rouge ce que vous devez toujours vérifier. C'est-à-dire et de haut en bas:

  1. Nom du fichier image à générer
  2. Nombre de demandes totales et simultanées.
  3. Nom du fichier que nous venons de générer.
  4. Domaine sur lequel nous travaillons.

Une fois que nous l'avons mis, enregistrez et quittez (Ctrl + O et alors Ctrl + X), nous exécuterons ce qui suit:

gnuplot plot.p

Et voila, ça va générer le graphe avec le nom souhaité, le mien est:

résultats2

La fin!

Apache Benchmark a beaucoup plus d'options, il existe également de nombreuses combinaisons que nous pouvons utiliser pour rendre notre test de performance encore plus complet.

Mais bon, ça a été la base 😉

Chin!


Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont marqués avec *

*

*

  1. Responsable des données: Miguel Ángel Gatón
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.

  1.   Francisco dit

    Intéressant benchmark apache, ce que gnuplot ne savait pas est-il possible de modifier le style de la sortie? Je dis comme pour un rapport formel.

    Salutations de Chili.

    1.    KZKG ^ Gaara dit

      Oui, il y a beaucoup de configurations dans le réseau pour gnuplot, recherchez par Google pour voir si vous en trouvez suffisamment sérieux ou professionnel pour que vous puissiez l'utiliser, car c'est le goût de tout le monde 🙂

  2.   Wolf119 dit

    Euh, je vais le tester tout de suite sur un serveur apache virtuel que j'ai en cours d'exécution pour voir comment cela se passe, par rapport à GUTL, car il se déclenche très rapidement à partir de 80 requêtes, non? Voyons que 100 ms ne fonctionne pas Ce ne sont rien, mais le high qui donne pour 10 demandes de plus contre 70 à 80 avec 80 à 90 attire mon attention

    1.    KZKG ^ Gaara dit

      Cela doit être dû à la file d'attente ou au nombre maximum de threads à assister simultanément. Cependant, j'ai fait le test sans gzip, sans dégonflage, sans cache ou quoi que ce soit 😉

  3.   Charlie Brown dit

    Très intéressant, surtout pour l'utilisation de GNUPlot. D'après ce que je vois, il peut être utilisé pour générer des graphiques à partir de presque n'importe quel ensemble de données, non? ...

    1.    KZKG ^ Gaara dit

      Oui bien sûr, vous passez les données dans un fichier séparé par des virgules ou quelque chose comme ça, vous lui dites comment les traiter dans le fichier de configuration, et voilà

  4.   Adolfo dit

    Bonjour, je passe toujours mon temps à lire ce blog mais je n'ai jamais commenté d'article, et cela me semble être une bonne opportunité.
    Ce que je veux partager avec vous, c'est que ce type de graphique peut être mal interprété, car Apache Bench trie le résultat en utilisant ttime (temps total) au lieu de temps séquentiel. Bien que les données soient toujours vraies, le graphique ne montre probablement pas ce que nous voulons.
    Ici, je laisse le lien où je l'ai lu.
    http://www.bradlanders.com/2013/04/15/apache-bench-and-gnuplot-youre-probably-doing-it-wrong/

    Salutations.

  5.   Hugo dit

    Apache Benchmark n'est pas le meilleur outil pour mesurer les performances des serveurs HTTP dans les ordinateurs avec plusieurs cœurs, de plus, seulement 100 requêtes avec 20 connexions simultanées est un test très faible, quelque chose de plus réaliste serait 1,000 ou 10,000 requêtes avec 100 connexions simultanées (on sait que Nginx est l'une des applications capables de servir plus de 10,000 requêtes par seconde) et pour cela il est préférable d'utiliser un outil comme weighttp, qui est conçu pour les ordinateurs multi-cœurs et utilise epoll qui est plus rapide, contrairement à Apache Bench qui utilise un seul thread et un mécanisme de gestion des événements moins efficace.

    Pour faire valoir mon point, en supposant que le serveur n'a que 4 cœurs:

    weighttp -n 10000 -c 100 -t 4 -k "http://our-web-site.com/"

  6.   foi dit

    Bonjour à tous,
    Lorsque vous dessinez le graphique (à partir du CSV) avec gnuplot, cela me donne l'erreur suivante, pouvez-vous me dire comment le résoudre?

    "Plot.p", ligne 8: avertissement: saut de fichier de données sans points valides

    tracer «graph.csv» en utilisant 9 sbezier lisse avec le titre des lignes «AB - localhost / web»
    ^
    "Plot.p", ligne 8: la plage x n'est pas valide

    Avec gnuplot, puis-je également générer des pages HTML?