]> granicus.if.org Git - apache/blob - docs/manual/mod/event.xml.fr
Updates.
[apache] / docs / manual / mod / event.xml.fr
1 <?xml version="1.0"?>
2 <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
3 <?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
4 <!-- English Revision : 1228296 -->
5 <!-- French translation : Lucien GENTIS -->
6 <!-- Reviewed by : Vincent Deffontaines -->
7
8 <!--
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
15
16      http://www.apache.org/licenses/LICENSE-2.0
17
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.
23 -->
24
25 <modulesynopsis metafile="event.xml.meta">
26 <name>event</name>
27 <description>Une variante du MPM <module>worker</module> con&ccedil;ue pour ne
28 mobiliser des threads que pour les connexions en cours de traitement</description>
29 <status>MPM</status>
30 <sourcefile>event.c</sourcefile>
31 <identifier>mpm_event_module</identifier>
32
33 <summary>
34     <p>Le module multi-processus (MPM) <module>event</module> est con&ccedil;u
35     pour permettre le traitement d'un nombre accru de requ&ecirc;tes
36     simultan&eacute;es en d&eacute;l&eacute;guant certaines t&acirc;ches &agrave; des threads de support,
37     lib&eacute;rant par l&agrave;-m&ecirc;me le thread principal et lui permettant de
38     traiter les nouvelles requ&ecirc;tes. Il s'inspire du MPM
39     <module>worker</module> qui impl&eacute;mente un serveur hybride
40     multi-processus/multi-threads. Les directives de configuration &agrave;
41     l'ex&eacute;cution sont identiques &agrave; celles du MPM
42     <module>worker</module>.</p>
43
44     <p>Pour utiliser le MPM <module>event</module>, ajoutez
45     <code>--with-mpm=event</code> aux arguments du script
46     <program>configure</program> lorsque vous compilez le programme
47     <program>httpd</program>.</p>
48
49 </summary>
50
51 <seealso><a href="worker.html">Le MPM worker</a></seealso>
52
53 <section id="how-it-works"><title>Comment tout cela fonctionne</title>
54     <p>Ce MPM essaie de r&eacute;soudre le 'probl&egrave;me keep alive' de HTTP.
55     Lorsqu'un client a soumis une premi&egrave;re requ&ecirc;te, il peut garder la
56     connexion ouverte, et envoyer les requ&ecirc;tes suivantes en utilisant le
57     m&ecirc;me socket. Ceci permet de r&eacute;duire de mani&egrave;re significative la
58     surcharge due &agrave; la cr&eacute;ation de connexions TCP.
59     Cependant, le serveur HTTP Apache
60     mobilise en principe &agrave; cet effet un processus/thread enfant en
61     attente des donn&eacute;es du client, ce qui am&egrave;ne son propre lot
62     d'inconv&eacute;nients. Pour r&eacute;soudre ce probl&egrave;me, <module>event</module>
63     utilise un thread d&eacute;di&eacute; qui g&egrave;re les sockets en
64     &eacute;coute, tous les sockets en &eacute;tat Keep Alive, et les
65     sockets o&ugrave; les filtres gestionnaires et de protocole ont
66     fait leur travail et pour lesquels la seule chose restant &agrave; faire
67     consiste &agrave; envoyer les donn&eacute;es au client. La page d'&eacute;tat de
68     <module>mod_status</module> montre les connexions qui se trouvent
69     dans les situations mentionn&eacute;es.</p>
70
71     <p>Le gestionnaire de connexion am&eacute;lior&eacute; ne fonctionne pas encore
72     pour certains filtres de connexion, et en particulier SSL. Pour les
73     connexions SSL, ce MPM r&eacute;adopte le comportement du MPM
74     <module>worker</module> et r&eacute;serve un thread par connexion.</p>
75
76     <p>Le MPM pr&eacute;suppose que l'impl&eacute;mentation <code>apr_pollset</code>
77     sous-jacente est raisonnablement s&ucirc;re du point de vue des threads.
78     Ceci permet au MPM d'&eacute;viter un verrouillage de haut niveau excessif,
79     ou de devoir activer le thread en &eacute;coute afin de lui envoyer un
80     socket keep alive. Tout ceci n'est actuellement compatible qu'avec
81     KQueue et EPoll.</p>
82
83 </section>
84 <section id="requirements"><title>Pr&eacute;requis</title>
85     <p>Ce MPM d&eacute;pend des op&eacute;rations atomiques compare-and-swap
86     d'<glossary>APR</glossary> pour la synchronisation des threads. Si
87     vous compilez pour une plate-forme x86 et n'avez pas besoin du
88     support 386, ou si vous compilez pour une plate-forme SPARC et
89     n'avez pas besoin du support pre-UltraSPARC, ajoutez
90     <code>--enable-nonportable-atomics=yes</code> aux arguments du
91     script <program>configure</program>. Ceci permettra &agrave; APR
92     d'impl&eacute;menter les op&eacute;rations atomiques en utilisant des instructions
93     performantes indisponibles avec les processeurs plus
94     anciens.</p>
95
96     <p>Ce MPM ne fonctionne pas de mani&egrave;re optimale sur les
97     plates-formes plus anciennes qui ne g&egrave;rent pas correctement les
98     threads, mais ce probl&egrave;me est sans objet du fait du pr&eacute;requis
99     concernant EPoll ou KQueue.</p>
100
101     <ul>
102
103       <li>Pour utiliser ce MPM sous FreeBSD, la version 5.3 ou
104       sup&eacute;rieure de ce syst&egrave;me est recommand&eacute;e. Il est cependant
105       possible d'ex&eacute;cuter ce MPM sous FreeBSD 5.2.1 si vous utilisez
106       <code>libkse</code> (voir <code>man libmap.conf</code>).</li>
107
108       <li>Pour NetBSD, il est recommander d'utiliser la version 2.0 ou
109       sup&eacute;rieure.</li>
110
111       <li>Pour Linux, un noyau 2.6 est recommand&eacute;. Il faut aussi
112       s'assurer que votre version de <code>glibc</code> a &eacute;t&eacute; compil&eacute;e
113       avec le support pour EPoll.</li>
114
115     </ul>
116 </section>
117
118 <directivesynopsis location="mpm_common"><name>CoreDumpDirectory</name>
119 </directivesynopsis>
120 <directivesynopsis location="mpm_common"><name>EnableExceptionHook</name>
121 </directivesynopsis>
122 <directivesynopsis location="mod_unixd"><name>Group</name>
123 </directivesynopsis>
124 <directivesynopsis location="mpm_common"><name>Listen</name>
125 </directivesynopsis>
126 <directivesynopsis location="mpm_common"><name>ListenBacklog</name>
127 </directivesynopsis>
128 <directivesynopsis location="mpm_common"><name>SendBufferSize</name>
129 </directivesynopsis>
130 <directivesynopsis location="mpm_common"><name>MaxRequestWorkers</name>
131 </directivesynopsis>
132 <directivesynopsis location="mpm_common"><name>MaxMemFree</name>
133 </directivesynopsis>
134 <directivesynopsis location="mpm_common"><name>MaxConnectionsPerChild</name>
135 </directivesynopsis>
136 <directivesynopsis location="mpm_common"><name>MaxSpareThreads</name>
137 </directivesynopsis>
138 <directivesynopsis location="mpm_common"><name>MinSpareThreads</name>
139 </directivesynopsis>
140 <directivesynopsis location="mpm_common"><name>PidFile</name>
141 </directivesynopsis>
142 <directivesynopsis location="mpm_common"><name>ScoreBoardFile</name>
143 </directivesynopsis>
144 <directivesynopsis location="mpm_common"><name>ServerLimit</name>
145 </directivesynopsis>
146 <directivesynopsis location="mpm_common"><name>StartServers</name>
147 </directivesynopsis>
148 <directivesynopsis location="mpm_common"><name>ThreadLimit</name>
149 </directivesynopsis>
150 <directivesynopsis location="mpm_common"><name>ThreadsPerChild</name>
151 </directivesynopsis>
152 <directivesynopsis location="mpm_common"><name>ThreadStackSize</name>
153 </directivesynopsis>
154 <directivesynopsis location="mod_unixd"><name>User</name>
155 </directivesynopsis>
156
157 <directivesynopsis>
158 <name>AsyncRequestWorkerFactor</name>
159 <description>Limite le nombre de connexions simultan&eacute;es par thread</description>
160 <syntax>AsyncRequestWorkerFactor <var>facteur</var></syntax>
161 <default>2</default>
162 <contextlist><context>server config</context> </contextlist>
163 <compatibility>Disponible depuis la version 2.3.13</compatibility>
164
165 <usage>
166     <p>Le MPM event g&egrave;re certaines connexions de mani&egrave;re asynchrone ;
167     dans ce cas, les threads traitant la requ&ecirc;te sont allou&eacute;s selon les
168     besoins et pour de courtes p&eacute;riodes. Dans les autres cas (la plupart
169     du temps pour les connexions SSL), un thread est r&eacute;serv&eacute; par
170     connexion. Ceci peut conduire &agrave; des situations o&ugrave; tous les threads
171     sont satur&eacute;s et o&ugrave; aucun thread n'est capable d'effectuer de
172     nouvelles t&acirc;ches pour les connexions asynchrones &eacute;tablies.</p>
173
174     <p>Pour minimiser les effets de ce probl&egrave;me, le MPM event utilise
175     deux m&eacute;thodes : tout d'abord, il limite le nombre de connexions
176     simultan&eacute;es par thread en fonction du nombre de processus
177     inactifs. Ensuite, si tous les processus sont occup&eacute;s, il ferme des
178     connexions permanentes, m&ecirc;me si la limite de dur&eacute;e de la connexion
179     n'a pas &eacute;t&eacute; atteinte. Ceci autorise les clients concern&eacute;s &agrave; se
180     reconnecter &agrave; un autre processus poss&egrave;dant encore des threads
181     disponibles.</p>
182
183     <p>Cette directive permet de personnaliser finement la limite du
184     nombre de connexions par thread. Un processus n'acceptera de
185     nouvelles connexions que si le nombre actuel de connexions est
186     inf&eacute;rieur &agrave; :</p>
187
188     <p class="indent"><strong>
189         <directive module="mpm_common">ThreadsPerChild</directive> +
190         (<directive>AsyncRequestWorkerFactor</directive> *
191         <var>nombre de threads inactifs</var>)
192     </strong></p>
193
194     <p>En d'autres termes, le nombre maximum de connexions simultan&eacute;es
195     sera :</p>
196
197     <p class="indent"><strong>
198         (<directive>AsyncRequestWorkerFactor</directive> + 1) *
199         <directive module="mpm_common">MaxRequestWorkers</directive>
200     </strong></p>
201
202     <p>La directive <directive
203     module="mpm_common">MaxRequestWorkers</directive> se nommait
204     <directive>MaxClients</directive> avant la version 2.3.13. La valeur
205     ci-dessus montre que cet ancien nom ne correspondait pas &agrave; sa
206     signification exacte pour le MPM event.</p>
207
208     <p>La directive <directive>AsyncRequestWorkerFactor</directive>
209     accepte des valeurs d'argument de type non entier, comme "1.5".</p>
210
211 </usage>
212
213 </directivesynopsis>
214
215 </modulesynopsis>