1 <?xml version="1.0" encoding="UTF-8" ?>
2 <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
3 <?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
4 <!-- English Revision: 1792675 -->
5 <!-- French translation : Lucien GENTIS -->
6 <!-- Reviewed by : Vincent Deffontaines -->
9 Licensed to the Apache Software Foundation (ASF) under one or more
10 contributor license agreements. See the NOTICE file distributed with
11 this work for additional information regarding copyright ownership.
12 The ASF licenses this file to You under the Apache License, Version 2.0
13 (the "License"); you may not use this file except in compliance with
14 the License. You may obtain a copy of the License at
16 http://www.apache.org/licenses/LICENSE-2.0
18 Unless required by applicable law or agreed to in writing, software
19 distributed under the License is distributed on an "AS IS" BASIS,
20 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
21 See the License for the specific language governing permissions and
22 limitations under the License.
25 <modulesynopsis metafile="mpm_common.xml.meta">
27 <name>mpm_common</name>
28 <description>Une série de directives implémentées par plusieurs
29 modules multi-processus (MPM)</description>
33 <name>CoreDumpDirectory</name>
34 <description>Le répertoire dans lequel le serveur HTTP Apache va tenter de se
35 positionner avant d'effectuer un vidage mémoire</description>
36 <syntax>CoreDumpDirectory <var>répertoire</var></syntax>
37 <default>Voir ci-dessous pour le répertoire par défaut</default>
38 <contextlist><context>server config</context></contextlist>
39 <modulelist><module>event</module><module>worker</module>
40 <module>prefork</module></modulelist>
43 <p>Cette directive permet de définir le répertoire dans lequel
44 Apache httpd va tenter de se positionner avant d'effectuer un vidage
46 Si votre système d'exploitation est configuré pour créer des
47 fichiers de vidage mémoire dans le répertoire de travail des
48 processus qui se sont crashés,
49 <directive>CoreDumpDirectory</directive> est nécessaire pour
50 définir un répertoire de travail autre que le répertoire par défaut
51 <directive module="core">ServerRoot</directive>, ce répertoire de
52 travail ne devant pas être accessible en écriture par l'utilisateur sous
53 lequel le serveur s'exécute.</p>
55 <p>Si vous avez besoin d'un vidage mémoire pour le débogage, vous
56 pouvez utiliser cette directive pour le placer à un endroit
57 différent. Cette directive n'a aucun effet si votre système
58 d'exploitation n'est pas configuré pour créer des
59 fichiers de vidage mémoire dans le répertoire de travail des
60 processus qui se sont crashés.</p>
62 <note><title>Vidages mémoire sous Linux</title>
63 <p>Si Apache httpd est démarré sous l'utilisateur root puis bascule vers
64 un autre utilisateur, le noyau Linux <em>désactive</em> les
65 vidages mémoire, même si le répertoire est accessible en écriture au
66 processus. Apache httpd (versions 2.0.46 et supérieures) réactive les
67 vidages mémoire sous Linux 2.4 et au delà, mais seulement si vous
68 définissez une directive <directive>CoreDumpDirectory</directive>.</p>
72 <title>Vidages mémoire sous BSD</title>
73 <p>Pour activer le vidage mémoire des exécutables suid sur les
74 systèmes de style BSD (comme FreeBSD), définissez
75 <code>kern.sugid_coredump</code> à 1.
79 <note><title>Signaux spécifiques</title>
80 <p><directive>CoreDumpDirectory</directive> n'est traité qu'à la
81 reception d'un certain nombre de signaux , SIGFPE, SIGILL, SIGABORT,
82 SIGSEGV, et SIGBUS.</p>
84 Sur certains systèmes d'exploitation, SIGQUIT provoque aussi un
85 vidage mémoire, mais n'est pas traité par les directives
86 <directive>CoreDumpDirectory</directive> ou
87 <directive>EnableExceptionHook</directive>, si bien que la
88 définition du répertoire d'enregistrement du vidage mémoire est
89 entièrement dévolue au système d'exploitation.</p>
95 <name>EnableExceptionHook</name>
96 <description>Active un hook ("point d'accrochage logiciel") qui exécute des
97 gestionnaires d'exception après un crash</description>
98 <syntax>EnableExceptionHook On|Off</syntax>
99 <default>EnableExceptionHook Off</default>
100 <contextlist><context>server config</context></contextlist>
102 <module>event</module><module>worker</module>
103 <module>prefork</module></modulelist>
106 <p>Pour des raisons de sécurité, cette directive n'est disponible
107 que si la compilation du serveur a été configurée avec l'option
108 <code>--enable-exception-hook</code>. Elle permet d'activer un hook
109 ("point d'accrochage logiciel")
110 qui autorise certains modules externes à effectuer un branchement et
111 accomplir telle ou telle action après le crash d'un processus
114 <p>Deux modules, <code>mod_whatkilledus</code> et
115 <code>mod_backtrace</code> utilisent ce hook. Veuillez vous
117 href="https://emptyhammock.com/projects/httpd/diag/"
118 >page EnableExceptionHook</a> de Jeff Trawick pour plus
119 d'informations à leur sujet.</p>
124 <name>GracefulShutdownTimeout</name>
125 <description>Spécifie le délai maximum après lequel le serveur va
126 s'arrêter dans le cas d'un arrêt "en douceur"</description>
127 <syntax>GracefulShutdownTimeout <var>seconds</var></syntax>
128 <default>GracefulShutdownTimeout 0</default>
129 <contextlist><context>server config</context></contextlist>
130 <modulelist><module>event</module><module>worker</module>
131 <module>prefork</module></modulelist>
134 <p>La directive <directive>GracefulShutdownTimeout</directive>
135 permet de spécifier le temps, en secondes, pendant lequel le serveur
136 va continuer à fonctionner après avoir reçu un signal
137 "graceful-stop" ("Arrêt en douceur"), afin de terminer le traitement
138 des connexions en cours.</p>
140 <p>Définir cette valeur à zéro signifie au serveur d'attendre
141 jusqu'à ce que toutes les requêtes en cours aient été traitées.</p>
147 <description>Ficher dans lequel le serveur enregistre l'identificateur
148 de processus du démon</description>
149 <syntax>PidFile <var>nom fichier</var></syntax>
150 <default>PidFile httpd.pid</default>
151 <contextlist><context>server config</context></contextlist>
152 <modulelist><module>event</module><module>worker</module>
153 <module>prefork</module><module>mpm_winnt</module>
154 <module>mpmt_os2</module>
158 <p>La directive <directive>PidFile</directive> permet de définir le
159 ficher dans lequel le serveur
160 enregistre l'identificateur de processus du démon. Si le chemin du
161 fichier n'est pas absolu, il est considéré comme relatif au chemin
162 défini par la directive <directive
163 module="core">DefaultRuntimeDir</directive>.</p>
165 <example><title>Exemple</title>
166 <highlight language="config">
167 PidFile /var/run/apache.pid
171 <p>Il est souvent utile de pouvoir envoyer un signal au
172 serveur afin qu'il ferme et ouvre à nouveau ses journaux
173 d'<directive module="core">erreur</directive> et de <directive
174 module="mod_log_config">transfert</directive>, et recharge son
175 fichier de configuration. Pour ce faire, on envoie un signal SIGHUP
176 (kill -1) à l'identificateur de processus enregistré dans le fichier
177 défini par la directive <directive>PidFile</directive>.</p>
179 <p>La directive <directive>PidFile</directive> fait l'objet des
180 mêmes avertissements que ceux concernant le chemin d'enregistrement
181 des fichiers journaux et la <a
182 href="../misc/security_tips.html#serverroot">sécurité</a>.</p>
184 <note><title>Note</title>
185 <p>Depuis la version 2 du serveur HTTP Apache, nous recommandons de n'utiliser
186 que le script <program>apachectl</program>, ou le script de
187 démarrage fourni avec votre système d'exploitation pour (re)démarrer ou
188 arrêter le serveur.</p>
195 <description>Les adresses IP et ports sur lesquels le serveur écoute</description>
196 <syntax>Listen [<var>adresse IP</var>:]<var>numéro port</var>
197 [<var>protocole</var>]</syntax>
198 <contextlist><context>server config</context></contextlist>
199 <modulelist><module>event</module><module>worker</module>
200 <module>prefork</module><module>mpm_winnt</module>
201 <module>mpm_netware</module><module>mpmt_os2</module>
205 <p>La directive <directive>Listen</directive> permet de signifier à
206 Apache httpd de ne se mettre à l'écoute que sur les adresses IP et ports spécifiés ; par
207 défaut, le serveur répond aux requêtes en provenance de toutes les
208 interfaces réseau. La directive <directive>Listen</directive> est
209 dorénavant requise, et si elle est absente du fichier de
210 configuration, le serveur refusera de démarrer. Ceci constitue un
211 changement par rapport aux versions précédentes d'Apache httpd.</p>
213 <p>La directive <directive>Listen</directive> signifie au serveur de
214 n'accepter les requêtes entrantes que vers le port ou le couple
215 adresse-port spécifié. Si seulement un port est spécifié, le serveur
216 se met à l'écoute sur ce port sur toutes les interfaces réseau. Si une adresse IP
217 et un port sont spécifiés, le serveur va se mettre à l'écoute sur ce port sur
218 l'interface réseau correspondant à l'adresse IP.</p>
220 <p>On peut utiliser autant de directives
221 <directive>Listen</directive> que nécessaire pour spécifier
222 plusieurs adresses et/ou ports à écouter. Le serveur répondra aux
223 requêtes vers tous les adresses et ports spécifiés.</p>
225 <p>Par exemple, pour que le serveur accepte les connexions sur les
226 ports 80 et 8000, utilisez :</p>
228 <highlight language="config">
233 <p>Pour que le serveur accepte les connexions sur deux interfaces et
234 ports particuliers, spécifiez :</p>
236 <highlight language="config">
237 Listen 192.170.2.1:80
238 Listen 192.170.2.5:8000
241 <p>Les adressee IPv6 doivent être entourées de crochets, comme dans
242 l'exemple suivant :</p>
244 <highlight language="config">
245 Listen [2001:db8::a00:20ff:fea7:ccea]:80
248 <p>L'argument optionnel <var>protocole</var> n'est pas nécessaire
249 dans la plupart des configurations. S'il est absent,
250 <code>https</code> est la valeur par défaut pour le port 443 et
251 <code>http</code> l'est pour tous les autres ports. L'argument
252 protocole sert à déterminer quel module doit traiter une requête, et
253 à appliquer des optimisations spécifiques à certains protocoles à
254 l'aide de la directive <directive
255 module="core">AcceptFilter</directive>.</p>
257 <p>La spécification d'un protocole n'est nécessaire que si vous
258 utilisez des ports non standards. Par exemple, pour configurer un
259 site en <code>https</code> sur le port 8443 :</p>
261 <highlight language="config">
262 Listen 192.170.2.1:8443 https
265 <note><title>Condition d'erreur</title>
266 Plusieurs directives <directive>Listen</directive> pour les mêmes
267 adresse IP/port vont provoquer l'envoi d'un message d'erreur
268 <code>Address already in use</code>.
272 <seealso><a href="../dns-caveats.html">Problèmes avec DNS</a></seealso>
273 <seealso><a href="../bind.html">Définition des adresses et ports
274 qu'utilise le serveur HTTP Apache</a></seealso>
276 href="http://wiki.apache.org/httpd/CouldNotBindToAddress">Autre
277 discussion à propos du message d'erreur <code>Address already in
278 use</code>, citant d'autres causes possibles.</a></seealso>
282 <name>ListenCoresBucketsRatio</name>
283 <description>Rapport entre le nombre de coeurs de processeur activés et
284 le nombre de segments d'écoute</description>
285 <syntax>ListenCoresBucketsRatio <var>ratio</var></syntax>
286 <default>ListenCoresBucketsRatio 0 (disabled)</default>
287 <contextlist><context>server config</context></contextlist>
288 <modulelist><module>event</module><module>worker</module>
289 <module>prefork</module>
291 <compatibility>Disponible à partir de la version 2.4.13 du serveur HTTP
292 Apache, avec un noyau supportant l'option de socket
293 <code>SO_REUSEPORT</code>, et distribuant uniformément les nouvelles
294 connexions aux sockets d'écoute des processus (ou threads) qui
295 l'utilisent (par exemple Linux versions 3.9 et ultérieures, mais pas
296 l'implémentation courante de <code>SO_REUSEPORT</code> par les
297 plateformes de type BSD.</compatibility>
300 <p>Vous pouvez utiliser la directive
301 <directive>ListenCoresBucketsRatio</directive> pour spécifier un
302 <var>ratio</var> entre le nombre de coeurs de CPU activés et le
303 nombre de segments d'écoute (listeners' buckets) souhaités ; le
304 serveur HTTP Apache va alors créer<code>num_cpu_cores / ratio</code>
305 segments d'écoute, chacun contenant son propre socket d'écoute
306 <directive>Listen</directive> sur le ou les mêmes ports ; chaque
307 processus enfant sera associé à un seul segment d'écoute (avec une
308 distribution de type round-robin des segments à la création des
309 processus enfants).</p>
311 <note><title>Définition du terme coeur de CPU activé ("online")</title>
312 <p>Sous Linux et BSD, un coeur de CPU peut être activé ou désactivé si <a
313 href="https://www.kernel.org/doc/Documentation/cpu-hotplug.txt">Hotplug</a>
314 a été configuré ; la directive
315 <directive>ListenCoresBucketsRatio</directive> doit donc tenir compte de ce
316 paramètre pour calculer le nombre de segments d'écoute à créer.</p>
319 <p>La directive <directive>ListenCoresBucketsRatio</directive> peut
320 améliorer le support de la montée en charge lorsque l'arrivée de
321 nouvelles connexions est/devient un goulot d'étranglement. Le test
322 de cette fonctionnalité avec des machines possédant un nombre de
323 coeurs de CPU important a permit de constater une amélioration des
324 performances significative et des temps de réponse plus courts.</p>
326 <p>Pour que cette fonctionnalité soit activée, le nombre de coeurs
327 de CPU doit être égal au moins au double du <var>ratio</var>
328 spécifié. Si vous spécifiez la valeur recommandée pour
329 <var>ratio</var>, à savoir <code>8</code>, le nombre minimum de
330 coeurs de processeurs disponibles sera alors de <code>16</code>. La valeur
331 optimale de <var>ratio</var> permettant d'obtenir des performances maximales
332 doit être calculée pour chaque système cible, en testant plusieurs valeurs
333 et en observant les résultats.</p>
335 <p>Cette directive influence le calcul des valeurs limites inférieures de
336 <directive module="mpm_common">MinSpareThreads</directive> et <directive
337 module="mpm_common">MaxSpareThreads</directive>. En effet, pour accepter les
338 connexions de manière optimale, le nombre de processus enfants doit être un
339 multiple du nombre de segments d'écoute.</p>
342 <title>Cas où plusieurs <directive>Listen</directive>ers ou serveurs HTTP
343 Apache partagent la même adresse IP et port</title>
344 <p>La définition de l'option <code>SO_REUSEPORT</code> pour les sockets
345 d'écoute permet à plusieurs processus (partageant le même <code>EUID</code>,
346 par exemple <code>root</code>) de se rattacher à la même adresse IP et port,
347 sans obtenir l'erreur de rattachement que le système génère habituellement
348 lorsque ce cas se produit.</p>
349 <p>Cela signifie aussi que plusieurs instances d'Apache httpd configurées
350 avec le même <code>IP:port</code> et avec une valeur
351 <directive>ListenCoresBucketsRatio</directive> positive pourraient démarrer
352 sans erreur, et fonctionner ensuite avec une répartition uniforme des
353 connexions entrantes sur ces différentes instances (ce n'est PAS une
354 recommandation et ne constitue pas un usage approprié à tous les cas, mais
355 juste un avertissement sur le fait qu'un véritable problème de rattachement
356 multiple à un <code>IP:port</code> pourrait alors être occulté).</p>
357 <p>Au sein d'une même instance, Apache httpd vérifie la présence de
358 directives <directive>Listen</directive> multiples avec la même adresse IP
359 (ou nom d'hôte) et le même port, et refuse de démarrer si c'est le cas, ce
360 qui permet d'éviter la création de segments d'écoute dupliqués qui seraient
361 du coup inutiles et affecteraient les performances. Cependant, il ne peut
362 pas (et n'essaiera pas de le faire) intercepter tous les cas possibles de
363 recouvrement (comme un nom d'hôte correspondant à une adresse IP utilisée
364 quelque part ailleurs).</p>
370 <name>ListenBackLog</name>
371 <description>Longueur maximale de la liste d'attente des
372 connexions</description>
373 <syntax>ListenBacklog <var>backlog</var></syntax>
374 <default>ListenBacklog 511</default>
375 <contextlist><context>server config</context></contextlist>
376 <modulelist><module>event</module><module>worker</module>
377 <module>prefork</module><module>mpm_winnt</module>
378 <module>mpm_netware</module><module>mpmt_os2</module>
382 <p>La longueur maximale de la liste d'attente des connexions. En
383 général, aucune modification n'est nécessaire, ni même souhaitable ;
384 cependant, sur certains systèmes, il peut être nécessaire
385 d'en augmenter la valeur en cas d'attaque TCP SYN flood (envoi en
386 masse de requêtes SYN pour saturer le serveur). Voir le paramètre
387 backlog de l'appel système <code>listen(2)</code>.</p>
389 <p>En fait, l'argument backlog sera souvent limité à une valeur
390 inférieure en fonction du système d'exploitation. Notez aussi que de
391 nombreux systèmes d'exploitation ne tiennent pas vraiment compte de
392 la valeur spécifiée pour l'argument backlog, mais s'en inspirent
393 seulement (et choisissent en général une valeur supérieure).</p>
398 <name>MaxRequestWorkers</name>
399 <description>Nombre maximum de connexions pouvant être traitées
400 simultanément</description>
401 <syntax>MaxRequestWorkers <var>nombre</var></syntax>
402 <default>Voir ci-dessous pour plus de détails</default>
403 <contextlist><context>server config</context></contextlist>
404 <modulelist><module>event</module><module>worker</module>
405 <module>prefork</module>
409 <p>La directive <directive>MaxRequestWorkers</directive> permet de fixer le
410 nombre maximum de requêtes pouvant être traitées simultanément.
411 Si la limite <directive>MaxRequestWorkers</directive> est atteinte, toute
412 tentative de connexion sera normalement mise dans une file
413 d'attente, et ceci jusqu'à un certain nombre dépendant de la
414 directive <directive module="mpm_common">ListenBacklog</directive>.
415 Lorsqu'un processus enfant se libèrera suite à la fin du traitement
416 d'une requête, la connexion en attente pourra être traitée à son
419 <p>Pour les serveurs non threadés (<em>c'est à dire</em> utilisant
420 <module>prefork</module>), la directive
421 <directive>MaxRequestWorkers</directive> définit alors le nombre maximum de
422 processus enfants qui pourront être lancés simultanément pour
423 traiter les requêtes. La valeur par défaut est <code>256</code> ; si
424 vous l'augmentez, vous devez aussi augmenter la valeur de la
426 module="mpm_common">ServerLimit</directive>.</p>
428 <p>Pour les serveur threadés et hybrides (utilisant <em>par
429 exemple</em> <module>event</module> ou <module>worker</module>),
430 <directive>MaxRequestWorkers</directive> définit alors le nombre total de
431 threads qui seront disponibles pour servir les clients. Dans le
432 cas des MPMs hybrides, la valeur par défaut est <code>16</code>
433 (directive <directive
434 module="mpm_common">ServerLimit</directive>) multiplié par la valeur
435 <code>25</code> (directive <directive module="mpm_common"
436 >ThreadsPerChild</directive>). Par conséquent, pour affecter à la
437 directive <directive>MaxRequestWorkers</directive> une valeur qui requiert
438 plus de 16 processus, vous devez aussi augmenter la valeur de la
439 directive <directive module="mpm_common"
440 >ServerLimit</directive>.</p>
442 <p>Le nom de la directive <directive>MaxRequestWorkers</directive>
443 était <directive>MaxClients</directive> avant la version 2.3.13. Cet
444 ancien nom est encore supporté.</p>
449 <name>MaxMemFree</name>
450 <description>Quantité maximale de mémoire que l'allocateur principal est
451 autorisé à conserver sans appeler <code>free()</code></description>
452 <syntax>MaxMemFree <var>KOctets</var></syntax>
453 <default>MaxMemFree 2048</default>
454 <contextlist><context>server config</context></contextlist>
455 <modulelist><module>event</module><module>worker</module>
456 <module>prefork</module><module>mpm_winnt</module>
457 <module>mpm_netware</module>
461 <p>La directive <directive>MaxMemFree</directive> permet de définir
462 le nombre maximum de KOctets libres que tout allocateur est
463 autorisé à conserver sans appeler <code>free()</code>. Dans les MPMs
464 threadés, chaque thread possède son propre allocateur. Si elle est
465 définie à 0, la quantité de mémoire libre que peut conserver un
466 allocateur est illimitée.</p>
471 <name>MaxConnectionsPerChild</name>
472 <description>Limite le nombre de connexions qu'un processus enfant va
473 traiter au cours de son fonctionnement</description>
474 <syntax>MaxConnectionsPerChild <var>number</var></syntax>
475 <default>MaxConnectionsPerChild 0</default>
476 <contextlist><context>server config</context></contextlist>
477 <modulelist><module>event</module><module>worker</module>
478 <module>prefork</module><module>mpm_winnt</module>
479 <module>mpm_netware</module><module>mpmt_os2</module>
481 <compatibility>Disponible depuis la version 2.3.9 du serveur HTTP
482 Apache. L'ancien nom <code>MaxRequestsPerChild</code> est encore
483 supporté.</compatibility>
486 <p>La directive <directive>MaxConnectionsPerChild</directive> permet de
487 définir le nombre maximum de connexions qu'un processus enfant va
488 pouvoir traiter au cours de son fonctionnement. Lorsqu'il a traité
489 <directive>MaxConnectionsPerChild</directive> connexions, le processus
490 enfant est arrêté. Si <directive>MaxConnectionsPerChild</directive> est
491 définie à <code>0</code>, il n'y a plus aucune limite sur le nombre
492 de connexions que le processus pourra traiter.</p>
494 <p>Définir <directive>MaxConnectionsPerChild</directive> à une valeur
495 non nulle limite la quantité de mémoire qu'un processus peut
496 consommer à cause de fuites (accidentelles) de mémoire.</p>
502 <name>MaxSpareThreads</name>
503 <description>Nombre maximum de threads inactifs</description>
504 <syntax>MaxSpareThreads <var>nombre</var></syntax>
505 <default>Voir ci-dessous pour plus de détails</default>
506 <contextlist><context>server config</context></contextlist>
507 <modulelist><module>event</module><module>worker</module>
508 <module>mpm_netware</module><module>mpmt_os2</module>
512 <p>C'est le nombre maximum de threads inactifs. Les MPMs utilisent
513 cette directive de différentes manières.</p>
515 <p>Pour <module>worker</module> et <module>event</module>, la définition par défaut est
516 <code>MaxSpareThreads 250</code>. Ce MPM gère les threads inactifs
517 au niveau du serveur. Si le serveur possède trop de threads
518 inactifs, des processus enfants seront arrêtés jusqu'à ce que le
519 nombre de threads inactifs repasse en dessous de cette limite. Des
520 processus/threads supplémentaires sont susceptibles d'être créés si
521 <directive module="mpm_common">ListenCoresBucketsRatio</directive> est
524 <p>Pour <module>mpm_netware</module>, la définition par défaut est
525 <code>MaxSpareThreads 100</code>. Comme ce MPM n'exécute qu'un seul
526 processus, le nombre de processus inactifs est surveillé au
527 niveau du serveur.</p>
529 <p><module>mpmt_os2</module> fonctionne de manière similaire à
530 <module>mpm_netware</module>. Pour <module>mpmt_os2</module>, la
531 valeur par défaut est <code>10</code>.</p>
533 <note><title>Contraintes</title>
534 <p>La gamme de valeurs pour <directive>MaxSpareThreads</directive>
535 est limitée. Apache httpd corrigera automatiquement cette valeur selon
536 les règles suivantes :</p>
538 <li>Avec <module>mpm_netware</module>, <directive
539 >MaxSpareThreads</directive> doit être supérieure à <directive
540 module="mpm_common">MinSpareThreads</directive>.</li>
543 <module>worker</module> et <module>event</module>, <directive>MaxSpareThreads</directive>
544 doit être supérieure ou égale à la somme de <directive
545 module="mpm_common">MinSpareThreads</directive> et <directive
546 module="mpm_common">ThreadsPerChild</directive>.</li>
550 <seealso><directive module="mpm_common">MinSpareThreads</directive></seealso>
551 <seealso><directive module="mpm_common">StartServers</directive></seealso>
552 <seealso><directive module="prefork">MaxSpareServers</directive></seealso>
556 <name>MinSpareThreads</name>
557 <description>Nombre minimum de threads inactifs qui seront disponibles
558 pour pouvoir traiter les pics de requêtes</description>
559 <syntax>MinSpareThreads <var>nombre</var></syntax>
560 <default>Voir ci-dessous pour plus de détails</default>
561 <contextlist><context>server config</context></contextlist>
562 <modulelist><module>event</module><module>worker</module>
563 <module>mpm_netware</module><module>mpmt_os2</module>
567 <p>C'est le nombre minimum de threads inactifs pour être en mesure
568 de traiter les pics de requêtes. Les MPMs utilisent cette directive
569 de différentes manières.</p>
571 <p>Avec <module>worker</module> et <module>event</module>, la définition par défaut est
572 <code>MinSpareThreads 75</code>, et le nombre de threads inactifs
573 est surveillé au niveau du serveur. Si le serveur ne possède pas
574 assez de threads inactifs, des processus enfants sont créés jusqu'à
575 ce que le nombre de threads inactifs repasse au dessus de
576 <var>nombre</var>. Des processus/threads supplémentaires peuvent
577 être créés si <directive
578 module="mpm_common">ListenCoresBucketsRatio</directive> est activée.</p>
580 <p>Avec <module>mpm_netware</module>, la définition par défaut est
581 <code>MinSpareThreads 10</code> et, comme ce MPM n'exécute qu'un
582 seul processus, le nombre de threads est surveillé au niveau du
585 <p><module>mpmt_os2</module> fonctionne de manière similaire à
586 <module>mpm_netware</module>. Pour <module>mpmt_os2</module>, la
587 valeur par défaut est <code>5</code>.</p>
590 <seealso><directive module="mpm_common">MaxSpareThreads</directive></seealso>
591 <seealso><directive module="mpm_common">StartServers</directive></seealso>
592 <seealso><directive module="prefork">MinSpareServers</directive></seealso>
596 <name>ScoreBoardFile</name>
597 <description>Chemin du fichier où sont stockées les données concernant
598 la coordination des processus enfants</description>
599 <syntax>ScoreBoardFile <var>file-path</var></syntax>
600 <default>ScoreBoardFile apache_runtime_status</default>
601 <contextlist><context>server config</context></contextlist>
602 <modulelist><module>event</module><module>worker</module>
603 <module>prefork</module><module>mpm_winnt</module>
607 <p>Le serveur HTTP Apache utilise un tableau de bord pour la
608 communication entre le processus parent et les processus enfants.
609 Pour faciliter cette communication, certaines architectures
610 nécessitent un fichier. En l'absence de cette directive, donc si
611 aucun nom de fichier n'est spécifié, Apache httpd tentera tout
612 d'abord de créer un tableau uniquement en mémoire (en utilisant la
613 mémoire partagée anonyme) ; et si il n'y parvient pas, il tentera de
614 créer un fichier sur disque (en utilisant la mémoire partagée à base
615 de fichier). Si cette directive est utilisée, Apache httpd créera
616 systématiquement un fichier sur disque.</p>
618 <p>Si <var>file-path</var> n'est pas un chemin absolu, il sera relatif à la
619 valeur spécifiée par la directive <directive
620 module="core">DefaultRuntimeDir</directive>.
623 <example><title>Exemple</title>
624 <highlight language="config">
625 ScoreBoardFile /var/run/apache_runtime_status
629 <p>Une mémoire partagée sous forme de fichier est utile pour les
630 applications tierces qui nécessitent un accès direct au tableau de
631 bord des processus.</p>
633 <p>Si vous utilisez un <directive>ScoreBoardFile</directive>, vous
634 pourrez constater une amélioration des performances en le plaçant
635 sur un disque virtuel en RAM. Assurez-vous cependant de tenir compte
636 des mêmes avertissements que ceux concernant le chemin du fichier
638 href="../misc/security_tips.html">sécurité</a>.</p>
640 <seealso><a href="../stopping.html">Arrêter et redémarrer
641 le serveur HTTP Apache</a></seealso>
645 <name>ReceiveBufferSize</name>
646 <description>Taille du tampon TCP en entrée</description>
647 <syntax>ReceiveBufferSize <var>octets</var></syntax>
648 <default>ReceiveBufferSize 0</default>
649 <contextlist><context>server config</context></contextlist>
650 <modulelist><module>event</module><module>worker</module>
651 <module>prefork</module><module>mpm_winnt</module>
652 <module>mpm_netware</module><module>mpmt_os2</module>
656 <p>Le serveur va fixer la taille du tampon TCP en entrée au
657 nombre d'octets spécifié.</p>
659 <p>Si la directive est définie à <code>0</code>, le serveur va
660 utiliser la valeur par défaut adoptée par le système
666 <name>SendBufferSize</name>
667 <description>Taille du tampon TCP en sortie</description>
668 <syntax>SendBufferSize <var>octets</var></syntax>
669 <default>SendBufferSize 0</default>
670 <contextlist><context>server config</context></contextlist>
671 <modulelist><module>event</module><module>worker</module>
672 <module>prefork</module><module>mpm_winnt</module>
673 <module>mpm_netware</module><module>mpmt_os2</module>
677 <p>Définit la taille du tampon TCP en sortie avec le nombre
678 d'octets spécifié. Ceci s'avère souvent très utile pour augmenter les
679 valeurs par défaut standards du passé des systèmes d'exploitation
680 pour les transmissions à grande vitesse et haute densité (<em>c'est
681 à dire</em> de l'ordre de 100ms comme sur les liaisons rapides
682 transcontinentales).</p>
684 <p>Si la directive est définie à <code>0</code>, le serveur va
685 utiliser la valeur par défaut adoptée par le système
688 <p>L'amélioration des performances des connexions à grande vitesse
689 et à temps de latence élevé, peut nécessiter
690 une intervention au niveau de la configuration de votre système
693 <note><p>Sous certains systèmes d'exploitation, la modification du
694 comportement TCP via une augmentation de la valeur de
695 <directive>SendBufferSize</directive> risque de ne pas être
696 perceptible, si la directive <directive
697 module="core">EnableSendfile</directive> n'est pas définie à OFF.
698 Cette interaction ne s'applique qu'aux fichiers statiques.</p> </note>
703 <name>ServerLimit</name>
704 <description>Limite supérieure de la définition du nombre de
705 processus</description>
706 <syntax>ServerLimit <var>nombre</var></syntax>
707 <default>Voir ci-dessous pour plus de détails</default>
708 <contextlist><context>server config</context></contextlist>
709 <modulelist><module>event</module><module>worker</module>
710 <module>prefork</module>
714 <p>Avec le MPM <module>prefork</module>, cette directive définit le
715 nombre maximum que l'on peut affecter à la directive <directive
716 module="mpm_common">MaxRequestWorkers</directive>, et ceci pour la
717 durée de vie du processus Apache httpd. Avec les
718 MPMs <module>worker</module> et <module>event</module>, cette directive, en combinaison avec
719 <directive module="mpm_common">ThreadLimit</directive>, définit le
720 nombre maximum que l'on peut affecter à <directive
721 module="mpm_common">MaxRequestWorkers</directive>, et ceci pour la durée de
722 vie du processus Apache httpd. Avec le MPM <module>event</module>, cette
723 directive permet aussi de définir combien de processus anciens peuvent
724 continuer à s'exécuter pour terminer le traitement des connexions ouvertes.
725 Au cours d'un redémarrage, vous pouvez
726 modifier la valeur de la directive <directive
727 module="mpm_common">MaxRequestWorkers</directive>, alors que toute
728 tentative de modification de la valeur de la directive <directive
729 module="mpm_common">ServerLimit</directive> sera ignorée.</p>
731 <p>Cette directive doit être utilisée avec précaution. Si
732 <directive>ServerLimit</directive> est définie à une valeur beaucoup
733 plus grande que nécessaire, de la mémoire partagée supplémentaire
734 sera inutilement allouée. Si à la fois
735 <directive>ServerLimit</directive> et <directive
736 module="mpm_common">MaxRequestWorkers</directive> possèdent des valeurs
737 supérieures à ce que le système peut supporter, ce dernier peut
738 devenir instable ou Apache httpd peut tout simplement refuser de démarrer.</p>
740 <p>Avec les MPMs <module>prefork</module> et <module>event</module>, n'utilisez cette directive
741 que si vous devez définir <directive
742 module="mpm_common">MaxRequestWorkers</directive> à une valeur supérieure à
743 256 (valeur par défaut). N'affectez pas à la directive <directive
744 module="mpm_common">ServerLimit</directive> une valeur supérieure à
745 celle que vous avez prévu d'affecter à la directive <directive
746 module="mpm_common">MaxRequestWorkers</directive>.</p>
748 <p>Avec <module>worker</module>, n'utilisez cette directive que si
749 la définition de vos directives <directive
750 module="mpm_common">MaxRequestWorkers</directive> et <directive
751 module="mpm_common">ThreadsPerChild</directive> nécessitent plus de
752 16 processus serveurs (valeur par défaut). N'affectez pas à la
753 directive <directive module="mpm_common">ServerLimit</directive> une
754 valeur supérieure au nombre de processus requis pour la définition
755 des directives <directive module="mpm_common">MaxRequestWorkers
756 </directive> et <directive
757 module="mpm_common">ThreadsPerChild</directive>.</p>
759 <p>Avec le MPM <module>event</module>, augmentez la valeur de cette
760 directive si le nombre de processus défini par les directives <directive
761 module="mpm_common">MaxRequestWorkers</directive> et <directive
762 module="mpm_common">ThreadsPerChild</directive> augmenté du nombre de processus
763 en procédure d'arrêt "graceful" est supérieur à 16 (valeur par défaut).</p>
765 <note><title>Note</title>
766 <p>Il existe une limite de <code>ServerLimit 20000</code> codée en
767 dur dans le serveur (200000 pour le MPM <module>prefork</module>).
768 Ceci est censé éviter les effets désastreux que pourrait provoquer
769 une faute de frappe. Pour dépasser cette limite, vous devez
770 modifier la valeur de MAX_SERVER_LIMIT dans le fichier source du
771 mpm et recompiler le serveur.</p>
774 <seealso><a href="../stopping.html">Arrêter et redémarrer
775 le serveur HTTP Apache</a></seealso>
779 <name>StartServers</name>
780 <description>Nombre de processus enfants du serveur créés au
781 démarrage</description>
782 <syntax>StartServers <var>nombre</var></syntax>
783 <default>Voir ci-dessous pour plus de détails</default>
784 <contextlist><context>server config</context></contextlist>
785 <modulelist><module>event</module><module>worker</module>
786 <module>prefork</module><module>mpmt_os2</module>
790 <p>La directive <directive>StartServers</directive> permet de
791 définir le nombre de processus enfants du serveur créés au
792 démarrage. Comme le nombre de processus est contrôlé dynamiquement
793 en fonction de la charge (voir <directive
794 module="mpm_common">MinSpareThreads</directive>, <directive
795 module="mpm_common">MaxSpareThreads</directive>, <directive
796 module="prefork">MinSpareServers</directive>, <directive
797 module="prefork">MaxSpareServers</directive>), il n'est en général
798 pas nécessaire d'ajuster ce paramètre.</p>
800 <p>La valeur par défaut diffère d'un MPM à l'autre. Pour
801 <module>worker</module> et <module>event</module>, la définition par défaut est
802 <code>StartServers 3</code> ; la valeur par défaut est
803 <code>5</code> pour <module>prefork</module> et <code>2</code>
804 pour <module>mpmt_os2</module>.</p>
809 <name>StartThreads</name>
810 <description>Nombre de threads créés au démarrage</description>
811 <syntax>StartThreads <var>nombre</var></syntax>
812 <default>Voir ci-dessous pour plus de détails</default>
813 <contextlist><context>server config</context></contextlist>
814 <modulelist><module>mpm_netware</module></modulelist>
817 <p>C'est le nombre de threads créés au démarrage du serveur. Comme
818 le nombre de threads est contrôlé dynamiquement
819 en fonction de la charge (voir <directive
820 module="mpm_common">MinSpareThreads</directive>, <directive
821 module="mpm_common">MaxSpareThreads</directive>, <directive
822 module="prefork">MinSpareServers</directive>, <directive
823 module="prefork">MaxSpareServers</directive>), il n'est en général
824 pas nécessaire d'ajuster ce paramètre.</p>
826 <p>Pour <module>mpm_netware</module>, la définition par défaut est
827 <code>StartThreads 50</code> et, comme il n'y a qu'un processus, il
828 s'agit du nombre total de threads créés au démarrage pour servir les
834 <name>ThreadLimit</name>
835 <description>Le nombre de threads maximum que l'on peut définir par
836 processus enfant</description>
837 <syntax>ThreadLimit <var>nombre</var></syntax>
838 <default>Voir ci-dessous pour plus de détails</default>
839 <contextlist><context>server config</context></contextlist>
840 <modulelist><module>event</module><module>worker</module>
841 <module>mpm_winnt</module>
845 <p>Cette directive permet de définir le nombre maximum que l'on peut
846 affecter à la directive <directive
847 module="mpm_common">ThreadsPerChild</directive> pour la durée de vie
848 du processus Apache httpd. La directive <directive
849 module="mpm_common">ThreadsPerChild</directive> peut être modifiée
850 au cours d'un redémarrage jusqu'à la valeur de la directive <directive
851 module="mpm_common">ThreadLimit</directive>, mais toute tentative
852 de modification de la directive <directive
853 module="mpm_common">ThreadLimit</directive> au cours d'un
854 redémarrage sera ignorée.</p>
856 <p>L'utilisation de cette directive doit faire l'objet de
857 précautions particulières. Si <directive>ThreadLimit</directive> est
858 définie à une valeur très supérieure à la directive <directive
859 module="mpm_common">ThreadsPerChild</directive>, de la mémoire
860 partagée supplémentaire sera inutilement allouée. Si les directives
861 <directive>ThreadLimit</directive> et <directive
862 module="mpm_common">ThreadsPerChild</directive> sont définies à des
863 valeurs supérieures à ce que le système peut supporter, ce dernier
864 peut devenir instable, ou Apache httpd peut tout simplement refuser de
865 démarrer. Ne définissez pas cette directive à une valeur supérieure
866 à la valeur maximale que vous pensez affecter à la directive <directive
867 module="mpm_common">ThreadsPerChild</directive> pour le processus
868 Apache httpd en cours d'exécution.</p>
870 <p>La valeur par défaut de la directive
871 <directive>ThreadLimit</directive> est <code>1920</code> avec
872 <module>mpm_winnt</module>, et <code>64</code> avec les autres
875 <note><title>Note</title>
876 <p>Il existe une limite de <code>ThreadLimit 20000</code> (ou
877 <code>ThreadLimit 100000</code> avec <module>event</module>,
878 <code>ThreadLimit 15000</code> avec <module>mpm_winnt</module>)
879 codée en dur dans le serveur. Ceci est censé éviter les effets
880 désastreux que pourrait provoquer une faute de frappe. Pour
881 dépasser cette limite, vous devez modifier la valeur de
882 MAX_THREAD_LIMIT dans le fichier source du mpm et recompiler le
889 <name>ThreadsPerChild</name>
890 <description>Nombre de threads créés par chaque processus
892 <syntax>ThreadsPerChild <var>nombre</var></syntax>
893 <default>Voir ci-dessous pour plus de détails</default>
894 <contextlist><context>server config</context></contextlist>
895 <modulelist><module>event</module><module>worker</module>
896 <module>mpm_winnt</module>
900 <p>Cette directive permet de définir le nombre de threads que va
901 créer chaque processus enfant. Un processus enfant crée ces threads
902 au démarrage et n'en crée plus d'autres par la suite. Si l'on
903 utilise un MPM comme <module>mpm_winnt</module> qui ne lance qu'un
904 processus enfant, ce nombre doit être suffisamment grand pour
905 supporter la charge du serveur. Avec un MPM comme
906 <module>worker</module> qui lance plusieurs processus enfants, c'est
907 le nombre <em>total</em> de threads qui doit être suffisamment grand
908 pour supporter la charge du serveur.</p>
910 <p>La valeur par défaut de la directive
911 <directive>ThreadsPerChild</directive> est <code>64</code> avec
912 <module>mpm_winnt</module>, et <code>25</code> avec les autres
918 <name>ThreadStackSize</name>
919 <description>La taille en octets de la pile qu'utilisent les threads qui
920 traitent les connexions clients</description>
921 <syntax>ThreadStackSize <var>taille</var></syntax>
922 <default>65536 sous NetWare; varie en fonction des autres systèmes
923 d'exploitation</default>
924 <contextlist><context>server config</context></contextlist>
925 <modulelist><module>event</module><module>worker</module>
926 <module>mpm_winnt</module><module>mpm_netware</module>
927 <module>mpmt_os2</module>
931 <p>La directive <directive>ThreadStackSize</directive> permet de
932 définir la taille de la pile (pour les données propres) qu'utilisent
933 les threads qui traitent les connexions clients en faisant appel à
934 des modules. Dans la plupart des cas, la valeur par défaut de la
935 taille de la pile du système d'exploitation convient, mais il existe
936 certaines situations où il peut s'avérer nécessaire de l'ajuster
940 <li>Sur les plates-formes qui possèdent une valeur par défaut de
941 taille de la pile relativement petite (par exemple HP-UX), Apache
942 httpd peut se crasher si l'on utilise certains modules tiers qui
943 possèdent un quantité de données propres stockées relativement
944 importante. Il se peut que ces mêmes modules fonctionnent
945 correctement sur d'autres plate-formes où la valeur par défaut de
946 la taille de la pile est supérieure. Ce type de crash peut être
947 evité en définissant <directive>ThreadStackSize</directive> à une
948 valeur supérieure à la valeur par défaut du système
949 d'exploitation. Ce type d'ajustement n'est nécessaire que si le
950 fournisseur du module tiers en fait mention, ou si le diagnostic
951 d'un crash d'Apache httpd indique que la taille de la pile était trop
954 <li>Sur les plates-formes où la taille par défaut de la pile des
955 threads est sensiblement supérieure à la taille nécessaire pour la
956 configuration du serveur web, il est possible de disposer d'un
957 plus grand nombre de threads par processus enfant si la directive
958 <directive>ThreadStackSize</directive> est définie à une valeur
959 inférieure à la valeur par défaut du système d'exploitation.
961 type d'ajustement ne doit être effectué que dans un environnement
962 de test permettant de qualifier le serveur web au maximum de ses
963 possibilités, car il peut arriver, dans de rares cas, que des
964 requêtes nécessitent une taille de pile supérieure pour pouvoir
965 être traitées. La taille minimale requise pour la pile dépend
966 fortement des modules utilisés, mais toute modification dans la
967 configuration du serveur web peut invalider la définition courante
968 de la directive <directive>ThreadStackSize</directive>.</li>
970 <li>Sous Linux, cette directive ne peut être utilisée que pour
971 augmenter la valeur par defaut de la taille de la pile, car
972 l'appel système sous-jacent utilise cette valeur comme taille de pile
973 <em>minimale</em>. C'est la limite logicielle (souvent élevée)
974 pour <code>ulimit -s</code> (8Mo si aucune limite) qui est
975 utilisée comme taille de pile par défaut.</li>
978 <note>Il est recommandé de ne pas réduire
979 <directive>ThreadStackSize</directive>, à moins qu'un grand nombre
980 de threads par processus enfant ne soit nécessaire. Sur certaines
981 plates-formes (y compris Linux), une valeur de 128000 est déjà trop
982 basse et provoque des crashes avec certains modules courants.</note>