Forum général.général Trouver goulot d'étranglement d'Apache

Posté par (page perso) .
Tags : aucun
1
3
déc.
2008
Bonjour,

J'ai un serveur qui fait principalement tourner Apache+PHP+MySQL et aux heures de pointe, apache fait monter le load average de la machine à plus de 3-4.

Alors je voudrais repérer quelles sont les applications web qui consomment le plus de ressources. Une idée sur la meilleure façon de s'y prendre ?

Merci par avance.
  • # Pour mysql

    Posté par . Évalué à 3.

    Tu as le log slow query, qui te permet de loguer les requêtes qui durent depuis plus de x sec.
  • # top

    Posté par . Évalué à 2.

    etre present au moment ou ca monte en charge

    pour faire un top pour voir lequel de mysql ou apache est en faute
    voir s'il n'y a pas un script de backup qui se lance à ce moment là

    si tu connais les horaires, tu peux aller lire les logs apache pour savoir s'il n'y a pas un pique de charge en provenance de certains domaines (y compris les moteurs de recherche qui viennent indexer ton site)
    • [^] # Re: top

      Posté par (page perso) . Évalué à 2.

      Comme je l'ai dit, c'est bien Apache le principal coupable d'après la commande top.
      J'ai déjà retiré la génération de logs awstats pour le lancer seulement la nuit.

      Les heures de charge correspond au moment où les utilisateurs du serveur rentrent chez eux, c'est à dire en fin de journée, début de soirée.

      C'est vraiment une charge due aux utilisateurs et non à des moteurs de recherche. Ce n'est pas un petit site, il y a une vraie charge (environ 8000 pages vues/heure en soirée).
      • [^] # Re: top

        Posté par . Évalué à 2.

        8000/3600 ca fait pas grand chose...
        le top sort quels process en actif ? et surtout quelle priorité ?
        (un nice -19 permanent, par ex seti@home like, est à décompter du load avg)
        • [^] # Re: top

          Posté par (page perso) . Évalué à 2.

          Non pardon, c'est beaucoup + que 8000 en fait, j'avais les logs du webmail séparés et c'est lui qui génère le plus de trafic.
  • # /server-status

    Posté par (page perso) . Évalué à 4.

    Active server-status et appelle l'URL sur ton browser. Tu trouveras des infos qui, mixées à celles de 'top' te permettront de te faire une bonne idée de la situation.

    La gelée de coings est une chose à ne pas avaler de travers.

    • [^] # Re: /server-status

      Posté par (page perso) . Évalué à 2.

      Merci, je viens de regarder ça et c'est toujours des informations supplémentaires mais c'est un peu galère à interpréter (si quelqu'un a un lien explicatif, je suis preneur).

      Par contre, je suis en train de tester apachetop qui me donne des résultats intéressants (bien que là encore difficile à interpréter vu le nombre de requêtes..).
      • [^] # Re: /server-status

        Posté par . Évalué à 1.

        Si un ou deux process apaches se détachent du lot dans un top, tu pourrais retrouver via la page server-status, la page correspondante (bon faut que les process reste suffisement longtemps).
  • # ratio

    Posté par . Évalué à 5.

    Un load avg de 3/4 ne veut rien dire si tu donnes pas le nombre de cores !
    • [^] # Re: ratio

      Posté par (page perso) . Évalué à 2.

      Pardon, un seul core avec hyperthreading (kernel 2.6 SMP).

      C'est un P4@3.06Ghz.
  • # Cacti

    Posté par (page perso) . Évalué à 4.

    Un bon système de graphage t'aiderait surement.

    Tu graphe : la charge (load), l'utilisation cpu et les io pour savoir si cela vien du soft où du hard.

    Ensuite tu graphe les différentes url (ou au moin les différents virtualhost) pour savoir lesquelles sont accédées en masse au même moment que ta montée en charge.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.