Forum Linux.général process apache gourmand
bonjours a tous,
en faisant un ps -aux sur mon serveur web (c'est une redhat el5 avec apache 2 et php 5.2.5) je m'appercois que j'ai 4 process httpd qui apparement utilisent 14%, 15%, 11%, 10% du cpu, en plus des autres. comment puis je m'y prendre pour savoir qu'est ce qui fait que ces process utilisent autant le cpu? j'ai 4 sites web qui sont sur ce serveur.
# mod_status
Posté par Sébastien Koechlin . Évalué à 2.
Activer mod_status et aller sur la page dynamique générée par le module pour voir quels sont les requêtes en cours.
Configurer les logs pour tracer le temps de service de chaque requête, et ensuite faire une petite analyse pour déterminé quels sont les pages qui demandent beaucoup de temps.
[^] # Re: mod_status
Posté par malakof . Évalué à 1.
j'ai activé le mod_status.c'est plutot pas mal. par contre pour tracer le temps de service des requetes j'ai un doute. je dois ajouter %T dans LogFormat ou %t ?
selon la doc %T me semble aproprié mais j'ai un doute.
[^] # Re: mod_status
Posté par Sébastien Koechlin . Évalué à 2.
Par contre, les boulets applicatifs, on en trouve des milliers partout sur le net: PHP qui n'a pas de contexte d'application ou global, application Java qui consomme des tonnes de mémoire ou qui ont des fuites mémoire, scripts PHP mal fichus...
Donc a vu de nez avec les faibles informations que tu nous donnes, je dirais: application PHP mal fichue qui consomme beaucoup de CPU.
Repérer les pages qui demandent beaucoup de temps à être servies devraient permettre de retrouver le script fautif.
[^] # Re: mod_status
Posté par Sébastien Koechlin . Évalué à 2.
http://httpd.apache.org/docs/2.0/mod/mod_log_config.html
%D: The time taken to serve the request, in microseconds.
%T: The time taken to serve the request, in seconds.
Donc je pense que c'est %D et non %T.
%t n'a rien à voir, ça trace la date à laquelle a eu lieu la requête.
[^] # Re: mod_status
Posté par malakof . Évalué à 1.
alors pour en revenir a mon prob, c'etait plutot pas mal ton idée de loguer le temps de service des requetes. en metant mes logs dans un fichier excel et en reorganisant la colone correspondant au temps de service des requetes je me suis appercu que certainne requetes prenaient plus de 600 secs (oui oui 600).
en copinant ces requetes plusieur fois dans un navigateur, j'arrive a reproduire mon probleme. maintenant reste plus qu'a voir avec les dev ce que fout cette p... de requette. je pense qu'il y a 90% de chance que le probleme vienne de là.
en tout cas merci pour votre aide :)
# apache + mod_php = interpreteur
Posté par Mouns (site web personnel) . Évalué à 2.
Donc comme pour les scripts python, perl, shell, ... , ton code PHP peut etre bien écrit et optimisé pour la tenue en charge.
Sauf que comme pour la trop grande majorité des scripts python, perl, shell, ton code PHP que tu fais tourné est mal codé avec des algorithmes consommateurs de CPU et pleins de trucs qui ne servent à rien.
Donc si c'est toi qui a codé ce qui tourne, je te conseille vivement de te pencher sur les bouquins d'algorithmiques théoriques, sur les strategies d'optimisation & co ...
Si tu es juste l'admin ou que tu as choisi le soft qui tourne, trouves-en un bien foutu qui fasse la même chose, ca doit exister et il sera dur à trouver.
donc mod_status t'aidera, et si tu as le loisir de faire le goret "ab" ( apache benchmark ) est un bon stress test pour savoir ou cela merde :)
[^] # Re: apache + mod_php = interpreteur
Posté par malakof . Évalué à 1.
je vais essayer apache benchmark.pour le moment y a que 4 sites sur ce serveur.mais il risque d'y en avoir plus a l'avenir (il risque pas, c'est certain).
la difficultée c'est de savoir deja quel est le site qui fout le dawa et ensuite de trouver les ou la requette.
[^] # Re: apache + mod_php = interpreteur
Posté par Mouns (site web personnel) . Évalué à 2.
as tu un awstats ou un webalizer ?
as tu apachetop ?
Maintenant, il ne faut pas croire que "projet réputé avec une super communauté" est un gage sur la qualité et la performance du code.
# C'est pas grave...
Posté par ondex2 . Évalué à 1.
Apache reçoit une requête, il veut la traiter le plus vite possible. Si ton serveur ne fait d'autre à ce moment, il laissera Apache faire ce qu'il veut.
Mais bon, si un seul processus Apache (ou plusieurs) consomme du CPU pendant plusieurs secondes sur une page simple : oui, il y a un problème.
[^] # Re: C'est pas grave...
Posté par malakof . Évalué à 1.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.