1 votes

Des conseils sur le dépannage des performances des serveurs web sont nécessaires

Je loue un serveur virtuel basé sur CentOS sur lequel je fais tourner environ 5 sites actifs. Il y a plusieurs mois, j'ai remarqué une dégradation significative des performances de mes sites.

Le premier symptôme était un trop grand nombre (~300) de processus apache en cours d'exécution, après quoi le serveur HTTP ne répondait plus. Le problème disparaissait après le redémarrage mais réapparaissait sporadiquement au bout d'un jour ou d'une semaine et ainsi de suite. J'ai joué avec les options de httpd.config mais je n'ai pas pu me débarrasser de ce problème et la seule solution que j'ai trouvée est de programmer le redémarrage du serveur toutes les 1 heures. Le redémarrage était assez rapide, ce qui a permis de résoudre temporairement le problème.

Cependant, il y a quelques mois, j'ai commencé à observer un autre problème concernant les performances du serveur - périodiquement, les sites répondent trop lentement.

J'ai besoin de conseils ou d'aide pour trouver la source du problème car je ne suis pas sûr de le comprendre pour le moment :

Il semble qu'il y ait assez de mémoire, voici la sortie du haut : Mem : 524288k total, 299252k utilisés, 225036k libres, 0k tampons

L'espace disque est suffisant (d'après "vm -h") :

Filesystem            Size  Used Avail Use% Mounted on
vzfs                   40G   28G   13G  70% /
none                  3.9G  4.0K  3.9G   1% /dev

Et voici des informations sur l'utilisation des ressources provenant de "vmstat -S M 2 100" :

procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0      0    220      0      0    0    0     8   111    0    1  6  4 90  0  0
 0  0      0    220      0      0    0    0     0     0    0  272  0  0 100  0  0
 0  0      0    220      0      0    0    0     0     0    0  176  0  0 100  0  0
 0  0      0    220      0      0    0    0     0     0    0  132  0  0 100  0  0
 0  0      0    220      0      0    0    0     0  1950    0  330  0  0 100  0  0
 2  0      0    220      0      0    0    0     0     4    0 1854 21 19 60  0  0
 2  0      0    210      0      0    0    0     0     4    0 1958 73 23  4  0  0
 2  0      0    199      0      0    0    0     0     4    0  829 41 40 19  0  0
 1  0      0    207      0      0    0    0     0    26    0 1212 47 17 36  0  0
 1  0      0    206      0      0    0    0     0     4    0 1405 50  4 45  0  0
 0  0      0    209      0      0    0    0     4   140    0 1251 34  5 60  0  0
 0  0      0    208      0      0    0    0     0     0    0  213  1  0 99  0  0
 0  0      0    208      0      0    0    0     0     0    0  353  0  0 100  0  0
 0  0      0    208      0      0    0    0     0     6    0  317  0  0 100  0  0
 0  0      0    206      0      0    0    0     0     0    0  299  0  0 100  0  0
 0  0      0    214      0      0    0    0    12   114    0  336  0  1 99  0  0

D'ailleurs, les lignes avec des CS (context switching values) élevés correspondent à des moments où j'ai rafraîchi quelques pages du site.

Tout conseil est le bienvenu.

0voto

amos Points 191

En général, je trouve que lorsque Apache est configuré de telle sorte qu'il est autorisé à engendrer plus d'enfants que vous ne pouvez en gérer, il se bloque une fois qu'il a atteint la limite de votre système. Il n'est pas très doué pour libérer des ressources une fois qu'il est encombré. Je vous suggère donc de réduire le nombre maximum d'enfants (de beaucoup) pour apache pour commencer. Voyez combien de mémoire un enfant utilise typiquement. Ensuite, divisez votre mémoire vive maximale avec la quantité utilisée par un enfant et vous pourrez utiliser ce résultat comme point de départ pour ajuster le nombre optimal d'enfants.

Ma réponse peut être biaisée, mais je ne trouve pas qu'Apache soit très bon en tant que serveur web... Il est beaucoup trop gourmand en ressources qu'il ne devrait l'être et constitue donc un mauvais choix pour les petits environnements comme le VPS que vous utilisez. Essayez une alternative comme nginx (avec php-fpm si vous utilisez php par exemple), ou varnish, etc. Ils ne remplacent pas apache à l'identique, mais ce sont des serveurs web que je trouve beaucoup plus efficaces et moins enclins à se bloquer à cause de problèmes de ressources.

Par ailleurs, lorsque vous publiez des questions de ce type, je vous recommande de publier des statistiques sur des sujets tels que top car ils fournissent une image plus complète, bien que générale, pendant votre période de pointe/trouble.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X