Surveiller les performances d'un serveur Apache

Lorsque vous souhaitez surveiller un serveur apache, nous devons connaître certains aspects :

  • Combien de demandes peut-il supporter
  • Vitesse à laquelle il répond aux demandes
  • Quel est le temps d'attente
  • Quelles applications ou services peuvent être améliorés ou optimisés
Pour mesurer les performances d'un serveur, nous utiliserons un outil appelé Apache Benchmark ou ApacheBench.

Banc ApacheBanc Apache il s'agit d'un logiciel informatique qui s'exécute en ligne de commande pour mesurer les performances, en particulier des serveurs Web et du service http. Ce logiciel a été développé pour tester le serveur HTTP Apache, mais étant un outil pour tester les services http, il est possible de l'utiliser pour tester n'importe quel serveur web tel que Nginx, Lighttpd.

L'outil Banc Apache il se trouve dans les référentiels Linux et en tant que bibliothèque sur le serveur Apache et est donc un logiciel gratuit et open source et utilise la licence Apache.

Ce type de test est très simple à réaliser de manière rapide en utilisant la commande Apache Bench ab.

Ce test va rapidement nous montrer s'il y a un problème immédiat avec l'installation d'Apache et donc il répond mal.

Cela nous aide également avec la question suivante Dans quelle mesure puis-je utiliser ou forcer le serveur et ses ressources Web avec Apache, PHP et MySQL ? (avec connexions simultanées et page de demande de chargement), plus ce que nous devons optimiser dans la configuration Apache et PHP pour obtenir un meilleure performance et éliminer les problèmes de réponse aux demandes des visiteurs.

1. Installation d'ApacheBench sur des serveurs Linux


Ubuntu/Debian
 sudo apt-get install -y apache2 sudo apt-get install apache2-utils

Redhat / Centos

 miam installer httpd-tools

Nous allons faire des tests avec différents domaines et ip. Nous allons commencer par ouvrir une fenêtre de terminal et effectuer les tests suivants :

Serveur local ou localhost également ip 127.0.0.1

 ab 127.0.0.1/
hôte local

2. Requêtes


Regardons une requête avec des paramètres. Nous envoyons 100 requêtes par groupes de 30 à la fois à google.com et sauvegardons les données obtenues dans un fichier csv, le code est le suivant :
 ab -g data.csv -n 100 -c 30 google.com/

Nous analysons le résultat

 Logiciel serveur : GFE / 2.0 // Site d'exploitation Serveur Web de Google basé sur Linux Nom d'hôte du serveur : google.com Port du serveur : 80 Chemin du document : / Longueur du document : 262 octets Niveau de concurrence : 30 Temps pris pour les tests : 1 370 secondes Requêtes complètes : 100 Requêtes échouées : 0 Réponses non-2xx : 100 Total transféré : 53100 octets HTML transféré : 26200 octets Requêtes par seconde : 73,01 [# / sec] (moyenne) // moyenne par requête Temps par requête : 410,899 [ms] (moyenne) / / moyenne par requête Temps par requête : 13,697 [ms] (moyenne, sur toutes les requêtes simultanées) // moyenne par total Taux de transfert : 37,86 [Ko/sec] Temps de connexion reçus (ms) // Temps de connexion, de traitement et d'attente min moyenne [+/- sd] médian max Connexion : 42 81 53,0 73 446 Traitement : 48 190 265,7 88 1286 Attente : 46 114 148,2 86 1246 Total : 114 270 274,7 150 1369 Pourcentage des demandes traitées dans un certain délai (ms) 50 % 150 66% 203 75% 222 80% 243 90% 844 95% 953 98% 1088 99% 1369 100% 1369 (demande la plus longue)

Nous voyons qu'il a répondu à 73 requêtes par seconde avec un temps moyen par requête de 410 899 millisecondes et un taux de transfert de 37,86 Ko/sec, nous voyons également comment varient la connexion, le processus et le temps d'attente.

Le fichier de données CSV aura la structure suivante.

Structure CSV

 (heure de début) mar 24 11:53:03 2015 - (secondes) 1427208783 - (ctime) 46 - (dtime) 68 - (ttime) 114 - (wait) 66 (starttime) mar 24 mars 11:53:03 2015 - (secondes) 1427208783 - (ctime) 46 - (dtime) 74 - (ttime) 120 - (wait) 72 (starttime) Mar 24 11:53:03 2015 - (seconds) 1427208783 - (ctime) 64 - (dtime) 56 - (ttime) 120 - (attendre) 56

Ensuite, à partir du terminal avec un éditeur de texte, nous allons créer un fichier texte pour évaluer plusieurs URL du même domaine. L'outil Banc Apache prend en charge jusqu'à 20 000 URL comme les suivantes.

Le fichier aura la structure suivante :

 http://example.com/index.html/ http://example.com/news.html/ http://subdomain.example.com/
Nous testons une requête à la fois :
 ab -g data.csv -n 1000 urls.txt
Dans ce cas, Banc Apache recueillir les adresses de URL.txt et envoyer des requêtes au serveur. Le nom de domaine des URL doit être le même pour toutes les URL.

Cas où 10 utilisateurs simultanés effectuent chacun 10 visites sur le site
Il s'agit d'environ 100 pages qui sont chargées par 10 utilisateurs simultanés et récurrents différents, chaque utilisateur crée 10 pages qui se chargent ou sont affichées séquentiellement dans chaque demande.

Nous testons :

 ab -l -r -n 100 -c -k 10 http://www.eexample.com/clients/
Cela représente une charge maximale sur un site web qui reçoit environ 100 000 visites par mois qui doit être supportée et répondue par le serveur.

Cas où 50 utilisateurs simultanés visitent la même page Web 20 foisIl s'agit du serveur répondant à 1000 pages, soit 50 utilisateurs pour 20 requêtes en même temps, chaque utilisateur fait 20 requêtes aux pages en séquence :

 ab -l -r -n 1000 -c -k50 http://www.eexample.com/chat/
Cela peut être utilisé pour tester un blog ou un système où les utilisateurs ou les visiteurs commentent beaucoup en envoyant de nombreuses demandes comme un chat ou un système de commentaires comme Facebook.

Ce type de test peut être équivalent au trafic d'un site ou d'un blog très actif.

Test rapide de PHP et MySQLNous créons n'importe quelle base de données mysql ou si nous en avons une à tester, nous l'utilisons, alors nous créons le script php appelé absql.php

 AB Tester Php et MySQL 
Nous envoyons 10 000 requêtes au script et donc à MySQL.
 ab -n 1000 -c 5 http://190.165.210.108/absql.php

Analysez les résultats de chaque test avec Banc Apache. Les données les plus importantes sont celles qui nous renseignent sur les demandes et les réponses du serveur :

Analyser les résultats d'ApacheBench1. Combien de requêtes par seconde le serveur peut-il traiter en visualisant ? Les autres indicateurs ne sont pas très utiles car ils ne sont pas représentatifs de quelque chose de réel dans ce contexte.

2. Y a-t-il des erreurs sur la page Web ou la configuration d'Apache ? Lorsque le serveur met du temps à répondre ou plante, il faut analyser s'il s'agit de problèmes de mémoire ou de forte consommation de ressources.

3. À quel niveau de concurrence le serveur Apache commencera-t-il à ralentir ou à planter et combien de temps le temps d'attente sera-t-il ? Si cela se produit à un faible niveau de concurrence, quelque chose ne va pas, nous devrions savoir ce que c'est et ce qui est nécessaire pour que cela fonctionne, peut-être plus de ressources serveur.

3. Facteurs à considérer pour améliorer les performances dans Apache


Performances d'Apache1. module Mod_cache d'Apache à la page de cache des requêtes/résultats. Cela produira une amélioration des performances de 5 à 10 fois par rapport à toutes les autres méthodes combinées.

2. php_memcache gère le cache de données pour les scripts et les requêtes PHP. Cela peut produire une augmentation des performances de 50 à 100 % sur les pages Web.

3. Cacher les plug-ins pour Joomla, WordPress, PrestaShop et certains Frameworks ou CMS.

4. module Mod_expires Apache pour utiliser le cache du visiteur et conserver les pages pendant un certain temps, au lieu de refaire une demande à ces pages et de devoir recharger, cela fonctionne si le Web ne modifie pas son contenu toutes les minutes.

Un autre aspect qui affecte grandement les performances d'Apache est PHP et MySQL, améliorant les performances de MySQL en optimisant la configuration du fichier mon.ini de xampp, wampp ou lampp et optimiser les requêtes ou les requêtes vers le Web qui utilise php et génère du contenu à partir de MySQL, en essayant d'optimiser l'utilisation du journal des requêtes lentes de MySQL pour voir quel est le problème et améliorer les performances.

Si vous souhaitez plus d'informations sur l'utilisation AppacheBench.

Avez-vous aimé et aidé ce tutoriel ?Vous pouvez récompenser l'auteur en appuyant sur ce bouton pour lui donner un point positif

Vous contribuerez au développement du site, partager la page avec vos amis

wave wave wave wave wave