Forum général.général directive KeepAlive

Posté par  .
Étiquettes : aucune
0
15
avr.
2008

bonjour a tous,

j'ai un serveur web apache 2 sur redhat el5. lorsque j'ai la directive KeepAlive d'activée, j'ai des pointes en charge cpu qui vont jusqu'a 72% voir 80%.
du coup je l'ai desactivée. voici la configue concernant le keepalive:

KeepAlive On

MaxKeepAliveRequests 100

KeepAliveTimeout 15

pour le prefork mpm


StartServers 8
MinSpareServers 5
MaxSpareServers 20
ServerLimit 256
MaxClients 256
MaxRequestsPerChild 4000


pour le worker mpm


StartServers 2
MaxClients 150
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0



sur ce serveur je n'ai que des sites developpés en php.

j'aurrais aimé savoir dans quel cas utilisé la directive keepalive ?
est elle gérée de maniere correcte dans mon cas ?
  • # RTFM

    Posté par  . Évalué à 3.

    Tout est expliqué dans la doc: l'interet de cette directive, les autres paramètres tweakable, etc...
    http://httpd.apache.org/docs/2.0/mod/core.html#keepalive

    j'aurrais aimé savoir dans quel cas utilisé la directive keepalive ?
    Globalement, le keepalive te permet de garder la connexion au client ouverte pour ses prochaines requêtes.
    Tu économises donc toute la phase de connexion ...

    est elle gérée de maniere correcte dans mon cas ?
    est elle gérée de maniere correcte dans mon cas ?

    On rentre ici dans le domaine du tuning Apache assez fin.
    Sans des données telles que le traffic de ton site, la durée d'une session de surf standard, le nombre de clients simultanés, etc.. on ne peut pas t'aider.
    • [^] # Re: RTFM

      Posté par  . Évalué à 1.

      salut gérald,

      oui j'ai vu la doc, mais pour le coup ça ne me disait pas trop si dans mon cas je devais l'activer ou non (avec des reglage adequat). pour le coup vu la montée en charge cpu je pense qu'il valait mieux la couper.
      c'est vrais que je donne pas beaucoup d'info pour le tuning :-p
      j'ai collé un awstat sur les sites du serveur. y a 3 sites.
      en gros en bande passante sur les 15 premiers jours d'avril ça donne
      3.4gb , 1.4gb, 18.81gb . par jour ça donne respectivement du
      160 a 300 Mb, 50 a 200 Mb, 800Mb a 1.5Gb.

      en terme de durée de visites respectivement c'est:
      72% entre 0-30sec, 51.7% entre 0-30, 68% entre 0-30sec

      par jours j'ai respectivement aussi:

      en moyenne 30000 hits, entre 16000 et 50000 hits, 13000 hits.

      bon je ne sais pas si ça peut aider comme infos :(
      • [^] # Re: RTFM

        Posté par  . Évalué à 2.

        Typiquement, pour des sessions de surf courtes (tu as du te gourer dans ton précédent post ...) le keepalive sera assez inutile.

        Tu peux dans ce cas soit le desactiver, soit mettre un timeout court afin
        de que le fils ayant géré les requêtes se termine rapidement.

        Il y a pas mal de papier sur le sujet sur le net, en voici un expliquant assez bien les impacts de ces directives:
        http://virtualthreads.blogspot.com/2006/01/tuning-apache-par(...)
    • [^] # Re: RTFM

      Posté par  . Évalué à 0.

      salut gérald,

      oui j'ai vu la doc, mais pour le coup ça ne me disait pas trop si dans mon cas je devais l'activer ou non (avec des reglage adequat). pour le coup vu la montée en charge cpu je pense qu'il valait mieux la couper.
      c'est vrais que je donne pas beaucoup d'info pour le tuning :-p
      j'ai collé un awstat sur les sites du serveur. y a 3 sites.
      en gros en bande passante sur les 15 premiers jours d'avril ça donne
      3.4gb , 1.4gb, 18.81gb . par jour ça donne respectivement du
      160 a 300 Mb, 50 a 200 Mb, 800Mb a 1.5Gb.

      en terme de durée de visites respectivement c'est:
      72% entre 0-30sec, 51.7% entre 0-30, 68% entre 0-30sec

      par jours j'ai respectivement aussi:

      en moyenne 30000 hits, entre 16000 et 50000 hits, 13000 hits.

      bon je ne sais pas si ça peut aider comme infos :(
  • # KeepAlive off

    Posté par  (site web personnel) . Évalué à 1.

    D'expérience, sur des sites à fort trafic (plusieurs centaines de mégas-bits par serveur en sortie en période de charge), il vaut mieux les désactiver, ça maintient des connexions pour rien, et donc ça augmente artificiellement le nombre de process Apache connectés (là ou justement on a besoin de diminuer ce nombre de façon à garder un écart correct entre le nombre de clients connectés et le MaxClient). Ca peut faire vraiment une grosse différence, en terme d'utilisation mémoire et de temps CPU.

    L'excellent site de Willy Tarreau donne une très bonne explication : http://1wt.eu/articles/2006_lb/index_10.html#tune
  • # KeepAliveTimeout

    Posté par  . Évalué à 4.

    D'expérience, le KeepAliveTimeout est correctement géré par Apache; mais son paramétrage n'est pas génial.

    Sur un serveur qui sert 4 pages par jour; sur la machine d'un développeur, on peut mettre un Timeout à plusieurs secondes; mais le gain est vraiment ridicule.

    Sur un serveur web dont c'est le boulot principal et qui travail pas mal; le KeepAliveTimout doit être réduit au strict minimum:
    - Si le navigateur est en train d'afficher une page et qu'il a besoin d'une douzaine d'éléments (CSS, javascript, Images...), il doit pouvoir recycler les connexions (normalement il n'en ouvre que deux).
    - Si le navigateur a terminé de charger tous les éléments de la page, alors il faut fermer la connexion.

    Donc il faudrait pouvoir régler le KeepAliveTimeout à 300 ou 400ms; mais ce n'est pas possible.

    Du coup, je règle toujours le KeepAliveTimout à 1; c'est le meilleur compromis que j'ai trouvé entre économiser sur l'établissement de connexions et ne pas trainer des connexions ouvertes pour rien.
  • # Valeur grosse très inutile

    Posté par  (site web personnel) . Évalué à 1.

    Tu peux te permettre de mettre un KeepAlive entre 3 et 5 secondes, c'est largement suffisant.

    Même 15, c'est limite trop, vaut mieux parfois refaire 5 connection d'affilée plutôt que de bloquer 3 thread pendant 15 secondes.

    En mettant un KeepAlive très bas, seulement des choses comme les images ou autre auront le temps de passer dans la même connection, et c'est largement suffisant si t'as beaucoup d'utilisateurs en même temps, et si ils jouent pas au clickodrome.

    Sinon si t'as que 5 utilisateurs, et qu'ils font joujou à cliquer vingt mille fois par jour, vaut mieux un gros KeepAlive.

Suivre le flux des commentaires

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