Optimisation du service Apache
Introduction
De nos jours, la plupart des services que nous utilisons sont accessibles depuis Internet. Ainsi, certains sites web font partie du quotidien des internautes et nécessitent donc d’être performants et hautement disponibles. Ces deux notions, bien que différentes, sont pourtant étroitement liées.
En effet, un site toujours disponible mais lent perdra sa fréquentation pour cause d’utilisation trop fastidieuse. Il en est de même pour un site très rapide mais qui souffre d’interruptions de service récurrentes.
Il convient donc d’optimiser les plates-formes web et leurs composants afin de répondre au mieux aux requêtes des clients.
Nous allons ainsi aborder dans ce chapitre différents moyens d’optimisation du service Apache.
Gestion des ressources (matérielles, système, réseau)
1. Mémoire vive
La principale ressource utilisée par Apache est la mémoire vive.
Au démarrage, un processus sous le compte root est créé, suivi de nouveaux processus sous le compte utilisateur et le groupe définis par les directives User et Group.
marty@vm-compilation-eni:~$ sudo ps -ylC httpd
S UID PID PPID C PRI NI RSS SZ WCHAN TTY TIME CMD
S 0 9459 1 0 80 0 5648 40939 - ? 00:00:00 httpd
S 10000 9462 9459 0 80 0 2880 40358 - ? 00:00:00 httpd
S 10000 9463 9459 0 80 0 4520 94312 - ? 00:00:00 httpd
S 10000 9464 9459 0 80 0 4512 94312 - ? 00:00:00 httpd
S 10000 9465 9459 0 80 0 4520 94312 - ? 00:00:00 httpd
Pour connaître l’utilisation mémoire d’Apache, il suffit d’observer la huitième colonne (RSS) qui correspond à la valeur de la mémoire réellement utilisée.
Il s’agit donc d’additionner les valeurs de cette colonne exprimée en kilo-octets :
marty@vm-compilation-eni:~$ sudo ps -ylC httpd|awk '{ SUM += $8}
END { print SUM/1024 }'
21.5625
Grâce à la commande awk, on effectue la somme de la colonne 8 et on passe la valeur obtenue en Mo en divisant par 1024 (octets).
a. Charger les modules strictement nécessaires
Sur ce serveur, il y a donc au total cinq processus consommant environ 21,5 Mo de mémoire vive.
Les modules actuellement chargés sont :
marty@vm-compilation-eni:~$ sudo apachectl -t -D DUMP_MODULES
Loaded Modules:
core_module (static)
so_module (static)
http_module (static)
mpm_event_module (static)
unixd_module (shared)
ssl_module (shared)
authz_core_module (shared)
authn_core_module (shared)
auth_basic_module (shared)
auth_digest_module (shared)
authn_file_module (shared)
authz_user_module (shared)
authz_host_module...