fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe<?xml version="1.0" encoding="ISO-8859-1"?>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
fd9abdda70912b99b24e3bf1a38f26fde908a74cnd<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head>
fd9abdda70912b99b24e3bf1a38f26fde908a74cnd<meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
fd9abdda70912b99b24e3bf1a38f26fde908a74cnd<!--
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe This file is generated from xml source: DO NOT EDIT
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe -->
96ad5d81ee4a2cc66a4ae19893efc8aa6d06fae7jailletc<title>Optimisation des performances d'Apache - Serveur Apache HTTP Version 2.5</title>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe<link href="/style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe<link href="/style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
d29d9ab4614ff992b0e8de6e2b88d52b6f1f153erbowen<link href="/style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /><link rel="stylesheet" type="text/css" href="/style/css/prettify.css" />
2e545ce2450a9953665f701bb05350f0d3f26275nd<script src="/style/scripts/prettify.min.js" type="text/javascript">
d29d9ab4614ff992b0e8de6e2b88d52b6f1f153erbowen</script>
d29d9ab4614ff992b0e8de6e2b88d52b6f1f153erbowen
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe<link href="/images/favicon.ico" rel="shortcut icon" /></head>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe<body id="manual-page"><div id="page-header">
af33a4994ae2ff15bc67d19ff1a7feb906745bf8rbowen<p class="menu"><a href="/mod/">Modules</a> | <a href="/mod/quickreference.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="/glossary.html">Glossaire</a> | <a href="/sitemap.html">Plan du site</a></p>
3f08db06526d6901aa08c110b5bc7dde6bc39905nd<p class="apache">Serveur Apache HTTP Version 2.5</p>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe<img alt="" src="/images/feather.gif" /></div>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe<div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="/images/left.gif" /></a></div>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe<div id="path">
3f08db06526d6901aa08c110b5bc7dde6bc39905nd<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">Serveur HTTP</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../">Version 2.5</a> &gt; <a href="./">Documentations diverses</a></div><div id="page-content"><div id="preamble"><h1>Optimisation des performances d'Apache</h1>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe<div class="toplang">
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe<p><span>Langues Disponibles: </span><a href="/en/misc/perf-tuning.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe<a href="/fr/misc/perf-tuning.html" title="Fran�ais">&nbsp;fr&nbsp;</a> |
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe<a href="/ko/misc/perf-tuning.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
f086b4b402fa9a2fefc7dda85de2a3cc1cd0a654rjung<a href="/tr/misc/perf-tuning.html" hreflang="tr" rel="alternate" title="T�rk�e">&nbsp;tr&nbsp;</a></p>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe</div>
b475917ddf898282aa51ce31b3275c2c4783ce98coar<div class="outofdate">Cette traduction peut �tre p�rim�e. V�rifiez la version
b475917ddf898282aa51ce31b3275c2c4783ce98coar anglaise pour les changements r�cents.</div>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <p>Apache 2.x est un serveur web � usage g�n�ral, con�u dans un but
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe d'�quilibre entre souplesse, portabilit� et performances. Bien que non
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe con�u dans le seul but d'�tablir une r�f�rence en la mati�re,
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe Apache 2.x est capable de hautes performances dans de nombreuses situations
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe du monde r�el.</p>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <p>Compar�e � Apache 1.3, la version 2.x comporte de nombreuses
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe optimisations suppl�mentaires permettant d'am�liorer le d�bit du serveur
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe et sa personnalisation. La plupart de ces am�liorations sont activ�es par
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe d�faut. Cependant, certains choix de configuration � la compilation et �
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe l'ex�cution peuvent affecter les performances de mani�re significative. Ce
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe document d�crit les options qu'un administrateur de serveur peut configurer
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe pour am�liorer les performances d'une installation d'Apache 2.x. Certaines
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe de ces options de configuration permettent au d�mon httpd de mieux tirer
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe parti des possibilit�s du mat�riel et du syst�me d'exploitation, tandis
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe que d'autres permettent � l'administrateur de privil�gier la vitesse
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe par rapport aux fonctionnalit�s.</p>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe </div>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe<div id="quickview"><ul id="toc"><li><img alt="" src="/images/down.gif" /> <a href="#hardware">Probl�mes mat�riels et relatifs au syst�me d'exploitation</a></li>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe<li><img alt="" src="/images/down.gif" /> <a href="#runtime">Optimisation de la configuration � l'ex�cution</a></li>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe<li><img alt="" src="/images/down.gif" /> <a href="#compiletime">Optimisation de la configuration � la compilation</a></li>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe<li><img alt="" src="/images/down.gif" /> <a href="#trace">Appendice : Analyse d�taill�e d'une trace</a></li>
30471a4650391f57975f60bbb6e4a90be7b284bfhumbedooh</ul><ul class="seealso"><li><a href="#comments_section">Commentaires</a></li></ul></div>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe<div class="section">
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe<h2><a name="hardware" id="hardware">Probl�mes mat�riels et relatifs au syst�me d'exploitation</a></h2>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <p>Le principal probl�me mat�riel qui affecte les performances du serveur
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe web est la m�moire vive (RAM). Un serveur web ne devrait jamais avoir �
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe utiliser le swap, car le swapping augmente le temps de r�ponse de chaque
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe requ�te au del� du point que les utilisateurs consid�rent comme
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe "trop lent". Ceci incite les utilisateurs � cliquer sur "Stop", puis
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe "Charger � nouveau", ce qui a pour effet d'augmenter encore la charge
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe du serveur. Vous pouvez, et m�me devez d�finir la valeur de la directive
b7f8d802ecaed65eada1fc31472d06d8460d5528igalic <code class="directive"><a href="/mod/mpm_common.html#maxrequestworkers">MaxRequestWorkers</a></code> de fa�on � ce que
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe votre serveur ne lance pas un nombre de processus enfants tel qu'il
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe commence � faire du swapping. La m�thode pour y parvenir est
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe simple : d�terminez la taille de votre processus Apache standard en
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe consultant votre liste de processus � l'aide d'un outil tel que
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <code>top</code>, et divisez votre quantit� totale de m�moire disponible
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe par cette taille, tout en gardant un espace suffisant
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe pour les autres processus.</p>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <p>Hormis ce r�glage relatif � la m�moire, le reste est trivial : le
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe processeur, la carte r�seau et les disques doivent �tre suffisamment
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe rapides, o� "suffisamment rapide" doit �tre d�termin� par
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe l'exp�rience.</p>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <p>Le choix du syst�me d'exploitation d�pend principalement du
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe contexte local. Voici cependant quelques conseils qui se sont
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe g�n�ralement av�r�s utiles :</p>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <ul>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <li>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <p>Ex�cutez la derni�re version stable et le niveau de patches le
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe plus haut du syst�me d'exploitation que vous avez choisi. De nombreux
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe �diteurs de syst�mes d'exploitation ont am�lior� de mani�re
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe significative les performances de leurs piles TCP et de leurs
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe biblioth�ques de thread ces derni�res ann�es.</p>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe </li>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <li>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <p>Si votre syst�me d'exploitation poss�de un appel syst�me
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <code>sendfile(2)</code>, assurez-vous d'avoir install� la version
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe et/ou les patches n�cessaires � son activation. (Pour Linux, par
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe exemple, cela se traduit par Linux 2.4 ou plus. Pour les versions
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe anciennes de Solaris 8, vous pouvez �tre amen� � appliquer un patch.)
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe Sur les syst�mes o� il est disponible, <code>sendfile</code> permet
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe � Apache 2 de servir les contenus statiques plus rapidement, tout en
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe induisant une charge CPU inf�rieure.</p>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe </li>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe </ul>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe<div class="section">
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe<h2><a name="runtime" id="runtime">Optimisation de la configuration � l'ex�cution</a></h2>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <table class="related"><tr><th>Modules Apparent�s</th><th>Directives Apparent�es</th></tr><tr><td><ul><li><code class="module"><a href="/mod/mod_dir.html">mod_dir</a></code></li><li><code class="module"><a href="/mod/mpm_common.html">mpm_common</a></code></li><li><code class="module"><a href="/mod/mod_status.html">mod_status</a></code></li></ul></td><td><ul><li><code class="directive"><a href="/mod/core.html#allowoverride">AllowOverride</a></code></li><li><code class="directive"><a href="/mod/mod_dir.html#directoryindex">DirectoryIndex</a></code></li><li><code class="directive"><a href="/mod/core.html#hostnamelookups">HostnameLookups</a></code></li><li><code class="directive"><a href="/mod/core.html#enablemmap">EnableMMAP</a></code></li><li><code class="directive"><a href="/mod/core.html#enablesendfile">EnableSendfile</a></code></li><li><code class="directive"><a href="/mod/core.html#keepalivetimeout">KeepAliveTimeout</a></code></li><li><code class="directive"><a href="/mod/prefork.html#maxspareservers">MaxSpareServers</a></code></li><li><code class="directive"><a href="/mod/prefork.html#minspareservers">MinSpareServers</a></code></li><li><code class="directive"><a href="/mod/core.html#options">Options</a></code></li><li><code class="directive"><a href="/mod/mpm_common.html#startservers">StartServers</a></code></li></ul></td></tr></table>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <h3><a name="dns" id="dns">HostnameLookups et autres consid�rations � propos du DNS</a></h3>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <p>Avant Apache 1.3, la directive
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <code class="directive"><a href="/mod/core.html#hostnamelookups">HostnameLookups</a></code> �tait positionn�e
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe par d�faut � <code>On</code>. Ce r�glage augmente le temps de r�ponse de
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe chaque requ�te car il entra�ne une recherche DNS et le traitement de la
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe requ�te ne pourra pas �tre achev� tant que cette recherche ne sera
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe pas termin�e. Avec Apache 1.3, ce r�glage est d�fini par d�faut �
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <code>Off</code>. Si vous souhaitez que les adresses dans vos fichiers
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe journaux soient r�solues en noms d'h�tes, utilisez le programme
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <code class="program"><a href="/programs/logresolve.html">logresolve</a></code> fourni avec Apache, ou un des nombreux
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe paquets g�n�rateurs de rapports sur les journaux disponibles.</p>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <p>Il est recommand� d'effectuer ce genre de traitement a posteriori
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe de vos fichiers journaux sur une autre machine que celle qui h�berge le
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe serveur web en production, afin que cette activit� n'affecte pas les
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe performances du serveur.</p>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <p>Si vous utilisez une directive
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <code><code class="directive"><a href="/mod/mod_access_compat.html#allow">Allow</a></code>from domain</code>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe ou
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <code><code class="directive"><a href="/mod/mod_access_compat.html#deny">Deny</a></code> from domain</code>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe (ce qui signifie que vous utilisez un nom d'h�te ou un nom de domaine �
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe la place d'une adresse IP), vous devrez compter avec deux recherches
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe DNS (une recherche inverse suivie d'une recherche directe pour
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe s'assurer que l'adresse IP n'a pas �t� usurp�e). C'est pourquoi il est
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe pr�f�rable, pour am�liorer les performances, d'utiliser des adresses IP
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe plut�t que des noms lorsqu'on utilise ces directives, du moins chaque
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe fois que c'est possible.</p>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <p>Notez qu'il est possible de modifier la port�e des directives, en les
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe pla�ant par exemple � l'int�rieur d'une section
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <code>&lt;Location /server-status&gt;</code>. Les recherches DNS ne
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe seront alors effectu�es que pour les requ�tes qui satisfont aux crit�res.
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe Voici un exemple qui d�sactive les recherches DNS sauf pour les fichiers
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <code>.html</code> et <code>.cgi</code> :</p>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
4aa603e6448b99f9371397d439795c91a93637eand <pre class="prettyprint lang-config">HostnameLookups off
c32f362cdcca385130706c801328eb8fbb25b9fehumbedooh&lt;Files ~ "\.(html|cgi)$"&gt;
c32f362cdcca385130706c801328eb8fbb25b9fehumbedooh HostnameLookups on
4aa603e6448b99f9371397d439795c91a93637eand&lt;/Files&gt;</pre>
c32f362cdcca385130706c801328eb8fbb25b9fehumbedooh
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <p>Mais m�me dans ce cas, si vous n'avez besoin de noms DNS que dans
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe certains CGIs, vous pouvez effectuer l'appel � <code>gethostbyname</code>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe dans les CGIs sp�cifiques qui en ont besoin.</p>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <h3><a name="symlinks" id="symlinks">FollowSymLinks et SymLinksIfOwnerMatch</a></h3>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <p>Chaque fois que la ligne <code>Options FollowSymLinks</code> sera
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe absente, ou que la ligne <code>Options SymLinksIfOwnerMatch</code> sera
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe pr�sente dans votre espace d'adressage, Apache devra effectuer des
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe appels syst�me suppl�mentaires pour v�rifier la pr�sence de liens
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe symboliques. Un appel suppl�mentaire par �l�ment du chemin du fichier.
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe Par exemple, si vous avez :</p>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
4aa603e6448b99f9371397d439795c91a93637eand <pre class="prettyprint lang-config">DocumentRoot /www/htdocs
c32f362cdcca385130706c801328eb8fbb25b9fehumbedooh&lt;Directory /&gt;
c32f362cdcca385130706c801328eb8fbb25b9fehumbedooh Options SymLinksIfOwnerMatch
4aa603e6448b99f9371397d439795c91a93637eand&lt;/Directory&gt;</pre>
c32f362cdcca385130706c801328eb8fbb25b9fehumbedooh
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <p>et si une requ�te demande l'URI <code>/index.html</code>, Apache
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe effectuera un appel � <code>lstat(2)</code> pour
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <code>/www</code>, <code>/www/htdocs</code>, et
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <code>/www/htdocs/index.html</code>. Les r�sultats de ces appels �
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <code>lstat</code> ne sont jamais mis en cache, ils devront donc �tre
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe g�n�r�s � nouveau pour chaque nouvelle requ�te. Si vous voulez absolument
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe v�rifier la s�curit� des liens symboliques, vous pouvez utiliser une
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe configuration du style :</p>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
4aa603e6448b99f9371397d439795c91a93637eand <pre class="prettyprint lang-config">DocumentRoot /www/htdocs
c32f362cdcca385130706c801328eb8fbb25b9fehumbedooh&lt;Directory /&gt;
c32f362cdcca385130706c801328eb8fbb25b9fehumbedooh Options FollowSymLinks
c32f362cdcca385130706c801328eb8fbb25b9fehumbedooh&lt;/Directory&gt;
c32f362cdcca385130706c801328eb8fbb25b9fehumbedooh
c32f362cdcca385130706c801328eb8fbb25b9fehumbedooh&lt;Directory /www/htdocs&gt;
c32f362cdcca385130706c801328eb8fbb25b9fehumbedooh Options -FollowSymLinks +SymLinksIfOwnerMatch
4aa603e6448b99f9371397d439795c91a93637eand&lt;/Directory&gt;</pre>
c32f362cdcca385130706c801328eb8fbb25b9fehumbedooh
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <p>Ceci �vite au moins les v�rifications suppl�mentaires pour le chemin
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe d�fini par <code class="directive"><a href="/mod/core.html#documentroot">DocumentRoot</a></code>. Notez que
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe vous devrez ajouter des sections similaires si vous avez des chemins
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe d�finis par les directives
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <code class="directive"><a href="/mod/mod_alias.html#alias">Alias</a></code> ou
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <code class="directive"><a href="/mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> en dehors de
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe la racine de vos documents. Pour am�liorer les performances, et supprimer
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe toute protection des liens symboliques, ajoutez l'option
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <code>FollowSymLinks</code> partout, et n'utilisez jamais l'option
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <code>SymLinksIfOwnerMatch</code>.</p>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
c7d7b17e921d92419473ebe85ed7e4512001f68fhumbedooh <h3><a name="htaccess" id="htaccess">AllowOverride</a></h3>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <p>Dans toute partie de votre espace d'adressage o� vous autoriserez
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe la surcharge de la configuration (en g�n�ral � l'aide de fichiers
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <code>.htaccess</code>), Apache va tenter d'ouvrir <code>.htaccess</code>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe pour chaque �l�ment du chemin du fichier demand�. Par exemple, si vous
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe avez : </p>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
4aa603e6448b99f9371397d439795c91a93637eand <pre class="prettyprint lang-config">DocumentRoot /www/htdocs
c32f362cdcca385130706c801328eb8fbb25b9fehumbedooh&lt;Directory /&gt;
c32f362cdcca385130706c801328eb8fbb25b9fehumbedooh AllowOverride all
4aa603e6448b99f9371397d439795c91a93637eand&lt;/Directory&gt;</pre>
c32f362cdcca385130706c801328eb8fbb25b9fehumbedooh
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <p>et qu'une requ�te demande l'URI <code>/index.html</code>, Apache
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe tentera d'ouvrir <code>/.htaccess</code>, <code>/www/.htaccess</code>,
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe et <code>/www/htdocs/.htaccess</code>. Les solutions sont similaires �
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe celles �voqu�es pr�c�demment pour <code>Options FollowSymLinks</code>.
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe Pour am�liorer les performances, utilisez <code>AllowOverride None</code>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe pour tous les niveaux de votre espace d'adressage.</p>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <h3><a name="negotiation" id="negotiation">N�gociation</a></h3>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <p>Dans la mesure du possible, �vitez toute n�gociation de contenu si
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe vous tenez au moindre gain en performances. En pratique toutefois,
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe les b�n�fices de la n�gociation l'emportent souvent sur la diminution
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe des performances.
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe Il y a cependant un cas dans lequel vous pouvez acc�l�rer le serveur.
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe Au lieu d'utiliser une directive g�n�rique comme :</p>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
888cb40bdeec5abf452bd85d6bf63b26d5913d4chumbedooh <pre class="prettyprint lang-config">DirectoryIndex index</pre>
c32f362cdcca385130706c801328eb8fbb25b9fehumbedooh
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <p>utilisez une liste explicite d'options :</p>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
888cb40bdeec5abf452bd85d6bf63b26d5913d4chumbedooh <pre class="prettyprint lang-config">DirectoryIndex index.cgi index.pl index.shtml index.html</pre>
c32f362cdcca385130706c801328eb8fbb25b9fehumbedooh
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <p>o� vous placez le choix courant en premi�re position.</p>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <p>Notez aussi que cr�er explicitement un fichier de
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <code>correspondances de type</code> fournit de meilleures performances
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe que l'utilisation des <code>MultiViews</code>, car les informations
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe n�cessaires peuvent �tre simplement obtenues en lisant ce fichier, sans
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe avoir � parcourir le r�pertoire � la recherche de types de fichiers.</p>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <p>Par cons�quent, si la n�gociation de contenu est n�cessaire pour votre
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe site, pr�f�rez les fichiers de <code>correspondances de type</code> aux
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe directives <code>Options MultiViews</code> pour mener � bien cette
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe n�gociation. Se r�f�rer au document sur la
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <a href="/content-negotiation.html">N�gociation de contenu</a> pour une
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe description compl�te des m�thodes de n�gociation, et les instructions
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe permettant de cr�er des fichiers de <code>correspondances de type</code>.</p>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <h3>Transfert en m�moire</h3>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <p>Dans les situations o� Apache 2.x doit consulter le contenu d'un
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe fichier en train d'�tre servi - par exemple � l'occasion du traitement
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe d'une inclusion c�t� serveur - il transf�re en g�n�ral le fichier en
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe m�moire si le syst�me d'exploitation supporte une forme quelconque
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe de <code>mmap(2)</code>.</p>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <p>Sur certains syst�mes, ce transfert en m�moire am�liore les
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe performances. Dans certains cas, ce transfert peut toutefois les d�grader
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe et m�me diminuer la stabilit� du d�mon httpd :</p>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <ul>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <li>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <p>Dans certains syst�mes d'exploitation, <code>mmap</code> devient
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe moins efficace que <code>read(2)</code> quand le nombre de
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe processeurs augmente. Sur les serveurs multiprocesseurs sous Solaris,
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe par exemple, Apache 2.x sert parfois les fichiers consult�s par le
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe serveur plus rapidement quand <code>mmap</code> est d�sactiv�.</p>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe </li>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <li>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <p>Si vous transf�rez en m�moire un fichier localis� dans un syst�me
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe de fichiers mont� par NFS, et si un processus sur
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe une autre machine cliente NFS supprime ou tronque le fichier, votre
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe processus peut rencontrer une erreur de bus la prochaine fois qu'il
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe essaiera d'acc�der au contenu du fichier en m�moire.</p>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe </li>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe </ul>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <p>Pour les installations o� une de ces situations peut se produire,
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe vous devez utiliser <code>EnableMMAP off</code> afin de d�sactiver le
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe transfert en m�moire des fichiers servis. (Note : il est possible de
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe passer outre cette directive au niveau de chaque r�pertoire.)</p>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <h3>Sendfile</h3>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <p>Dans les cas o� Apache peut se permettre d'ignorer le contenu du
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe fichier � servir - par exemple, lorsqu'il sert un contenu de fichier
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe statique - il utilise en g�n�ral le support sendfile du noyau si le
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe syst�me d'exploitation supporte l'op�ration <code>sendfile(2)</code>.</p>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <p>Sur la plupart des plateformes, l'utilisation de sendfile am�liore
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe les performances en �liminant les m�canismes de lecture et envoi s�par�s.
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe Dans certains cas cependant, l'utilisation de sendfile peut nuire � la
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe stabilit� du d�mon httpd :</p>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <ul>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <li>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <p>Certaines plateformes peuvent pr�senter un support de sendfile
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe d�faillant que la construction du syst�me n'a pas d�tect�, en
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe particulier si les binaires ont �t� construits sur une autre machine
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe et transf�r�s sur la machine o� le support de sendfile est
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe d�faillant.</p>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe </li>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <li>
c7ed811e89712261aaa4432198e331389044e1f8rjung <p>Dans le cas d'un syst�me de fichiers mont�
c7ed811e89712261aaa4432198e331389044e1f8rjung sous NFS, le noyau peut s'av�rer incapable de servir
c7ed811e89712261aaa4432198e331389044e1f8rjung les fichiers r�seau de mani�re fiable depuis
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe son propre cache.</p>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe </li>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe </ul>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <p>Pour les installations o� une de ces situations peut se produire,
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe vous devez utiliser <code>EnableSendfile off</code> afin de d�sactiver
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe la mise � disposition de contenus de fichiers par sendfile. (Note : il
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe est possible de passer outre cette directive au niveau de chaque
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe r�pertoire.)</p>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <h3><a name="process" id="process">Process Creation</a></h3>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <p>Avant Apache 1.3, les directives
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <code class="directive"><a href="/mod/prefork.html#minspareservers">MinSpareServers</a></code>,
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <code class="directive"><a href="/mod/prefork.html#maxspareservers">MaxSpareServers</a></code>, et
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <code class="directive"><a href="/mod/mpm_common.html#startservers">StartServers</a></code> avaient des
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe effets drastiques sur les performances de r�f�rence. En particulier,
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe Apache avait besoin d'un d�lai de "mont�e en puissance" afin d'atteindre
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe un nombre de processus enfants suffisant pour supporter la charge qui lui
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe �tait appliqu�e. Apr�s le lancement initial des processus enfants par
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <code class="directive"><a href="/mod/mpm_common.html#startservers">StartServers</a></code>, seulement un
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe processus enfant par seconde �tait cr�� afin d'atteindre la valeur de la
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe directive <code class="directive"><a href="/mod/prefork.html#minspareservers">MinSpareServers</a></code>. Ainsi,
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe un serveur acc�d� par 100 clients simultan�s et utilisant la valeur par
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe d�faut de <code>5</code> pour la directive
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <code class="directive"><a href="/mod/mpm_common.html#startservers">StartServers</a></code>, n�cessitait
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe environ 95 secondes pour lancer suffisamment de processus enfants
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe permettant de faire face � la charge. Ceci fonctionne en pratique pour
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe les serveurs en production, car ils sont rarement red�marr�s. Ce n'est
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe cependant pas le cas pour les tests de r�f�rence (benchmarks) o� le
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe serveur ne fonctionne que 10 minutes.</p>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <p>La r�gle "un processus par seconde" avait �t� impl�ment�e afin
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe d'�viter l'enlisement de la machine dans le d�marrage de nouveaux
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe processus enfants. Pendant que la machine est occup�e � lancer des
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe processus enfants, elle ne peut pas traiter les requ�tes. Mais cette
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe r�gle impactait tellement la perception des performances d'Apache qu'elle
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe a d� �tre remplac�e. A partir d'Apache 1.3, le code a assoupli la r�gle
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe "un processus par seconde". Il va en lancer un, attendre une seconde,
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe puis en lancer deux, attendre une seconde, puis en lancer quatre et
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe ainsi de suite jusqu'� lancer 32 processus. Il s'arr�tera lorsque le
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe nombre de processus aura atteint la valeur d�finie par la directive
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <code class="directive"><a href="/mod/prefork.html#minspareservers">MinSpareServers</a></code>.</p>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <p>Ceci s'av�re suffisamment r�actif pour pouvoir en g�n�ral se passer
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe de manipuler les valeurs des directives
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <code class="directive"><a href="/mod/prefork.html#minspareservers">MinSpareServers</a></code>,
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <code class="directive"><a href="/mod/prefork.html#maxspareservers">MaxSpareServers</a></code> et
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <code class="directive"><a href="/mod/mpm_common.html#startservers">StartServers</a></code>. Lorsque plus de
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe 4 processus enfants sont lanc�s par seconde, un message est �mis vers
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe le journal des erreurs. Si vous voyez appara�tre souvent ce genre de
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe message, vous devez vous pencher sur ces r�glages. Pour vous guider,
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe utilisez les informations d�livr�es par le module
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <code class="module"><a href="/mod/mod_status.html">mod_status</a></code>.</p>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <p>� mettre en relation avec la cr�ation de processus, leur destruction
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe est d�finie par la valeur de la directive
7e9c796f2dc0dba993a817b3a58cfd56b4e511edwrowe <code class="directive"><a href="/mod/mpm_common.html#maxconnectionsperchild">MaxConnectionsPerChild</a></code>. Sa valeur
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe par d�faut est <code>0</code>, ce qui signifie qu'il n'y a pas de limite
7e9c796f2dc0dba993a817b3a58cfd56b4e511edwrowe au nombre de connexions qu'un processus enfant peut traiter. Si votre
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe configuration actuelle a cette directive r�gl�e � une valeur tr�s basse,
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe de l'ordre de <code>30</code>, il est conseill� de l'augmenter de mani�re
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe significative. Si vous utilisez SunOs ou une ancienne version de Solaris,
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe utilisez une valeur de l'ordre de <code>10000</code> � cause des fuites
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe de m�moire.</p>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <p>Lorsqu'ils sont en mode "keep-alive", les processus enfants sont
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe maintenus et ne font rien sinon attendre la prochaine requ�te sur la
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe connexion d�j� ouverte. La valeur par d�faut de <code>5</code> de la
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe directive <code class="directive"><a href="/mod/core.html#keepalivetimeout">KeepAliveTimeout</a></code> tend �
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe minimiser cet effet. Il faut trouver le bon compromis entre la bande
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe passante r�seau et les ressources du serveur. En aucun cas vous ne devez
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe choisir une valeur sup�rieure � <code>60</code> seconds, car
c88339df8ff949443da567d5fdf6fa0f31bd5efdjim <a href="http://www.hpl.hp.com/techreports/Compaq-DEC/WRL-95-4.html">
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe la plupart des b�n�fices sont alors perdus</a>.</p>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe<div class="section">
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe<h2><a name="compiletime" id="compiletime">Optimisation de la configuration � la compilation</a></h2>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <h3>Choisir un Module Multi-Processus (MPM)</h3>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <p>Apache 2.x supporte les mod�les simultan�s enfichables, appel�s
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <a href="/mpm.html">Modules Multi-Processus</a> (MPMs). Vous devez
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe choisir un MPM au moment de la construction d'Apache. Certaines
9a58dc6a2b26ec128b1270cf48810e705f1a90dbsf plateformes ont des modules MPM sp�cifiques :
c88339df8ff949443da567d5fdf6fa0f31bd5efdjim <code class="module"><a href="/mod/mpm_netware.html">mpm_netware</a></code>, <code class="module"><a href="/mod/mpmt_os2.html">mpmt_os2</a></code> et
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <code class="module"><a href="/mod/mpm_winnt.html">mpm_winnt</a></code>. Sur les syst�mes de type Unix, vous avez le
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe choix entre un grand nombre de modules MPM. Le choix du MPM peut affecter
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe la vitesse et l'�volutivit� du d�mon httpd :</p>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <ul>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <li>Le MPM <code class="module"><a href="/mod/worker.html">worker</a></code> utilise plusieurs processus
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe enfants poss�dant chacun de nombreux threads. Chaque thread g�re une
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe seule connexion � la fois. Worker est en g�n�ral un bon choix pour les
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe serveurs pr�sentant un traffic important car il poss�de une empreinte
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe m�moire plus petite que le MPM prefork.</li>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
888cb40bdeec5abf452bd85d6bf63b26d5913d4chumbedooh <li>Comme le MPM Worker, le MPM <code class="module"><a href="/mod/event.html">event</a></code> utilise
888cb40bdeec5abf452bd85d6bf63b26d5913d4chumbedooh les threads, mais il a �t� con�u pour traiter davantage de
888cb40bdeec5abf452bd85d6bf63b26d5913d4chumbedooh requ�tes simultan�ment en confiant une partie du travail � des
888cb40bdeec5abf452bd85d6bf63b26d5913d4chumbedooh threads de support, ce qui permet aux threads principaux de
888cb40bdeec5abf452bd85d6bf63b26d5913d4chumbedooh traiter de nouvelles requ�tes.</li>
888cb40bdeec5abf452bd85d6bf63b26d5913d4chumbedooh
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <li>Le MPM <code class="module"><a href="/mod/prefork.html">prefork</a></code> utilise plusieurs processus enfants
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe poss�dant chacun un seul thread. Chaque processus g�re une seule
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe connexion � la fois. Sur de nombreux syst�mes, prefork est comparable
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe en mati�re de vitesse � worker, mais il utilise plus de m�moire. De par
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe sa conception sans thread, prefork pr�sente des avantages par rapport �
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe worker dans certaines situations : il peut �tre utilis� avec les
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe modules tiers qui ne supportent pas le threading, et son d�bogage est plus
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe ais� sur les platesformes pr�sentant un support du d�bogage des threads
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe rudimentaire.</li>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe </ul>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <p>Pour plus d'informations sur ces deux MPMs et les autres, veuillez
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe vous r�f�rer � la <a href="/mpm.html">documentation sur les
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe MPM</a>.</p>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <h3><a name="modules" id="modules">Modules</a></h3>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <p>Comme le contr�le de l'utilisation de la m�moire est tr�s important
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe en mati�re de performance, il est conseill� d'�liminer les modules que
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe vous n'utilisez pas vraiment. Si vous avez construit ces modules en
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe tant que <a href="/dso.html">DSOs</a>, leur �limination consiste
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe simplement � commenter la directive
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <code class="directive"><a href="/mod/mod_so.html#loadmodule">LoadModule</a></code> associ�e � ce
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe module. Ceci vous permet de v�rifier si votre site fonctionne toujours
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe apr�s la suppression de tel ou tel module.</p>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <p>Par contre, si les modules que vous voulez supprimer sont li�s
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe statiquement � votre binaire Apache, vous devrez recompiler ce dernier
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe afin de pouvoir les �liminer.</p>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <p>La question qui d�coule de ce qui pr�c�de est �videmment de
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe savoir de quels modules vous avez besoin et desquels vous pouvez vous
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe passer. La r�ponse sera bien entendu diff�rente d'un site web �
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe l'autre. Cependant, la liste <em>minimale</em> de modules n�cessaire �
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe la survie de votre site contiendra certainement
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <code class="module"><a href="/mod/mod_mime.html">mod_mime</a></code>, <code class="module"><a href="/mod/mod_dir.html">mod_dir</a></code> et
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <code class="module"><a href="/mod/mod_log_config.html">mod_log_config</a></code>. <code>mod_log_config</code> est bien
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe entendu optionnel puisque vous pouvez faire fonctionner un site web
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe en se passant de fichiers journaux ; ceci est cependant
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe d�conseill�.</p>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <h3>Op�rations atomiques</h3>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <p>Certains modules, � l'instar de <code class="module"><a href="/mod/mod_cache.html">mod_cache</a></code> et des
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe versions de d�veloppement r�centes du MPM worker, utilisent l'API
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe atomique d'APR. Cette API propose des op�rations atomiques que l'on
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe peut utiliser pour all�ger la synchronisation des threads.</p>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <p>Par d�faut, APR impl�mente ces op�rations en utilisant les
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe m�canismes les plus efficaces disponibles sur chaque plateforme cible
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe (Syst�me d'exploitation et processeur). De nombreux processeurs modernes,
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe par exemple, poss�dent une instruction qui effectue une op�ration
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe atomique de type comparaison et �change ou compare-and-swap (CAS) au
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe niveau mat�riel. Sur certaines platesformes cependant, APR utilise par
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe d�faut une impl�mentation de l'API atomique plus lente, bas�e sur les
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe mutex, afin d'assurer la compatibilit� avec les anciens mod�les de
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe processeurs qui ne poss�dent pas ce genre d'instruction. Si vous
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe construisez Apache pour une de ces platesformes, et ne pr�voyez de
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe l'ex�cuter que sur des processeurs r�cents, vous pouvez s�lectionner une
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe impl�mentation atomique plus rapide � la compilation en utilisant
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe l'option <code>--enable-nonportable-atomics</code> du
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe script configure :</p>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <div class="example"><p><code>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe /buildconf<br />
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe /configure --with-mpm=worker --enable-nonportable-atomics=yes
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe </code></p></div>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <p>L'option <code>--enable-nonportable-atomics</code> concerne les
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe platesformes suivantes :</p>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <ul>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <li>Solaris sur SPARC<br />
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe Sur Solaris/SPARC, APR utilise par d�faut les op�rations
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe atomiques bas�es sur les mutex. Cependant, si vous ajoutez l'option
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <code>--enable-nonportable-atomics</code> au script configure, APR
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe g�n�re un code qui utilise le code op�ration SPARC v8plus pour des
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe op�rations de compare-and-swap mat�riel plus rapides. Si vous
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe utilisez cette option de configure avec Apache, les op�rations
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe atomiques seront plus efficaces (permettant d'all�ger la charge du
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe processeur et un plus haut niveau de simultan�it�), mais
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe l'ex�cutable produit ne fonctionnera que sur les processeurs
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe UltraSPARC.
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe </li>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <li>Linux sur x86<br />
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe Sous Linux, APR utilise par d�faut les op�rations atomiques bas�es
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe sur les mutex. Cependant, si vous ajoutez l'option
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <code>--enable-nonportable-atomics</code> au script configure,
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe APR g�n�rera un code qui utilise un code d'op�ration du 486
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe pour des op�rations de compare-and-swap mat�riel plus rapides. Le
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe code r�sultant est plus efficace en mati�re d'op�rations atomiques,
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe mais l'ex�cutable produit ne fonctionnera que sur des processeurs
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe 486 et sup�rieurs (et non sur des 386).
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe </li>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe </ul>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <h3>Module mod_status et ExtendedStatus On</h3>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <p>Si vous incluez le module <code class="module"><a href="/mod/mod_status.html">mod_status</a></code> � la
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe construction d'Apache et ajoutez <code>ExtendedStatus On</code> � sa
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe configuration, Apache va effectuer pour chaque requ�te deux appels �
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <code>gettimeofday(2)</code> (ou <code>times(2)</code> selon votre
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe syst�me d'exploitation), et (pour les versions ant�rieures � 1.3) de
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe nombreux appels suppl�mentaires � <code>time(2)</code>. Tous ces
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe appels sont effectu�s afin que le rapport de statut puisse contenir
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe des indications temporelles. Pour am�liorer les performances, utilisez
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <code>ExtendedStatus off</code> (qui est le r�glage par d�faut).</p>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <h3>accept Serialization - points de connexion � un programme (sockets) multiples</h3>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <div class="warning"><h3>Mise en garde :</h3>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <p>Cette section n'a pas �t� totalement mise � jour car elle ne tient pas
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe compte des changements intervenus dans la version 2.x du Serveur HTTP
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe Apache. Certaines informations sont encore pertinentes, il vous est
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe cependant conseill� de les utiliser avec prudence.</p>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe </div>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <p>Ce qui suit est une br�ve discussion � propos de l'API des sockets
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe Unix. Supposons que votre serveur web utilise plusieurs directives
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <code class="directive"><a href="/mod/mpm_common.html#listen">Listen</a></code> afin d'�couter
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe plusieurs ports ou de multiples adresses. Afin de tester chaque socket
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe pour voir s'il a une connexion en attente, Apache utilise
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <code>select(2)</code>. <code>select(2)</code> indique si un socket a
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <em>z�ro</em> ou <em>au moins une</em> connexion en attente. Le mod�le
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe d'Apache comporte plusieurs processus enfants, et tous ceux qui sont
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe inactifs testent la pr�sence de nouvelles connexions au m�me moment.
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe Une impl�mentation rudimentaire de ceci pourrait ressembler �
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe l'exemple suivant
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe (ces exemples ne sont pas extraits du code d'Apache, ils ne sont
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe propos�s qu'� des fins p�dagogiques) :</p>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
4aa603e6448b99f9371397d439795c91a93637eand <pre class="prettyprint lang-c"> for (;;) {
888cb40bdeec5abf452bd85d6bf63b26d5913d4chumbedooh for (;;) {
888cb40bdeec5abf452bd85d6bf63b26d5913d4chumbedooh fd_set accept_fds;
888cb40bdeec5abf452bd85d6bf63b26d5913d4chumbedooh
888cb40bdeec5abf452bd85d6bf63b26d5913d4chumbedooh FD_ZERO (&amp;accept_fds);
888cb40bdeec5abf452bd85d6bf63b26d5913d4chumbedooh for (i = first_socket; i &lt;= last_socket; ++i) {
888cb40bdeec5abf452bd85d6bf63b26d5913d4chumbedooh FD_SET (i, &amp;accept_fds);
888cb40bdeec5abf452bd85d6bf63b26d5913d4chumbedooh }
888cb40bdeec5abf452bd85d6bf63b26d5913d4chumbedooh rc = select (last_socket+1, &amp;accept_fds, NULL, NULL, NULL);
888cb40bdeec5abf452bd85d6bf63b26d5913d4chumbedooh if (rc &lt; 1) continue;
888cb40bdeec5abf452bd85d6bf63b26d5913d4chumbedooh new_connection = -1;
888cb40bdeec5abf452bd85d6bf63b26d5913d4chumbedooh for (i = first_socket; i &lt;= last_socket; ++i) {
888cb40bdeec5abf452bd85d6bf63b26d5913d4chumbedooh if (FD_ISSET (i, &amp;accept_fds)) {
888cb40bdeec5abf452bd85d6bf63b26d5913d4chumbedooh new_connection = accept (i, NULL, NULL);
888cb40bdeec5abf452bd85d6bf63b26d5913d4chumbedooh if (new_connection != -1) break;
888cb40bdeec5abf452bd85d6bf63b26d5913d4chumbedooh }
888cb40bdeec5abf452bd85d6bf63b26d5913d4chumbedooh }
888cb40bdeec5abf452bd85d6bf63b26d5913d4chumbedooh if (new_connection != -1) break;
888cb40bdeec5abf452bd85d6bf63b26d5913d4chumbedooh }
888cb40bdeec5abf452bd85d6bf63b26d5913d4chumbedooh process_the(new_connection);
4aa603e6448b99f9371397d439795c91a93637eand }</pre>
c32f362cdcca385130706c801328eb8fbb25b9fehumbedooh
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <p>Mais cette impl�mentation rudimentaire pr�sente une s�rieuse lacune.
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe Rappelez-vous que les processus enfants ex�cutent cette boucle au m�me
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe moment ; ils vont ainsi bloquer sur <code>select</code> s'ils se trouvent
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe entre deux requ�tes. Tous ces processus bloqu�s vont se r�activer et
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe sortir de <code>select</code> quand une requ�te va appara�tre sur un des
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe sockets (le nombre de processus enfants qui se r�activent varie en
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe fonction du syst�me d'exploitation et des r�glages de synchronisation).
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe Ils vont alors tous entrer dans la boucle et tenter un
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <code>"accept"</code> de la connexion. Mais seulement un d'entre eux y
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe parviendra (en supposant qu'il ne reste q'une seule connexion en
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe attente), les autres vont se bloquer au niveau de <code>accept</code>.
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe Ceci verrouille vraiment ces processus de telle sorte qu'ils ne peuvent
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe plus servir de requ�tes que par cet unique socket, et il en sera ainsi
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe jusqu'� ce que suffisamment de nouvelles requ�tes apparaissent sur ce
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe socket pour les r�activer tous. Cette lacune a �t� document�e pour la
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe premi�re fois dans
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <a href="http://bugs.apache.org/index/full/467">PR#467</a>. Il existe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe au moins deux solutions.</p>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <p>La premi�re consiste � rendre les sockets non blocants. Dans ce cas,
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <code>accept</code> ne bloquera pas les processus enfants, et ils
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe pourront continuer � s'ex�cuter imm�diatement. Mais ceci consomme des
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe ressources processeur. Supposons que vous ayez dix processus enfants
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe inactifs dans <code>select</code>, et qu'une connexion arrive.
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe Neuf des dix processus vont se r�activer, tenter un <code>accept</code>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe de la connexion, �chouer, et boucler dans <code>select</code>, tout en
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe n'ayant finalement rien accompli. Pendant ce temps, aucun de ces processus
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe ne traite les requ�tes qui arrivent sur d'autres sockets jusqu'� ce
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe qu'ils retournent dans <code>select</code>. Finalement, cette solution
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe ne semble pas tr�s efficace, � moins que vous ne disposiez d'autant de
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe processeurs inactifs (dans un serveur multiprocesseur) que de processus
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe enfants inactifs, ce qui n'est pas une situation tr�s courante.</p>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <p>Une autre solution, celle qu'utilise Apache, consiste � s�rialiser les
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe entr�es dans la boucle interne. La boucle ressemble � ceci (les
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe diff�rences sont mises en surbrillance) :</p>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
4aa603e6448b99f9371397d439795c91a93637eand <pre class="prettyprint lang-c"> for (;;) {
888cb40bdeec5abf452bd85d6bf63b26d5913d4chumbedooh <strong>accept_mutex_on ();</strong>
888cb40bdeec5abf452bd85d6bf63b26d5913d4chumbedooh for (;;) {
888cb40bdeec5abf452bd85d6bf63b26d5913d4chumbedooh fd_set accept_fds;
888cb40bdeec5abf452bd85d6bf63b26d5913d4chumbedooh
888cb40bdeec5abf452bd85d6bf63b26d5913d4chumbedooh FD_ZERO (&amp;accept_fds);
888cb40bdeec5abf452bd85d6bf63b26d5913d4chumbedooh for (i = first_socket; i &lt;= last_socket; ++i) {
888cb40bdeec5abf452bd85d6bf63b26d5913d4chumbedooh FD_SET (i, &amp;accept_fds);
888cb40bdeec5abf452bd85d6bf63b26d5913d4chumbedooh }
888cb40bdeec5abf452bd85d6bf63b26d5913d4chumbedooh rc = select (last_socket+1, &amp;accept_fds, NULL, NULL, NULL);
888cb40bdeec5abf452bd85d6bf63b26d5913d4chumbedooh if (rc &lt; 1) continue;
888cb40bdeec5abf452bd85d6bf63b26d5913d4chumbedooh new_connection = -1;
888cb40bdeec5abf452bd85d6bf63b26d5913d4chumbedooh for (i = first_socket; i &lt;= last_socket; ++i) {
888cb40bdeec5abf452bd85d6bf63b26d5913d4chumbedooh if (FD_ISSET (i, &amp;accept_fds)) {
888cb40bdeec5abf452bd85d6bf63b26d5913d4chumbedooh new_connection = accept (i, NULL, NULL);
888cb40bdeec5abf452bd85d6bf63b26d5913d4chumbedooh if (new_connection != -1) break;
888cb40bdeec5abf452bd85d6bf63b26d5913d4chumbedooh }
888cb40bdeec5abf452bd85d6bf63b26d5913d4chumbedooh }
888cb40bdeec5abf452bd85d6bf63b26d5913d4chumbedooh if (new_connection != -1) break;
888cb40bdeec5abf452bd85d6bf63b26d5913d4chumbedooh }
888cb40bdeec5abf452bd85d6bf63b26d5913d4chumbedooh <strong>accept_mutex_off ();</strong>
888cb40bdeec5abf452bd85d6bf63b26d5913d4chumbedooh process the new_connection;
4aa603e6448b99f9371397d439795c91a93637eand }</pre>
c32f362cdcca385130706c801328eb8fbb25b9fehumbedooh
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <p><a id="serialize" name="serialize">Les fonctions</a>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <code>accept_mutex_on</code> et <code>accept_mutex_off</code>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe impl�mentent un s�maphore permettant une exclusion mutuelle. Un seul
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe processus enfant � la fois peut poss�der le mutex. Plusieurs choix se
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe pr�sentent pour impl�menter ces mutex. Ce choix est d�fini dans
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <code>src/conf.h</code> (versions ant�rieures � 1.3) ou
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <code>src/include/ap_config.h</code> (versions 1.3 ou sup�rieures).
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe Certaines architectures ne font pas ce choix du mode de verrouillage ;
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe l'utilisation de directives
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <code class="directive"><a href="/mod/mpm_common.html#listen">Listen</a></code> multiples sur ces
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe architectures est donc peu s�r.</p>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
ba1761b7cdc483fa8460f183a95b520e789a161and <p>La directive <code class="directive"><a href="/mod/core.html#mutex">Mutex</a></code> permet
ba1761b7cdc483fa8460f183a95b520e789a161and de modifier l'impl�mentation du mutex <code>mpm-accept</code> �
ba1761b7cdc483fa8460f183a95b520e789a161and l'ex�cution. Des consid�rations sp�cifiques aux diff�rentes
ba1761b7cdc483fa8460f183a95b520e789a161and impl�mentations de mutex sont document�es avec cette directive.</p>
9a58dc6a2b26ec128b1270cf48810e705f1a90dbsf
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <p>Une autre solution qui a �t� imagin�e mais jamais impl�ment�e, consiste
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe � s�rialiser partiellement la boucle -- c'est � dire y faire entrer un
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe certain nombre de processus. Ceci ne pr�senterait un int�r�t que sur les
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe machines multiprocesseurs o� plusieurs processus enfants peuvent
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe s'ex�cuter simultan�ment, et encore, la s�rialisation ne tire pas
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe vraiment parti de toute la bande passante. C'est une possibilit�
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe d'investigation future, mais demeure de priorit� basse car les serveurs
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe web � architecture hautement parall�le ne sont pas la norme.</p>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <p>Pour bien faire, vous devriez faire fonctionner votre serveur sans
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe directives <code class="directive"><a href="/mod/mpm_common.html#listen">Listen</a></code> multiples
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe si vous visez les performances les plus �lev�es.
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe Mais lisez ce qui suit.</p>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <h3>accept Serialization - point de connexion � un programme (sockets) unique</h3>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <p>Ce qui pr�c�de convient pour les serveurs � sockets multiples, mais
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe qu'en est-il des serveurs � socket unique ? En th�orie, ils ne
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe devraient pas rencontrer les m�mes probl�mes car tous les processus
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe enfants peuvent se bloquer dans <code>accept(2)</code> jusqu'� ce qu'une
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe connexion arrive, et ils ne sont pas utilis�s � ne rien faire. En
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe pratique, ceci dissimule un m�me comportement de bouclage
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe discut� plus haut dans la solution non-blocante. De la mani�re dont
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe sont impl�ment�es les piles TCP, le noyau r�active v�ritablement tous les
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe processus bloqu�s dans <code>accept</code> quand une seule connexion
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe arrive. Un de ces processus prend la connexion en compte et retourne
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe dans l'espace utilisateur, les autres bouclant dans l'espace du
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe noyau et se d�sactivant quand ils s'aper�oivent qu'il n'y a pas de
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe connexion pour eux. Ce bouclage est invisible depuis le code de l'espace
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe utilisateur, mais il est quand-m�me pr�sent. Ceci peut conduire � la
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe m�me augmentation de charge � perte que la solution non blocante au cas
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe des sockets multiples peut induire.</p>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <p>Pour cette raison, il appara�t que de nombreuses architectures se
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe comportent plus "proprement" si on s�rialise m�me dans le cas d'une socket
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe unique. Il s'agit en fait du comportement par d�faut dans la plupart des
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe cas. Des exp�riences pouss�es sous Linux (noyau 2.0.30 sur un
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe biprocesseur Pentium pro 166 avec 128 Mo de RAM) ont montr� que la
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe s�rialisation d'une socket unique provoque une diminution inf�rieure � 3%
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe du nombre de requ�tes par secondes par rapport au traitement non
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe s�rialis�. Mais le traitement non s�rialis� des sockets uniques induit
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe un temps de r�ponse suppl�mentaire de 100 ms pour chaque requ�te. Ce
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe temps de r�ponse est probablement provoqu� par une limitation sur les
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe lignes � haute charge, et ne constitue un probl�me que sur les r�seaux
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe locaux. Si vous voulez vous passer de la s�rialisation des sockets
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe uniques, vous pouvez d�finir
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <code>SINGLE_LISTEN_UNSERIALIZED_ACCEPT</code> et les
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe serveurs � socket unique ne pratiqueront plus du tout la
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe s�rialisation.</p>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <h3>Fermeture en prenant son temps (Lingering close)</h3>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <p>Comme discut� dans <a href="http://www.ics.uci.edu/pub/ietf/http/draft-ietf-http-connection-00.txt">
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe draft-ietf-http-connection-00.txt</a> section 8, pour impl�menter de
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe mani�re <strong>fiable</strong> le protocole, un serveur HTTP doit fermer
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe les deux directions d'une communication ind�pendamment (rappelez-vous
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe qu'une connexion TCP est bidirectionnelle, chaque direction �tant
ba1761b7cdc483fa8460f183a95b520e789a161and ind�pendante de l'autre).</p>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <p>Quand cette fonctionnalit� fut ajout�e � Apache, elle causa une
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe avalanche de probl�mes sur plusieurs versions d'Unix � cause d'une
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe impl�mentation � courte vue. La sp�cification TCP ne pr�cise pas que
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe l'�tat <code>FIN_WAIT_2</code> poss�de un temps de r�ponse mais elle ne
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe l'exclut pas. Sur les syst�mes qui n'introduisent pas ce temps de
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe r�ponse, Apache 1.2 induit de nombreux blocages d�finitifs de socket
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe dans l'�tat <code>FIN_WAIT_2</code>. On peut eviter ceci dans de nombreux
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe cas tout simplement en mettant � jour TCP/IP avec le dernier patch mis �
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe disposition par le fournisseur. Dans les cas o� le fournisseur n'a
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe jamais fourni de patch (par exemple, SunOS4 -- bien que les utilisateurs
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe poss�dant une license source puissent le patcher eux-m�mes), nous avons
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe d�cid� de d�sactiver cette fonctionnalit�.</p>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <p>Il y a deux m�thodes pour arriver � ce r�sultat. La premi�re est
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe l'option de socket <code>SO_LINGER</code>. Mais le sort a voulu que cette
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe solution ne soit jamais impl�ment�e correctement dans la plupart des
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe piles TCP/IP. Et m�me dans les rares cas o� cette solution a �t�
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe impl�ment�e correctement (par exemple Linux 2.0.31), elle se
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe montre beaucoup plus gourmande (en temps processeur) que la solution
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe suivante.</p>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <p>Pour la plus grande partie, Apache impl�mente cette solution � l'aide
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe d'une fonction appel�e <code>lingering_close</code> (d�finie dans
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <code>http_main.c</code>). La fonction ressemble approximativement �
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe ceci :</p>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
4aa603e6448b99f9371397d439795c91a93637eand <pre class="prettyprint lang-c"> void lingering_close (int s)
888cb40bdeec5abf452bd85d6bf63b26d5913d4chumbedooh {
888cb40bdeec5abf452bd85d6bf63b26d5913d4chumbedooh char junk_buffer[2048];
888cb40bdeec5abf452bd85d6bf63b26d5913d4chumbedooh
888cb40bdeec5abf452bd85d6bf63b26d5913d4chumbedooh /* shutdown the sending side */
888cb40bdeec5abf452bd85d6bf63b26d5913d4chumbedooh shutdown (s, 1);
888cb40bdeec5abf452bd85d6bf63b26d5913d4chumbedooh
888cb40bdeec5abf452bd85d6bf63b26d5913d4chumbedooh signal (SIGALRM, lingering_death);
888cb40bdeec5abf452bd85d6bf63b26d5913d4chumbedooh alarm (30);
888cb40bdeec5abf452bd85d6bf63b26d5913d4chumbedooh
888cb40bdeec5abf452bd85d6bf63b26d5913d4chumbedooh for (;;) {
888cb40bdeec5abf452bd85d6bf63b26d5913d4chumbedooh select (s for reading, 2 second timeout);
888cb40bdeec5abf452bd85d6bf63b26d5913d4chumbedooh if (error) break;
888cb40bdeec5abf452bd85d6bf63b26d5913d4chumbedooh if (s is ready for reading) {
888cb40bdeec5abf452bd85d6bf63b26d5913d4chumbedooh if (read (s, junk_buffer, sizeof (junk_buffer)) &lt;= 0) {
888cb40bdeec5abf452bd85d6bf63b26d5913d4chumbedooh break;
888cb40bdeec5abf452bd85d6bf63b26d5913d4chumbedooh }
888cb40bdeec5abf452bd85d6bf63b26d5913d4chumbedooh /* just toss away whatever is here */
888cb40bdeec5abf452bd85d6bf63b26d5913d4chumbedooh }
888cb40bdeec5abf452bd85d6bf63b26d5913d4chumbedooh }
888cb40bdeec5abf452bd85d6bf63b26d5913d4chumbedooh
888cb40bdeec5abf452bd85d6bf63b26d5913d4chumbedooh close (s);
4aa603e6448b99f9371397d439795c91a93637eand }</pre>
c32f362cdcca385130706c801328eb8fbb25b9fehumbedooh
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <p>Ceci ajoute naturellement un peu de charge � la fin d'une connexion,
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe mais s'av�re n�cessaire pour une impl�mentation fiable. Comme HTTP/1.1
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe est de plus en plus pr�sent et que toutes les connexions sont
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe persistentes, la charge sera amortie par la multiplicit� des requ�tes.
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe Si vous voulez jouer avec le feu en d�sactivant cette fonctionnalit�,
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe vous pouvez d�finir <code>NO_LINGCLOSE</code>, mais c'est fortement
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe d�conseill�. En particulier, comme les connexions persistantes en
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe pipeline de HTTP/1.1 commencent � �tre utilis�es,
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <code>lingering_close</code> devient une absolue n�cessit� (et les
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <a href="http://www.w3.org/Protocols/HTTP/Performance/Pipeline.html">
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe connexions en pipeline sont plus rapides</a> ; vous avez donc tout
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe int�r�t � les supporter).</p>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <h3>Fichier tableau de bord (Scoreboard file)</h3>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <p>Les processus parent et enfants d'Apache communiquent entre eux �
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe l'aide d'un objet appel� "Tableau de bord" (Scoreboard). Id�alement, cet
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe �change devrait s'effectuer en m�moire partag�e. Pour les syst�mes
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe d'exploitation auxquels nous avons eu acc�s, ou pour lesquels nous avons
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe obtenu des informations suffisamment d�taill�es pour effectuer un
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe portage, cet �change est en g�n�ral impl�ment� en utilisant la m�moire
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe partag�e. Pour les autres, on utilise par d�faut un fichier d'�change sur
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe disque. Le fichier d'�change sur disque est non seulement lent, mais
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe aussi peu fiable (et propose moins de fonctionnalit�s). Recherchez dans
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe le fichier <code>src/main/conf.h</code> correspondant � votre
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe architecture soit <code>USE_MMAP_SCOREBOARD</code>, soit
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <code>USE_SHMGET_SCOREBOARD</code>. La d�finition de l'un des deux
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe (ainsi que leurs compagnons respectifs <code>HAVE_MMAP</code> et
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <code>HAVE_SHMGET</code>), active le code fourni pour la m�moire
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe partag�e. Si votre syst�me propose une autre solution pour la gestion de
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe la m�moire partag�e, �ditez le fichier <code>src/main/http_main.c</code>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe et ajoutez la portion de code n�cessaire pour pouvoir l'utiliser dans
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe Apache (Merci de nous envoyer aussi le patch correspondant).</p>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <div class="note">Note � caract�re historique : le portage d'Apache sous Linux
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe n'utilisait pas la m�moire partag�e avant la version 1.2. Ceci entra�nait
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe un comportement tr�s rudimentaire et peu fiable des versions ant�rieures
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe d'Apache sous Linux.</div>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <h3>DYNAMIC_MODULE_LIMIT</h3>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <p>Si vous n'avez pas l'intention d'utiliser les modules charg�s
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe dynamiquement (ce qui est probablement le cas si vous �tes en train de
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe lire ce document afin de personnaliser votre serveur en recherchant le
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe moindre des gains en performances), vous pouvez ajouter la d�finition
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <code>-DDYNAMIC_MODULE_LIMIT=0</code> � la construction de votre serveur.
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe Ceci aura pour effet de lib�rer la m�moire RAM allou�e pour le
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe chargement dynamique des modules.</p>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe<div class="section">
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe<h2><a name="trace" id="trace">Appendice : Analyse d�taill�e d'une trace</a></h2>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <p>Voici la trace d'un appel syst�me d'Apache 2.0.38 avec le MPM worker
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe sous Solaris 8. Cette trace a �t� collect�e � l'aide de la commande :</p>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <div class="example"><p><code>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe truss -l -p <var>httpd_child_pid</var>.
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe </code></p></div>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <p>L'option <code>-l</code> demande � truss de tracer l'ID du LWP
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe (lightweight process--la version de Solaris des threads niveau noyau) qui
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe invoque chaque appel syst�me.</p>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <p>Les autres syst�mes peuvent proposer des utilitaires de tra�age
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe des appels syst�me diff�rents comme <code>strace</code>,
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <code>ktrace</code>, ou <code>par</code>. Ils produisent cependant tous une
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe trace similaire.</p>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <p>Dans cette trace, un client a demand� un fichier statique de 10 ko au
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe d�mon httpd. Le tra�age des requ�tes pour des contenus non statiques
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe ou comportant une n�gociation de contenu a une pr�sentation
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe diff�rente (et m�me assez laide dans certains cas).</p>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <div class="example"><pre>/67: accept(3, 0x00200BEC, 0x00200C0C, 1) (sleeping...)
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe/67: accept(3, 0x00200BEC, 0x00200C0C, 1) = 9</pre></div>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <p>Dans cette trace, le thread � l'�coute s'ex�cute � l'int�rieur de
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe LWP #67.</p>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <div class="note">Notez l'absence de la s�rialisation d'<code>accept(2)</code>. Sur
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe cette plateforme sp�cifique, le MPM worker utilise un accept non s�rialis�
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe par d�faut sauf s'il est en �coute sur des ports multiples.</div>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <div class="example"><pre>/65: lwp_park(0x00000000, 0) = 0
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe/67: lwp_unpark(65, 1) = 0</pre></div>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <p>Apr�s avoir accept� la connexion, le thread � l'�coute r�active un
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe thread du worker pour effectuer le traitement de la requ�te. Dans cette
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe trace, le thread du worker qui traite la requ�te est associ� �
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe LWP #65.</p>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <div class="example"><pre>/65: getsockname(9, 0x00200BA4, 0x00200BC4, 1) = 0</pre></div>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <p>Afin de pouvoir impl�menter les h�tes virtuels, Apache doit conna�tre
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe l'adresse du socket local utilis� pour accepter la connexion. On pourrait
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe supprimer cet appel dans de nombreuses situations (par exemple dans le cas
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe o� il n'y a pas d'h�te virtuel ou dans le cas o� les directives
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <code class="directive"><a href="/mod/mpm_common.html#listen">Listen</a></code> contiennent des adresses
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe sans caract�res de substitution). Mais aucun effort n'a �t� accompli � ce
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe jour pour effectuer ces optimisations.</p>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <div class="example"><pre>/65: brk(0x002170E8) = 0
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe/65: brk(0x002190E8) = 0</pre></div>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <p>L'appel <code>brk(2)</code> alloue de la m�moire dans le tas. Ceci est
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe rarement visible dans une trace d'appel syst�me, car le d�mon httpd
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe utilise des allocateurs m�moire de son cru (<code>apr_pool</code> et
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <code>apr_bucket_alloc</code>) pour la plupart des traitements de requ�tes.
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe Dans cette trace, le d�mon httpd vient juste de d�marrer, et il doit
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe appeler <code>malloc(3)</code> pour r�server les blocs de m�moire
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe n�cessaires � la cr�ation de ses propres allocateurs de m�moire.</p>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <div class="example"><pre>/65: fcntl(9, F_GETFL, 0x00000000) = 2
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe/65: fstat64(9, 0xFAF7B818) = 0
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe/65: getsockopt(9, 65535, 8192, 0xFAF7B918, 0xFAF7B910, 2190656) = 0
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe/65: fstat64(9, 0xFAF7B818) = 0
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe/65: getsockopt(9, 65535, 8192, 0xFAF7B918, 0xFAF7B914, 2190656) = 0
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe/65: setsockopt(9, 65535, 8192, 0xFAF7B918, 4, 2190656) = 0
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe/65: fcntl(9, F_SETFL, 0x00000082) = 0</pre></div>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <p>Ensuite, le thread de worker passe la connexion du client (descripteur
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe de fichier 9) en mode non blocant. Les appels <code>setsockopt(2)</code>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe et <code>getsockopt(2)</code> constituent un effet de bord de la mani�re
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe dont la libc de Solaris utilise <code>fcntl(2)</code> pour les sockets.</p>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <div class="example"><pre>/65: read(9, " G E T / 1 0 k . h t m".., 8000) = 97</pre></div>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <p>Le thread de worker lit la requ�te du client.</p>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <div class="example"><pre>/65: stat("/var/httpd/apache/httpd-8999/htdocs/10k.html", 0xFAF7B978) = 0
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe/65: open("/var/httpd/apache/httpd-8999/htdocs/10k.html", O_RDONLY) = 10</pre></div>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <p>Ce d�mon httpd a �t� configur� avec les options
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <code>Options FollowSymLinks</code> et <code>AllowOverride None</code>. Il
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe n'a donc ni besoin d'appeler <code>lstat(2)</code> pour chaque r�pertoire
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe du chemin du fichier demand�, ni besoin de v�rifier la pr�sence de fichiers
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <code>.htaccess</code>. Il appelle simplement <code>stat(2)</code> pour
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe v�rifier d'une part que le fichier existe, et d'autre part que c'est un
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe fichier r�gulier, et non un r�pertoire.</p>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <div class="example"><pre>/65: sendfilev(0, 9, 0x00200F90, 2, 0xFAF7B53C) = 10269</pre></div>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <p>Dans cet exemple, le d�mon httpd peut envoyer l'en-t�te de la r�ponse
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe HTTP et le fichier demand� � l'aide d'un seul appel syst�me
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <code>sendfilev(2)</code>. La s�mantique de sendfile varie en fonction des
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe syst�mes d'exploitation. Sur certains autres syst�mes, il faut faire un
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe appel � <code>write(2)</code> ou <code>writev(2)</code> pour envoyer les
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe en-t�tes avant d'appeler <code>sendfile(2)</code>.</p>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <div class="example"><pre>/65: write(4, " 1 2 7 . 0 . 0 . 1 - ".., 78) = 78</pre></div>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <p>Cet appel � <code>write(2)</code> enregistre la requ�te dans le journal
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe des acc�s. Notez qu'une des choses manquant � cette trace est un appel �
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <code>time(2)</code>. A la diff�rence d'Apache 1.3, Apache 2.x utilise
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <code>gettimeofday(3)</code> pour consulter l'heure. Sur certains syst�mes
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe d'exploitation, comme Linux ou Solaris, <code>gettimeofday</code> est
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe impl�ment� de mani�re optimis�e de telle sorte qu'il consomme moins de
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe ressources qu'un appel syst�me habituel.</p>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <div class="example"><pre>/65: shutdown(9, 1, 1) = 0
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe/65: poll(0xFAF7B980, 1, 2000) = 1
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe/65: read(9, 0xFAF7BC20, 512) = 0
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe/65: close(9) = 0</pre></div>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <p>Le thread de worker effectue une fermeture "en prenant son temps"
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe (lingering close) de la connexion.</p>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <div class="example"><pre>/65: close(10) = 0
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe/65: lwp_park(0x00000000, 0) (sleeping...)</pre></div>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <p>Enfin, le thread de worker ferme le fichier qu'il vient de d�livrer et
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe se bloque jusqu'� ce que le thread en �coute lui assigne une autre
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe connexion.</p>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <div class="example"><pre>/67: accept(3, 0x001FEB74, 0x001FEB94, 1) (sleeping...)</pre></div>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe <p>Pendant ce temps, le thread � l'�coute peut accepter une autre connexion
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe � partir du moment o� il a assign� la connexion pr�sente � un thread de
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe worker (selon une certaine logique de contr�le de flux dans le MPM worker
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe qui impose des limites au thread � l'�coute si tous les threads de worker
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe sont occup�s). Bien que cela n'apparaisse pas dans cette trace,
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe l'<code>accept(2)</code> suivant peut (et le fait en g�n�ral, en situation
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe de charge �lev�e) s'ex�cuter en parall�le avec le traitement de la
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe connexion qui vient d'�tre accept�e par le thread de worker.</p>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe </div></div>
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe<div class="bottomlang">
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe<p><span>Langues Disponibles: </span><a href="/en/misc/perf-tuning.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe<a href="/fr/misc/perf-tuning.html" title="Fran�ais">&nbsp;fr&nbsp;</a> |
fc32fe886201ffcf1ca557bdf7d34a7468ab3374wrowe<a href="/ko/misc/perf-tuning.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
f086b4b402fa9a2fefc7dda85de2a3cc1cd0a654rjung<a href="/tr/misc/perf-tuning.html" hreflang="tr" rel="alternate" title="T�rk�e">&nbsp;tr&nbsp;</a></p>
727872d18412fc021f03969b8641810d8896820bhumbedooh</div><div class="top"><a href="#page-header"><img src="/images/up.gif" alt="top" /></a></div><div class="section"><h2><a id="comments_section" name="comments_section">Commentaires</a></h2><div class="warning"><strong>Notice:</strong><br />This is not a Q&amp;A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our <a href="http://httpd.apache.org/lists.html">mailing lists</a>.</div>
0d0ba3a410038e179b695446bb149cce6264e0abnd<script type="text/javascript"><!--//--><![CDATA[//><!--
727872d18412fc021f03969b8641810d8896820bhumbedoohvar comments_shortname = 'httpd';
cc7e1025de9ac63bd4db6fe7f71c158b2cf09fe4humbedoohvar comments_identifier = 'http://httpd.apache.org/docs/trunk/misc/perf-tuning.html';
0d0ba3a410038e179b695446bb149cce6264e0abnd(function(w, d) {
cc7e1025de9ac63bd4db6fe7f71c158b2cf09fe4humbedooh if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
727872d18412fc021f03969b8641810d8896820bhumbedooh d.write('<div id="comments_thread"><\/div>');
0d0ba3a410038e179b695446bb149cce6264e0abnd var s = d.createElement('script');
0d0ba3a410038e179b695446bb149cce6264e0abnd s.type = 'text/javascript';
0d0ba3a410038e179b695446bb149cce6264e0abnd s.async = true;
ac082aefa89416cbdc9a1836eaf3bed9698201c8humbedooh s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
0d0ba3a410038e179b695446bb149cce6264e0abnd (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
0d0ba3a410038e179b695446bb149cce6264e0abnd }
0d0ba3a410038e179b695446bb149cce6264e0abnd else {
727872d18412fc021f03969b8641810d8896820bhumbedooh d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
0d0ba3a410038e179b695446bb149cce6264e0abnd }
0d0ba3a410038e179b695446bb149cce6264e0abnd})(window, document);
30471a4650391f57975f60bbb6e4a90be7b284bfhumbedooh//--><!]]></script></div><div id="footer">
205f749042ed530040a4f0080dbcb47ceae8a374rjung<p class="apache">Copyright 2015 The Apache Software Foundation.<br />Autoris� sous <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
af33a4994ae2ff15bc67d19ff1a7feb906745bf8rbowen<p class="menu"><a href="/mod/">Modules</a> | <a href="/mod/quickreference.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="/glossary.html">Glossaire</a> | <a href="/sitemap.html">Plan du site</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!--
0d0ba3a410038e179b695446bb149cce6264e0abndif (typeof(prettyPrint) !== 'undefined') {
7fec19672a491661b2fe4b29f685bc7f4efa64d4nd prettyPrint();
7fec19672a491661b2fe4b29f685bc7f4efa64d4nd}
7fec19672a491661b2fe4b29f685bc7f4efa64d4nd//--><!]]></script>
8928b6e739f1de5efcfa2a258f2cee76b52c6dfdgryzor</body></html>