blob: 09f845465e00b10266b178071adfb94751f16ee0 [file] [log] [blame]
<?xml version="1.0"?>
<!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
<!-- English Revision : 1137744 -->
<!-- French translation : Lucien GENTIS -->
<!-- Reviewed by : Vincent Deffontaines -->
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<modulesynopsis metafile="prefork.xml.meta">
<name>prefork</name>
<description>Impl&eacute;mente un serveur web avec d&eacute;marrage anticip&eacute; de
processus, sans thread</description>
<status>MPM</status>
<sourcefile>prefork.c</sourcefile>
<identifier>mpm_prefork_module</identifier>
<summary>
<p>Ce module multi-processus (MPM) impl&eacute;mente un serveur web avec
d&eacute;marrage anticip&eacute; de processus. Chaque processus du serveur peut
r&eacute;pondre aux requ&ecirc;tes entrantes, et un processus parent contr&ocirc;le la
taille du jeu de serveurs. Il est particuli&egrave;rement indiqu&eacute; pour les
sites qui ne doivent pas utiliser les threads afin de maintenir une
compatibilit&eacute; avec certaines biblioth&egrave;ques non s&ucirc;res du point de vue
des threads. C'est &eacute;galement le MPM le plus appropri&eacute; si l'on veut
isoler les requ&ecirc;tes les unes des autres, de fa&ccedil;on &agrave; ce qu'un
probl&egrave;me concernant une requ&ecirc;te n'affecte pas les autres.</p>
<p>Ce MPM s'auto-contr&ocirc;le de mani&egrave;re efficace, de sorte qu'il est
rarement n&eacute;cessaire d'ajuster ses directives de configuration. Le
plus important est la d&eacute;finition de la directive <directive
module="mpm_common">MaxRequestWorkers</directive> ; sa valeur doit &ecirc;tre
assez grande pour pouvoir traiter autant de requ&ecirc;tes simultan&eacute;es que
vous pensez recevoir, mais assez petite pour conserver suffisamment
de m&eacute;moire RAM pour tous les processus.</p>
</summary>
<seealso><a href="../bind.html">D&eacute;finition des adresses et ports
qu'utilise le serveur HTTP Apache</a></seealso>
<section id="how-it-works"><title>Comment &ccedil;a marche</title>
<p>Un processus de contr&ocirc;le unique a pour t&acirc;che de lancer les
processus enfants qui attendent les connexions et les traitent au
fur et &agrave; mesure qu'elles arrivent. Apache httpd essaie toujours de
maintenir plusieurs processus serveurs inactifs ou <dfn>en
r&eacute;serve</dfn>, afin de pouvoir traiter les requ&ecirc;tes entrantes. De
cette fa&ccedil;on, les clients n'ont pas besoin d'attendre le d&eacute;marrage
d'un nouveau processus enfant pour que ses requ&ecirc;tes puissent &ecirc;tre
trait&eacute;es.</p>
<p>Les directives <directive
module="mpm_common">StartServers</directive>, <directive
module="prefork">MinSpareServers</directive>, <directive
module="prefork">MaxSpareServers</directive> et <directive
module="mpm_common">MaxRequestWorkers</directive> permettent de contr&ocirc;ler
la mani&egrave;re dont le processus parent cr&eacute;e les processus enfants pour
traiter les requ&ecirc;tes. En g&eacute;n&eacute;ral, Apache httpd s'auto-contr&ocirc;le de mani&egrave;re
efficace, de sorte que la plupart des sites peuvent conserver les
valeurs par d&eacute;faut des directives. Les sites qui doivent traiter
plus de 256 requ&ecirc;tes simultan&eacute;es doivent augmenter la valeur de
<directive module="mpm_common">MaxRequestWorkers</directive>, alors que les
sites dont la ressource m&eacute;moire est limit&eacute;e doivent la diminuer afin
d'&eacute;viter une hyperactivit&eacute; du serveur (utilisation excessive de la
m&eacute;moire virtuelle sur disque). Vous trouverez plus d'informations &agrave;
propos du contr&ocirc;le de la cr&eacute;ation de processus dans le document <a
href="../misc/perf-tuning.html">conseils en mati&egrave;re de
performances</a></p>
<p>Alors que le processus parent est en g&eacute;n&eacute;ral d&eacute;marr&eacute; en tant que
<code>root</code> sous Unix afin de pouvoir se mettre &agrave; l'&eacute;coute sur le port 80, les
processus enfants sont lanc&eacute;s par Apache httpd sous un utilisateur avec
privil&egrave;ges restreints. On peut contr&ocirc;ler les privil&egrave;ges accord&eacute;s aux
processus enfants d'Apache httpd &agrave; l'aide des directives <directive
module="mpm_unixd">User</directive> et <directive
module="mpm_unixd">Group</directive>. Les processus enfants doivent
&ecirc;tre en mesure de lire tous les contenus destin&eacute;s &agrave; &ecirc;tre servis,
mais leurs privil&egrave;ges doivent &ecirc;tre aussi bas que possible.</p>
<p>La directive <directive
module="mpm_common">MaxConnectionsPerChild</directive> permet de
contr&ocirc;ler la fr&eacute;quence &agrave; laquelle le serveur recycle ses processus
en arr&ecirc;tant les plus anciens et en en lan&ccedil;ant de nouveaux.</p>
<p>Ce module MPM utilise le mutex <code>mpm-accept</code> pour
s&eacute;rialiser l'acc&egrave;s aux connexions entrantes lorsque peut se
pr&eacute;senter un probl&egrave;me d'afflux de requ&ecirc;tes (en g&eacute;n&eacute;ral quand il y a
plusieurs sockets en &eacute;coute). Les aspects de l'impl&eacute;mentation de ce
mutex peuvent &ecirc;tre configur&eacute;s via la directive <directive
module="core">Mutex</directive>. Vous trouverez des informations
suppl&eacute;mentaires &agrave; propos de ce mutex dans la documentation &agrave; propos
des <a href="../misc/perf-tuning.html">conseils en mati&egrave;re de
performances</a></p>
</section>
<directivesynopsis location="mpm_common"><name>CoreDumpDirectory</name>
</directivesynopsis>
<directivesynopsis location="mpm_common"><name>EnableExceptionHook</name>
</directivesynopsis>
<directivesynopsis location="mpm_common"><name>PidFile</name>
</directivesynopsis>
<directivesynopsis location="mpm_common"><name>Listen</name>
</directivesynopsis>
<directivesynopsis location="mpm_common"><name>ListenBacklog</name>
</directivesynopsis>
<directivesynopsis location="mpm_common"><name>MaxRequestWorkers</name>
</directivesynopsis>
<directivesynopsis location="mpm_common"><name>MaxMemFree</name>
</directivesynopsis>
<directivesynopsis location="mpm_common"><name>MaxConnectionsPerChild</name>
</directivesynopsis>
<directivesynopsis location="mpm_common"><name>ScoreBoardFile</name>
</directivesynopsis>
<directivesynopsis location="mpm_common"><name>ReceiveBufferSize</name>
</directivesynopsis>
<directivesynopsis location="mpm_common"><name>SendBufferSize</name>
</directivesynopsis>
<directivesynopsis location="mpm_common"><name>ServerLimit</name>
</directivesynopsis>
<directivesynopsis location="mpm_common"><name>StartServers</name>
</directivesynopsis>
<directivesynopsis location="mpm_unixd"><name>User</name>
</directivesynopsis>
<directivesynopsis location="mpm_unixd"><name>Group</name>
</directivesynopsis>
<directivesynopsis>
<name>MaxSpareServers</name>
<description>Nombre maximum de processus serveurs enfants
inactifs</description>
<syntax>MaxSpareServers <var>nombre</var></syntax>
<default>MaxSpareServers 10</default>
<contextlist><context>server config</context></contextlist>
<usage>
<p>La directive <directive>MaxSpareServers</directive> permet de
d&eacute;finir le nombre maximum souhait&eacute; de processus serveurs enfants
<em>inactifs</em>. Un processus inactif est un processus qui ne
traite pas de requ&ecirc;te. S'il y a plus de
<directive>MaxSpareServers</directive> processus inactifs, le
processus parent arr&ecirc;tera les processus exc&eacute;dentaires.</p>
<p>La modification de ce param&egrave;tre ne peut s'av&eacute;rer n&eacute;cessaire que
dans le cas de sites tr&egrave;s sollicit&eacute;s. D&eacute;finir ce param&egrave;tre &agrave; une
valeur tr&egrave;s grande est cependant dans la plupart des cas une
mauvaise id&eacute;e. Si vous essayez d'affecter &agrave; ce param&egrave;tre une valeur
&eacute;gale ou inf&eacute;rieure &agrave; la valeur de <directive
module="prefork">MinSpareServers</directive>, le serveur HTTP Apache
l'ajustera automatiquement &agrave; la valeur de <directive>
MinSpareServers</directive><code> + 1</code>.</p>
</usage>
<seealso><directive module="prefork">MinSpareServers</directive></seealso>
<seealso><directive module="mpm_common">StartServers</directive></seealso>
<seealso><directive module="mpm_common">MaxSpareThreads</directive></seealso>
</directivesynopsis>
<directivesynopsis>
<name>MinSpareServers</name>
<description>Nombre minimum de processus serveurs enfants
inactifs</description>
<syntax>MinSpareServers <var>nombre</var></syntax>
<default>MinSpareServers 5</default>
<contextlist><context>server config</context></contextlist>
<usage>
<p>La directive <directive>MinSpareServers</directive> permet de
d&eacute;finir le nombre minimum d&eacute;sir&eacute; de processus serveurs enfants
<em>inactifs</em>. Un processus inactif est un processus qui ne
traite pas de requ&ecirc;te. S'il y a moins de
<directive>MinSpareServers</directive> processus inactifs, le
processus parent va cr&eacute;er de nouveaux enfants de la mani&egrave;re suivante
: il en cr&eacute;e un, attend une seconde, il en cr&eacute;e deux, attend une
seconde, il en cr&eacute;e quatre, puis continue ainsi exponentiellement
jusu'&agrave; ce que son taux de cr&eacute;ation de processus enfants soit de 32
par seconde. Il ne s'arr&ecirc;te que lorsque le nombre de processus
enfants correspond &agrave; la d&eacute;finition de la directive
<directive>MinSpareServers</directive>.</p>
<p>La modification de ce param&egrave;tre ne peut s'av&eacute;rer n&eacute;cessaire que
dans le cas de sites tr&egrave;s sollicit&eacute;s. D&eacute;finir ce param&egrave;tre &agrave; une
valeur tr&egrave;s grande est dans la plupart des cas une mauvaise
id&eacute;e.</p>
</usage>
<seealso><directive module="prefork">MaxSpareServers</directive></seealso>
<seealso><directive module="mpm_common">StartServers</directive></seealso>
<seealso><directive module="mpm_common">MinSpareThreads</directive></seealso>
</directivesynopsis>
</modulesynopsis>