5 conseils pour augmenter les performances de votre serveur Web Apache

5 conseils pour augmenter les performances de votre serveur Web Apache

Selon un récent rapport de Netcraft (une entreprise Internet bien connue qui fournit parmi les autres services statistiques sur l'utilisation du navigateur Web), Apache continue d'être le serveur Web le plus utilisé parmi les sites et les ordinateurs orientés Internet.

5 conseils pour augmenter les performances de votre serveur Web Apache

En outre, Apache continue de vivre la plus grande croissance parmi les meilleurs serveurs Web, suivis de Nginx et IIS. Ainsi, si vous êtes un administrateur système chargé de gérer les installations d'Apache, vous devez savoir comment vous assurer que votre serveur Web fonctionne au meilleur de sa capacité en fonction de vos besoins (ou de votre client).

Dans cet article, nous discuterons de quelques conseils qui vous aideront à vous assurer qu'Apache se déroulera en douceur et sera en mesure de traiter le nombre de demandes que vous attendez de clients éloignés.

Cependant, veuillez garder à l'esprit qu'Apache n'a pas été conçu dans le but de définir des enregistrements de référence - mais, même ainsi, il est toujours capable de fournir des performances élevées dans presque tous les cas d'utilisation que vous pouvez éventuellement penser.

Astuce n ° 1: Gardez toujours Apache au courant de sa dernière version

Il va sans dire que la dernière version d'Apache installée est probablement l'une des premières choses que vous devez considérer. Au 19 novembre 2015, la dernière version d'Apache disponible dans le Centos 7 Les référentiels sont 2.4.6, alors que dans Debian's est 2.4.dix.

Cependant, il peut y avoir une amélioration récente ou une correction de bogue qui a été ajoutée à une version stable nouvellement publiée, qui est ensuite mise à disposition pour télécharger et installer à partir de la source. Des instructions de compilation et d'installation sont également fournies ici - n'oubliez pas que si vous choisissez cette méthode de mise à jour, vous pouvez sauvegarder vos fichiers / sites de configuration actuels par précaution par précaution.

En tout état de cause, vous pouvez vérifier votre version actuellement installée comme suit:

# httpd -v [sur les systèmes basés sur redhat / centos] # apache2 -v [sur les systèmes basés sur Debian / Ubuntu] 
Vérifiez la version Apache

En règle générale, restez avec la méthode de mise à jour fournie par le gestionnaire de package de votre distribution choisie (Yum Update httpd ou Aptitude en toute sécurité Apache2, pour Centos ou Debian, respectivement) à moins qu'il n'y ait aucun autre moyen. Vous pouvez lire les dernières notes de version dans la section de documentation Apache sur le site Web du projet d'Apache HTTP Server.

Astuce n ° 2: Si vous utilisez un noyau de plus de 2 ans.4, envisagez de mettre à niveau maintenant

Pourquoi? Versions du noyau 2.4 et ci-dessus avec l'appel système du noyau SendFile activé par défaut. Cela, à son tour, facilite les transferts de fichiers réseau de haute performance (qui sont souhaités dans le contexte des communications de serveur Web-Client) et permet à Apache de fournir un contenu statique plus rapidement et avec une utilisation plus faible de CPU en effectuant des opérations de lecture et d'envoi simultanées.

Vous pouvez afficher votre noyau actuellement installé avec:

# uname -r 

et comparez-le au dernier noyau stable de www.noyau.org (4.3 au moment de la rédaction de cet article).

Vérifiez la version du noyau Linux

Bien qu'il s'agisse d'un processus non destiné aux débutants, la mise à niveau de votre noyau est un exercice intéressant pour en savoir plus sur les internes de Linux.

Astuce n ° 3: Choisissez le module multi-traitement (MPM) qui fonctionne mieux pour votre cas

En pratique, MPM étendre les fonctionnalités modulaires d'Apache en vous permettant de décider comment configurer le serveur Web pour se lier aux ports réseau sur la machine, accepter les demandes des clients et utiliser des processus (et des threads, alternativement) pour traiter ces demandes.

En commençant par la version 2.4, Apache propose trois MPM différents à choisir, selon vos besoins:

  1. Le préficher MPM utilise plusieurs processus enfants sans fil. Chaque processus gère une connexion à la fois sans créer de threads séparés pour chaque. Sans entrer dans trop de détails, nous pouvons dire que vous voudrez utiliser ce MPM uniquement lors de la débogage d'une application qui utilise, ou si votre application doit gérer, des modules sans fil comme MOD_PHP.
  2. Le ouvrier MPM utilise plusieurs threads par processus d'enfant, où chaque thread gère une connexion à la fois. C'est un bon choix pour les serveurs à haut trafic car il permet de gérer plus de connexions simultanées avec moins de RAM que dans le cas précédent.
  3. Finalement, le événement MPM est le MPM par défaut dans la plupart des installations Apache pour les versions 2.4 et plus. Il est similaire au MPM des travailleurs en ce qu'il crée également plusieurs threads par processus d'enfant mais avec un avantage: il provoque Rester en vie ou inactif Les connexions (alors qu'elles restent dans cet état) à gérer par un seul thread, libérant ainsi une mémoire qui peut être allouée à d'autres threads. Ce MPM n'est pas adapté pour une utilisation avec des modules non sécurisés mod_php, pour lequel un remplacement un tel Php-fpm doit être utilisé à la place.

Pour vérifier le MPM Utilisé par votre installation Apache, vous pouvez faire:

# httpd -v 

L'image ci-dessous montre que ce serveur Web particulier utilise le mpm.

Vérifiez Apache MPM

Pour changer cela, vous devrez modifier:

# / etc / httpd / confre.modules.d / 00-MPM.conf [sur les systèmes basés sur redhat / centos] # / etc / apache2 / mods-disponible /.Charge [sur les systèmes basés sur Debian / Ubuntu] 

Où peut être mpm_event, MPM_Worker, ou mpm_prefork.

et inconnu la ligne qui charge le module souhaité comme tel:

LoadModule MPM_EVENT_MODULE MODULES / MOD_MPM_EVENT.donc 

Note: Pour faire fonctionner l'événement MPM dans Debian, vous devrez peut-être installer le libapache2-mod-fastcgi Package des référentiels non libres.

De plus, pour les centos, vous aurez besoin php-fpm (avec FCGI et mod_fcgid) alors que dans Debian, on l'appelle php5-fpm (avec Apache2-MPM-Event).

Dernier, mais non le moindre, redémarrez le serveur Web et le nouvellement installé php-fpm (ou php5-fpm) service:

Sur Redhat / Centos

# systemctl redémarrer httpd php-fpm && systemctl activer httpd php-fpm 

Sur Debian / Ubuntu

# systemctl redémarrer apache2 php5-fpm && systemctl activer apache2 php5-fpm 

Bien que vous puissiez définir Apache pour utiliser un MPM spécifique, cette configuration peut être remplacée sur une base hôte par virtuel de la même manière que celle indiquée précédemment.

Déposez simplement les balises correspondantes dans le fichier de configuration pour chaque hôte virtuel et vous êtes prêt à partir - mais assurez-vous que vous utilisez un et un seul MPM par VHOST.

Enfin, veuillez noter que quelle que soit la distribution choisie, php-fpm repose sur la mise en œuvre de Fastcgi, C'est la raison pour laquelle j'ai recommandé les installations supplémentaires du package plus tôt.

Pour plus de détails et d'exemples sur php-fpm Et comment cela peut, avec l'événement, le MPM augmente les performances d'Apache, vous devez vous référer à la documentation officielle.

C'est ce que je vois après avoir modifié le MPM par défaut de PreFork vers l'événement dans la même boîte affichée dans l'image précédente:

Choisissez le module Apache MPM

Dans Centos 7, vous devrez vous assurer que le http et https Les services sont activés via le pare-feu et que les interfactions réseau sont correctement ajoutées à la zone par défaut.

Par exemple:

# Firewall-Cmd --Zone = Internal --Add-Interface = Tun6to4 # Firewall-Cmd --zone = interne --add-interface = Tun6to4 --permanent # Firewall-Cmd --set-default-zone = interne # Firewallall -CMD --Add-Service = Http # Firewall-CMD --Add-Service = HTTPS # Firewall-CMD --Add-Service = HTTP --permanent # Firewall-CMD --Add-Service = HTTP -CMD - Reload 

La raison pour laquelle j'élève cela est parce que j'ai récemment rencontré un problème où les paramètres de configuration de Firewalld par défaut dans un Cloud VPS ont empêché php-fpm et Apache à partir du traitement des fichiers PHP.

En tant que test de base (je suis sûr que vous pouvez penser à ceux plus compliqués ou stressants), je vais créer un fichier PHP qui vérifie l'existence d'un autre fichier nommé test.php Dans le même répertoire de deux serveurs CentOS 7 avec les mêmes caractéristiques matérielles et charges mais avec un MPM différent. L'un d'eux utilisera l'événement et l'autre utilisera PreFork:

Comparez l'événement Apache et le module de préferck

Ceci est le code PHP que j'ai enregistré dans un fichier nommé damiffileexistes.php:

 

Ensuite, nous exécuterons l'outil de référence Apache (AB) avec 200 Demandes simultanées jusqu'à 2000 Les demandes sont remplies:

# AB -K -C 100 -N 2000 LocalHost / CheckiFFileExists.php 

Exécutons le test et comparons les résultats. Faites attention aux statistiques de performance:

Test de charge de performances Apache

Comme vous pouvez le voir, les performances du serveur avec l'événement sont très supérieures à son préficher homologue dans tous les aspects de ce test.

Astuce n ° 4: Allouez judicieusement RAM à Apache

L'élément matériel le plus critique à prendre en compte est peut-être le montant de RAM alloué pour chaque processus Apache. Bien que vous ne puissiez pas contrôler cela directement, vous pouvez restreindre le nombre de processus enfants à travers le Travailleurs maximaux directive (anciennement connue sous le nom Les clients de Max à Apache 2.2), qui mettra des limites à l'utilisation de la RAM par Apache. Encore une fois, vous pouvez définir cette valeur par un hôte ou par hôte virtuel.

Pour ce faire, vous devez prendre note de la quantité moyenne de RAM utilisée par Apache, puis la multiplier par le nombre de Travailleurs maximaux, Et c'est la quantité de mémoire qui sera allouée aux processus Apache. Une chose que vous ne voulez jamais que votre serveur Web fasse est de commencer à utiliser Swap, car cela diminuera considérablement ses performances. Ainsi, vous devez toujours garder l'utilisation de RAM par Apache dans les limites que vous pouvez vous permettre et ne jamais compter sur l'échange pour cela.

Par exemple, le bloc suivant restreindra le nombre de clients simultanés pour 30. Si plus de clients frappent l'hôte, ils peuvent ressentir un retard ou une défaillance momentanée qui peut être facilement résolu en rafraîchissant le navigateur. Bien que cela puisse être considéré comme indésirable, il est plus sain pour le serveur et à long terme, mieux pour votre site également.

Vous pouvez placer ce bloc à l'intérieur / etc / httpd / conf / httpd.confli ou / etc / apache2 / apache2.confli, selon que vous utilisez Centos ou Debian.

Veuillez noter que le même principe s'applique à tous MPM - J'utilise un événement ici pour continuer avec le concept décrit dans l'astuce précédent:

 Starterservers 3 minsparethreads 25 maxsparethreads 75 Threadlimit 64 Threadsperchild 25 MaxRequestworkers 30 MaxconnectionsperChild 1000  

Quoi qu'il en soit, il est fortement recommandé de vous référer à l'Apache 2.4 documents pour voir quelles directives sont autorisées pour votre MPM que vous avez choisi.

Astuce n ° 5: Connaissez vos applications

En règle générale, vous ne devez charger aucun module Apache qui n'est pas strictement nécessaire pour que votre application fonctionne. Cela nécessitera au moins une connaissance globale des applications exécutées sur votre serveur, spécialement si vous êtes un administrateur système et qu'il y a une autre équipe en charge du développement.

Vous pouvez répertorier les modules actuellement chargés avec:

# httpd -m [sur les systèmes basés sur redhat / centos] # apache2ctl -m [sur les systèmes basés sur Debian / Ubuntu] 

Pour décharger / désactiver les modules dans Centos, Vous devrez commenter la ligne qui commence par Module de chargement (soit dans le fichier de configuration principale, soit dans un fichier auxiliaire à l'intérieur / etc / httpd / confre.modules.d.

D'autre part, Debian Fournit un outil appelé a2dismod Pour désactiver les modules et est utilisé comme suit:

# A2Dismod module_name 

Pour le permettre:

# a2enmod module_name 

Dans les deux cas, n'oubliez pas de redémarrer Apache pour que les changements prennent effet.

Résumé

Dans cet article, nous avons passé en revue 5 conseils Cela vous aidera à régler le serveur Web Apache et à augmenter ses performances. De plus, vous devez vous rappeler que l'optimisation et les performances sans sécurité sont inutiles, vous pouvez donc vous référer à l'installation mod_pagespeed pour améliorer les performances du serveur Web et l'article des conseils de durcissement Apache dans Tecmint.com aussi.

Puisque nous ne pouvons pas couvrir adéquatement tous les aspects de ce sujet dans cet article, vous pensez peut-être à d'autres idées que vous aimeriez partager avec le reste de la communauté. Si c'est le cas, n'hésitez pas à nous faire savoir en utilisant le formulaire de commentaire ci-dessous.