]> granicus.if.org Git - apache/commitdiff
Rebuild.
authorLucien Gentis <lgentis@apache.org>
Sat, 27 Feb 2016 17:49:48 +0000 (17:49 +0000)
committerLucien Gentis <lgentis@apache.org>
Sat, 27 Feb 2016 17:49:48 +0000 (17:49 +0000)
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1732659 13f79535-47bb-0310-9956-ffa450edef68

30 files changed:
docs/manual/howto/index.html.fr
docs/manual/howto/index.xml.fr
docs/manual/howto/index.xml.ja
docs/manual/howto/index.xml.ko
docs/manual/howto/index.xml.meta
docs/manual/howto/index.xml.zh-cn
docs/manual/index.html.fr
docs/manual/index.xml.da
docs/manual/index.xml.de
docs/manual/index.xml.es
docs/manual/index.xml.fr
docs/manual/index.xml.ja
docs/manual/index.xml.ko
docs/manual/index.xml.meta
docs/manual/index.xml.pt-br
docs/manual/index.xml.tr
docs/manual/index.xml.zh-cn
docs/manual/mod/event.html.fr
docs/manual/mod/event.xml.meta
docs/manual/sections.html.fr
docs/manual/sections.xml.meta
docs/manual/sitemap.html.fr
docs/manual/sitemap.xml.de
docs/manual/sitemap.xml.es
docs/manual/sitemap.xml.fr
docs/manual/sitemap.xml.ja
docs/manual/sitemap.xml.ko
docs/manual/sitemap.xml.meta
docs/manual/sitemap.xml.tr
docs/manual/sitemap.xml.zh-cn

index 07ccfc868e21c53514967fef75728b7f4e3128c3..13ac61ed3521490124b496579542ec4c16a9013e 100644 (file)
@@ -29,6 +29,8 @@
 <a href="../ko/howto/" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
 <a href="../zh-cn/howto/" hreflang="zh-cn" rel="alternate" title="Simplified Chinese">&nbsp;zh-cn&nbsp;</a></p>
 </div>
+<div class="outofdate">Cette traduction peut être périmée. Vérifiez la version
+            anglaise pour les changements récents.</div>
 </div>
 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
 <div class="section">
index fbd9f0cbe22c3f5fc71d8a094c443fd7f1f5bd33..ad9126d2d6a4b5e467441b95278673e0be0ffa48 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="ISO-8859-1" ?>
 <!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd">
 <?xml-stylesheet type="text/xsl" href="../style/manual.en.xsl"?>
-<!-- English Revision : 1597081 -->
+<!-- English Revision: 1597081:1732097 (outdated) -->
 <!-- French translation : Lucien GENTIS -->
 <!-- Reviewed by : Vincent Deffontaines -->
 
index 94e877349cef36de6261dd6dcedfad24900e5d06..db7d85a2d42cdefa2728bb688ed867715c1c53c6 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd">
 <?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?>
-<!-- English Revision: 1597081 -->
+<!-- English Revision: 1597081:1732097 (outdated) -->
 
 <!--
  Licensed to the Apache Software Foundation (ASF) under one or more
index 96b0e0d424d09ce3781994151a5d5e0011cc2c05..93344e1c82ab98faa29bb69a8a3cb037a374850c 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="EUC-KR" ?>
 <!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd">
 <?xml-stylesheet type="text/xsl" href="../style/manual.ko.xsl"?>
-<!-- English Revision: 151408:1597081 (outdated) -->
+<!-- English Revision: 151408:1732097 (outdated) -->
 
 <!--
  Licensed to the Apache Software Foundation (ASF) under one or more
index 355fdecee5494bbbcc724245040c40293543a62d..0e683ff37620461b4e3cffc0d38741b9e9740764 100644 (file)
@@ -8,8 +8,8 @@
 
   <variants>
     <variant>en</variant>
-    <variant>fr</variant>
-    <variant>ja</variant>
+    <variant outdated="yes">fr</variant>
+    <variant outdated="yes">ja</variant>
     <variant outdated="yes">ko</variant>
     <variant outdated="yes">zh-cn</variant>
   </variants>
index 2fe8c68ec34bf7821ede37871cb2bfcb5091b819..ad8dba4a18fc28c2bb0e6a9a3a79704569744b70 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd">
 <?xml-stylesheet type="text/xsl" href="../style/manual.zh-cn.xsl"?>
-<!-- English Revision: 420990:1597081 (outdated) -->
+<!-- English Revision: 420990:1732097 (outdated) -->
 
 <!--
  Licensed to the Apache Software Foundation (ASF) under one or more
index d5be459944384b71cbc25e81ebfa9e179ef25f2f..fcb6c0a834ef2c8541bbd6f4545679cf229408e2 100644 (file)
@@ -38,6 +38,8 @@
 <a href="./tr/" hreflang="tr" rel="alternate" title="Türkçe">&nbsp;tr&nbsp;</a> |
 <a href="./zh-cn/" hreflang="zh-cn" rel="alternate" title="Simplified Chinese">&nbsp;zh-cn&nbsp;</a></p>
 </div>
+<div class="outofdate">Cette traduction peut être périmée. Vérifiez la version
+            anglaise pour les changements récents.</div>
 <form method="get" action="http://www.google.com/search"><p><input name="as_q" value="" type="text" /> <input value="Recherche Google" type="submit" /><input value="10" name="num" type="hidden" /><input value="fr" name="hl" type="hidden" /><input value="ISO-8859-1" name="ie" type="hidden" /><input value="Google Search" name="btnG" type="hidden" /><input name="as_epq" value="Version 2.4" type="hidden" /><input name="as_oq" value="" type="hidden" /><input name="as_eq" value="&quot;List-Post&quot;" type="hidden" /><input value="" name="lr" type="hidden" /><input value="i" name="as_ft" type="hidden" /><input value="" name="as_filetype" type="hidden" /><input value="all" name="as_qdr" type="hidden" /><input value="any" name="as_occt" type="hidden" /><input value="i" name="as_dt" type="hidden" /><input value="httpd.apache.org" name="as_sitesearch" type="hidden" /><input value="off" name="safe" type="hidden" /></p></form>
 <table id="indextable"><tr><td class="col1"><div class="category"><h2><a name="release" id="release">Notes de version</a></h2>
 <ul><li><a href="new_features_2_4.html">Nouvelles fonctionnalités dApache 2.3/2.4</a></li>
index 721a0ecbc0560e81169fb42853fe509e569d66ef..16b832c0ae038b3acbc55eb3b90abf71406f9bf1 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE indexpage SYSTEM "./style/sitemap.dtd">
 <?xml-stylesheet type="text/xsl" href="./style/manual.en.xsl"?>
-<!-- English Revision: 1220529:1524238 (outdated) -->
+<!-- English Revision: 1220529:1732097 (outdated) -->
 
 <!--
  Licensed to the Apache Software Foundation (ASF) under one or more
index c03f9f057f9f47c33be4ca1292f4a3a4556b5612..1a34f679a3c93a9ea6f0f0cd232c5c2aa555ac67 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE indexpage SYSTEM "./style/sitemap.dtd">
 <?xml-stylesheet type="text/xsl" href="./style/manual.de.xsl"?>
-<!-- English Revision: 1524238 -->
+<!-- English Revision: 1524238:1732097 (outdated) -->
 
 <!--
  Licensed to the Apache Software Foundation (ASF) under one or more
index 05e86ac04ed041a4f1b21cb3cd2c933d0452809a..9be80d6ac90dad8372970a96e295bc01ff991f28 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE indexpage SYSTEM "./style/sitemap.dtd">
 <?xml-stylesheet type="text/xsl" href="./style/manual.es.xsl"?>
-<!-- English Revision: 105989:1524238 (outdated) -->
+<!-- English Revision: 105989:1732097 (outdated) -->
 
 <!--
  Licensed to the Apache Software Foundation (ASF) under one or more
index 7a158d102f8dbdb5f74ba0620a20ae4cf02992b1..b2a2b01ed795e1718167a3cf03d85d62726df7aa 100644 (file)
@@ -3,7 +3,7 @@
 <?xml-stylesheet type="text/xsl" href="./style/manual.fr.xsl"?>
 <!-- French translation : Lucien GENTIS -->
 <!-- Reviewed by : Vincent Deffontaines -->
-<!-- English Revision : 1524238 -->
+<!-- English Revision: 1524238:1732097 (outdated) -->
 
 <!--
  Licensed to the Apache Software Foundation (ASF) under one or more
index b91fb96204d93535bca89481b763652e8c800c02..63858c93327443faa5e12f1cbba96b75777a3f09 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE indexpage SYSTEM "./style/sitemap.dtd">
 <?xml-stylesheet type="text/xsl" href="./style/manual.ja.xsl"?>
-<!-- English Revision: 1524238 -->
+<!-- English Revision: 1524238:1732097 (outdated) -->
 
 <!--
  Licensed to the Apache Software Foundation (ASF) under one or more
index b68322932dbee2ca6cff0156d62c3deb99dd48e5..fb4198c52c269f71afc16d6fe30a29b0f50641ee 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="EUC-KR" ?>
 <!DOCTYPE indexpage SYSTEM "./style/sitemap.dtd">
 <?xml-stylesheet type="text/xsl" href="./style/manual.ko.xsl"?>
-<!-- English Revision: 105989:1524238 (outdated) -->
+<!-- English Revision: 105989:1732097 (outdated) -->
 
 <!--
  Licensed to the Apache Software Foundation (ASF) under one or more
index d49b89d8a08b3cb5c8773d3f772ce8d9aa8d26a5..b95c36601f7843865877d6bd37ff8274ff33699b 100644 (file)
@@ -8,14 +8,14 @@
 
   <variants>
     <variant outdated="yes">da</variant>
-    <variant>de</variant>
+    <variant outdated="yes">de</variant>
     <variant>en</variant>
     <variant outdated="yes">es</variant>
-    <variant>fr</variant>
-    <variant>ja</variant>
+    <variant outdated="yes">fr</variant>
+    <variant outdated="yes">ja</variant>
     <variant outdated="yes">ko</variant>
     <variant outdated="yes">pt-br</variant>
-    <variant>tr</variant>
+    <variant outdated="yes">tr</variant>
     <variant outdated="yes">zh-cn</variant>
   </variants>
 </metafile>
index dd6c155a29296c9228fb6ccbf5680c9fd54f94cc..f6de3df15ccfd82ce07a21a88b5f703cbb9c3715 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE indexpage SYSTEM "./style/sitemap.dtd">
 <?xml-stylesheet type="text/xsl" href="./style/manual.pt-br.xsl"?>
-<!-- English Revision: 420993:1524238 (outdated) -->
+<!-- English Revision: 420993:1732097 (outdated) -->
 
 <!--
  Licensed to the Apache Software Foundation (ASF) under one or more
index 497d4d9e17f84f3c8ef5256cd9533c0e4be20322..5a875ab58d534267a92139ae5f9f3c5fa97bd9e9 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE indexpage SYSTEM "./style/sitemap.dtd">
 <?xml-stylesheet type="text/xsl" href="./style/manual.tr.xsl"?>
-<!-- English Revision: 1524238 -->
+<!-- English Revision: 1524238:1732097 (outdated) -->
 <!-- =====================================================
  Translated by: Nilgün Belma Bugüner <nilgun belgeler.gen.tr>
    Reviewed by: Orhan Berent <berent belgeler.gen.tr>
index 312215563cc69cc53e90efe1e617a6ef7150562e..7d4373d0245110ec8c24f42e5379dbd187eb3567 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE indexpage SYSTEM "./style/sitemap.dtd">
 <?xml-stylesheet type="text/xsl" href="./style/manual.zh-cn.xsl"?>
-<!-- English Revision: 1050960:1524238 (outdated) -->
+<!-- English Revision: 1050960:1732097 (outdated) -->
 
 <!--
  Licensed to the Apache Software Foundation (ASF) under one or more
index 701cc0345d59856ec36c2237cda2b30dd7c4e682..71a9c90993c160d27bb7a8073599530aeab2df61 100644 (file)
@@ -29,8 +29,6 @@
 <p><span>Langues Disponibles: </span><a href="../en/mod/event.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
 <a href="../fr/mod/event.html" title="Français">&nbsp;fr&nbsp;</a></p>
 </div>
-<div class="outofdate">Cette traduction peut être périmée. Vérifiez la version
-            anglaise pour les changements récents.</div>
 <table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Une variante du MPM <code class="module"><a href="../mod/worker.html">worker</a></code> conçue pour ne
 mobiliser des threads que pour les connexions en cours de traitement</td></tr>
 <tr><th><a href="module-dict.html#Status">Statut:</a></th><td>MPM</td></tr>
@@ -40,13 +38,9 @@ mobiliser des threads que pour les connexions en cours de traitement</td></tr>
 
     <p>Le module multi-processus (MPM) <code class="module"><a href="../mod/event.html">event</a></code> est conçu
     pour permettre le traitement d'un nombre accru de requêtes
-    simultanées en déléguant certaines tâches à des threads de support,
-    libérant par là-même le thread principal et lui permettant de
-    traiter les nouvelles requêtes. Il s'inspire du MPM
-    <code class="module"><a href="../mod/worker.html">worker</a></code> qui implémente un serveur hybride
-    multi-processus/multi-threads. Les directives de configuration à
-    l'exécution sont identiques à celles du MPM
-    <code class="module"><a href="../mod/worker.html">worker</a></code>.</p>
+    simultanées en déléguant certaines tâches
+    aux threads d'écoute, libérant par là-même les
+    threads de travail et leur permettant de traiter les nouvelles requêtes.</p>
 
     <p>Pour utiliser le MPM <code class="module"><a href="../mod/event.html">event</a></code>, ajoutez
     <code>--with-mpm=event</code> aux arguments du script
@@ -56,6 +50,7 @@ mobiliser des threads que pour les connexions en cours de traitement</td></tr>
 </div>
 <div id="quickview"><h3>Sujets</h3>
 <ul id="topics">
+<li><img alt="" src="../images/down.gif" /> <a href="#event-worker-relationship">Relations avec le MPM Worker</a></li>
 <li><img alt="" src="../images/down.gif" /> <a href="#how-it-works">Comment tout cela fonctionne</a></li>
 <li><img alt="" src="../images/down.gif" /> <a href="#requirements">Prérequis</a></li>
 </ul><h3 class="directives">Directives</h3>
@@ -87,48 +82,157 @@ mobiliser des threads que pour les connexions en cours de traitement</td></tr>
 </ul><ul class="seealso"><li><a href="#comments_section">Commentaires</a></li></ul></div>
 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
 <div class="section">
+<h2><a name="event-worker-relationship" id="event-worker-relationship">Relations avec le MPM Worker</a></h2>
+<p>Le MPM <code class="module"><a href="../mod/event.html">event</a></code> s'inspire du MPM <code class="module"><a href="../mod/worker.html">worker</a></code> qui
+implémente un serveur hybride multi-processus et multi-threads. Un processus de
+contrôle unique (le parent) est chargé de lancer des processus enfants. Chaque
+processus enfant crée un nombre de threads serveurs défini via la directive
+<code class="directive"><a href="../mod/mpm_common.html#threadsperchild">ThreadsPerChild</a></code>, ainsi qu'un thread
+d'écoute qui surveille les requêtes entrantes et les distribue aux threads de
+travail pour traitement au fur et à mesure de leur arrivée.</p>
+
+<p>Les directives de configuration à l'exécution sont identiques à celles que
+propose le MPM <code class="module"><a href="../mod/worker.html">worker</a></code>, avec l'unique addition de la directive
+<code class="directive">AsyncRequestWorkerFactor</code>.</p>
+
+</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
 <h2><a name="how-it-works" id="how-it-works">Comment tout cela fonctionne</a></h2>
-    <p>Ce MPM essaie de résoudre le 'problème keep alive' de HTTP.
-    Lorsqu'un client a soumis une première requête, il peut garder la
-    connexion ouverte, et envoyer les requêtes suivantes en utilisant le
-    même socket. Ceci permet de réduire de manière significative la
-    surcharge due à la création de connexions TCP.
-    Cependant, le serveur HTTP Apache
-    mobilise en principe à cet effet un processus/thread enfant en
-    attente des données du client, ce qui amène son propre lot
-    d'inconvénients. Pour résoudre ce problème, <code class="module"><a href="../mod/event.html">event</a></code>
-    utilise un thread dédié qui gère les sockets en
-    écoute, tous les sockets en état Keep Alive, et les
-    sockets où les filtres gestionnaires et de protocole ont
-    fait leur travail et pour lesquels la seule chose restant à faire
-    consiste à envoyer les données au client. La page d'état de
-    <code class="module"><a href="../mod/mod_status.html">mod_status</a></code> montre les connexions qui se trouvent
-    dans les situations mentionnées.</p>
-
-    <p>Le gestionnaire de connexion amélioré peut ne pas
-    fonctionner pour les filtres de connexion qui se déclarent eux-mêmes
-    comme incompatibles avec le MPM event. Dans ce cas, le MPM event
-    adopte le comportement du MPM <code class="module"><a href="../mod/worker.html">worker</a></code> et
-    réserve un thread par connexion. Tous les modules fournis
-    avec le serveur sont compatibles avec le MPM event.</p>
-
-    <p>Une restriction similaire existe pour les requêtes qui utilisent
-    un filtre en sortie qui doit lire et/ou modifier l'ensemble du corps
-    de réponse, comme dans le cas de mod_ssl, mod_deflate, ou
-    mod_include. Si la connexion avec le client se bloque pendant que le
-    filtre traite les données, et si la quantité de données générée par
-    ce filtre est trop importante pour être mise en tampon mémoire, le
-    thread utilisé pour la requête n'est pas libéré pendant que httpd
-    attend que toutes les données restantes aient été transmises au
-    client.</p>
-
-    <p>Le MPM présuppose que l'implémentation <code>apr_pollset</code>
-    sous-jacente est raisonnablement sûre du point de vue des threads.
-    Ceci permet au MPM d'éviter un verrouillage de haut niveau excessif,
-    ou de devoir activer le thread en écoute afin de lui envoyer un
-    socket keep alive. Tout ceci n'est actuellement compatible qu'avec
-    KQueue et EPoll.</p>
+    
+    <p>Ce module MPM tente de résoudre le "problème keep
+    alive" de HTTP. Lorsqu'un client a effectué une première requête, il peut
+    garder la connexion ouverte et envoyer les requêtes suivante en utilisant le
+    même socket, ce qui diminue considérablement la charge qui aurait été
+    induite par la création de nouvelles connexions TCP. Cependant, le
+    fonctionnement du serveur HTTP Apache impose de réserver un couple processus
+    enfant/thread pour attendre les données en provenance du client, ce qui
+    présente certains inconvénients.     
+    Pour résoudre ce problème, le MPM Event utilise un thread d'écoute dédié
+    pour chaque processus pour gérer les sockets d'écoute, tous les sockets qui
+    sont dans un état de connexion persistante, les sockets où les
+    filtres de gestionnaire et de protocole ont fait leur travail, et ceux pour
+    lesquels la seule chose restant à faire est l'envoi des données au client.
+    </p>
+
+    <p>La directive <code class="directive">AsyncRequestWorkerFactor</code> permet de
+    définir le nombre total de connexions qu'un bloc processus/thread peut
+    gérer.</p>
+
+    <h3><a name="async-connections" id="async-connections">Connexions asynchrones</a></h3>
+        <p>Avec les MPM précédents, les connexions asynchrones nécessitaient
+       un thread de travail dédié, mais ce n'est plus le cas avec le MPM Event.
+       La page d'état de <code class="module"><a href="../mod/mod_status.html">mod_status</a></code> montre de nouvelles
+       colonnes dans la section "Async connections" :</p>
+        <dl>
+            <dt>Writing</dt>
+            <dd>Lors de l'envoi de la réponse au client, il peut arriver que le
+           tampon d'écriture TCP soit plein si la connexion est trop lente. Si
+           cela se produit, une instruction <code>write()</code> vers le socket
+           renvoie en général <code>EWOULDBLOCK</code> ou <code>EAGAIN</code>
+           pour que l'on puisse y écrire à nouveau après un certain temps
+           d'inactivité. Le thread de travail qui utilise le socket doit alors
+           être en mesure de récupérer la tâche en attente et la restituer au
+           thread d'écoute qui, à son tour, la réattribuera au premier thread
+           de travail disponible, lorsqu'un évènement sera généré pour le socket
+           (par exemple, "il est maintenant possible d'écrire dans le socket").
+           Veuillez vous reporter à la section à propos des limitations pour
+           plus de détails.
+            </dd>
+
+            <dt>Keep-alive</dt>
+            <dd>La gestion des connexions persistantes constitue la principale
+           amélioration par rapport au MPM Worker. Lorsqu'un thread de travail
+           a terminé l'envoi d'une réponse à un client, il peut restituer la
+           gestion du socket au thread d'écoute, qui à son tour va attendre un
+           évènement en provenance du système d'exploitation comme "le socket
+           est lisible". Si une nouvelle requête arrive en provenance du
+           client, le thread d'écoute l'attribuera au premier thread de travail
+           disponible. Inversement, si le délai <code class="directive"><a href="../mod/core.html#keepalivetimeout">KeepAliveTimeout</a></code> est atteint, le socket
+           sera fermé par le thread d'écoute. Les threads de travail n'ont
+           donc plus à s'occuper des sockets inactifs et ils peuvent être
+           réutilisés pour traiter d'autres requêtes.</dd>
+
+            <dt>Closing</dt>
+            <dd>Parfois, le MPM doit effectuer une fermeture progressive, c'est
+           à dire envoyer au client une erreur survenue précédemment alors que
+           ce dernier est en train de transmettre des données à httpd. Envoyer la réponse et
+           fermer immédiatement la connexion n'est pas une bonne solution car
+           le client (qui est encore en train d'envoyer le reste de la requête)
+           verrait sa connexion réinitialisée et ne pourrait pas lire la
+           réponse de httpd. Si cela se produit, httpd essaie donc de lire le
+           reste de la requête afin de permettre au client de lire la réponse
+           entièrement. La fermeture progressive est limitée dans le temps,
+           mais elle peut tout de même être assez longue, si bien qu'il est
+           intéressant qu'un thread de travail puisse se décharger de cette
+           tâche sur le thread d'écoute.</dd>
+        </dl>
+
+        <p>Ces améliorations sont disponible pour les connexions HTTP ou HTTPS.</p> 
 
+    
+
+    <h3><a name="limitations" id="limitations">Limitations</a></h3>
+        <p>La gestion améliorée des connexions peut ne pas fonctionner pour
+       certains filtres de connexion qui se sont déclarés eux-mêmes
+       incompatibles avec le MPM Event. Dans ce cas, le MPM Event réadoptera le
+       comportement du MPM <code class="module"><a href="../mod/worker.html">worker</a></code> et réservera un thread de
+       travail par connexion. Notez que tous les modules inclus dans la
+       distribution du serveur httpd sont compatibles avec le MPM Event.</p>
+
+        <p>Une restriction similaire apparaît lorsqu'une requête utilise un
+       filtre en sortie qui doit pouvoir lire et/ou modifier la totalité du
+       corps de la réponse. Si la connexion avec le client se bloque pendant
+       que le filtre traite les données, et si la quantité de données produites
+       par le filtre est trop importante pour être stockée en mémoire, le
+       thread utilisé pour la requête n'est pas libéré pendant que httpd attend
+       que les données soient transmises au client.<br /> 
+        Pour illustrer ce cas de figure, nous pouvons envisager les deux
+       situations suivantes : servir une ressource statique (comme un fichier
+       CSS) ou servir un contenu issu d'un programme FCGI/CGI ou d'un serveur
+       mandaté. La première situation est prévisible ; en effet, le MPM Event a
+       une parfaite visibilité sur la fin du contenu, et il peut utiliser les
+       évènements : le thread de travail qui sert la réponse peut envoyer les
+       premiers octets jusqu'à ce que <code>EWOULDBLOCK</code> ou
+       <code>EAGAIN</code> soit renvoyé, et déléguer le reste de la réponse au thread
+       d'écoute. Ce dernier en retour attend un évènement sur le socket, et
+       délègue le reste de la réponse au premier
+       thread de travail disponible. Dans la deuxième situation par contre
+       (FCGI/CGI/contenu mandaté), le MPM n'a pas de visibilité sur la fin de
+       la réponse, et le thread de travail doit terminer sa tâche avant de
+       rendre le contrôle au thread d'écoute. La seule solution consisterait
+       alors à stocker la réponse en mémoire, mais ce ne serait pas l'option la
+       plus sure en matière de stabilité du serveur et d'empreinte mémoire.
+        </p>
+
+    
+
+    <h3><a name="background" id="background">Matériel d'arrière-plan</a></h3>
+        <p>Le modèle event a été rendu possible par l'introduction de nouvelles
+       APIs dans les systèmes d'exploitation supportés :</p>
+        <ul>
+            <li>epoll (Linux) </li>
+            <li>kqueue (BSD) </li>
+            <li>event ports (Solaris) </li>
+        </ul>
+        <p>Avant que ces APIs soient mises à disposition, les APIs
+       traditionnelles <code>select</code> et <code>poll</code> devaient être
+       utilisées. Ces APIs deviennent lentes si on les utilise pour gérer de
+       nombreuses connexions ou si le jeu de connexions possède un taux de
+       renouvellement élevé. Les nouvelles APIs permettent de gérer beaucoup
+       plus de connexions et leur performances sont meilleures lorsque le jeu
+       de connexions à gérer change fréquemment. Ces APIs ont donc rendu
+       possible l'écriture le MPM Event qui est mieux adapté à la situation
+       HTTP typique où de nombreuses connexions sont inactives.</p>
+
+        <p>Le MPM Event suppose que l'implémentation de <code>apr_pollset</code>
+       sous-jacente est raisonnablement sure avec l'utilisation des threads
+       (threadsafe). Ceci évite au MPM de devoir effectuer trop verrouillages
+       de haut niveau, ou d'avoir à réveiller le thread d'écoute pour lui
+       envoyer un socket keep-alive. Ceci n'est possible qu'avec KQueue et
+       EPoll.</p>
+
+    
+        
 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
 <div class="section">
 <h2><a name="requirements" id="requirements">Prérequis</a></h2>
@@ -184,16 +288,20 @@ mobiliser des threads que pour les connexions en cours de traitement</td></tr>
     nouvelles tâches pour les connexions asynchrones établies.</p>
 
     <p>Pour minimiser les effets de ce problème, le MPM event utilise
-    deux méthodes : tout d'abord, il limite le nombre de connexions
-    simultanées par thread en fonction du nombre de processus
-    inactifs. Ensuite, si tous les processus sont occupés, il ferme des
-    connexions permanentes, même si la limite de durée de la connexion
-    n'a pas été atteinte. Ceci autorise les clients concernés à se
-    reconnecter à un autre processus possèdant encore des threads
-    disponibles.</p>
+    deux méthodes :</p>
+    <ul>
+       <li>il limite le nombre de connexions
+           simultanées par thread en fonction du nombre de processus
+           inactifs;</li>
+       <li>si tous les processus sont occupés, il ferme des connexions
+       permanentes, même si la limite de durée de la connexion n'a
+       pas été atteinte. Ceci autorise les clients
+       concernés à se reconnecter à un autre processus
+       possèdant encore des threads disponibles.</li>
+    </ul>
 
     <p>Cette directive permet de personnaliser finement la limite du
-    nombre de connexions par thread. Un processus n'acceptera de
+    nombre de connexions par thread. Un <strong>processus</strong> n'acceptera de
     nouvelles connexions que si le nombre actuel de connexions (sans
     compter les connexions à l'état "closing") est
     inférieur à :</p>
@@ -204,14 +312,70 @@ mobiliser des threads que pour les connexions en cours de traitement</td></tr>
         <var>nombre de threads inactifs</var>)
     </strong></p>
 
-    <p>En d'autres termes, le nombre maximum de connexions simultanées
-    sera :</p>
+    <p>Il est possible d'effectuer une estimation du nombre maximum de
+    connexions simultanées pour tous les processus et pour un nombre donné moyen
+    de threads de travail inactifs comme suit :
+    </p>
+
+
+    <p class="indent"><strong>
+        (<code class="directive"><a href="../mod/mpm_common.html#threadsperchild">ThreadsPerChild</a></code> +
+        (<code class="directive">AsyncRequestWorkerFactor</code> *
+        <var>number of idle workers</var>)) * 
+        <code class="directive"><a href="../mod/mpm_common.html#serverlimit">ServerLimit</a></code>
+    </strong></p>
+
+    <div class="note"><h3>Exemple</h3>
+    <pre class="prettyprint lang-config">ThreadsPerChild = 10
+ServerLimit = 4
+AsyncRequestWorkerFactor = 2
+MaxRequestWorkers = 40
+
+idle_workers = 4 (moyenne pour tous les processus pour faire simple)
+
+max_connections = (ThreadsPerChild + (AsyncRequestWorkerFactor * idle_workers)) * ServerLimit 
+                = (10 + (2 * 4)) * 4 = 72</pre>
+
+    </div>
+
+    <p>Lorsque tous les threads de travail sont inactifs, le nombre maximum
+    absolu de connexions simultanées peut être calculé de manière plus simple :</p>
 
     <p class="indent"><strong>
         (<code class="directive">AsyncRequestWorkerFactor</code> + 1) *
         <code class="directive"><a href="../mod/mpm_common.html#maxrequestworkers">MaxRequestWorkers</a></code>
     </strong></p>
 
+    <div class="note"><h3>Exemple</h3>
+    <pre class="prettyprint lang-config">ThreadsPerChild = 10 
+ServerLimit = 4
+MaxRequestWorkers = 40
+AsyncRequestWorkerFactor = 2</pre>
+
+
+    <p>Si tous les threads de tous les processus sont inactifs, alors :</p>
+
+    <pre class="prettyprint lang-config">idle_workers = 10</pre>
+
+
+    <p>Nous pouvons calculer le nombre maximum absolu de connexions simultanées
+    de deux manières :</p>
+    
+    <pre class="prettyprint lang-config">max_connections = (ThreadsPerChild + (AsyncRequestWorkerFactor * idle_workers)) * ServerLimit 
+                = (10 + (2 * 10)) * 4 = 120
+    
+max_connections = (AsyncRequestWorkerFactor + 1) * MaxRequestWorkers 
+                = (2 + 1) * 40 = 120</pre>
+
+    </div>
+
+    <p>Le réglage de la directive
+    <code class="directive">AsyncRequestWorkerFactor</code> nécessite de connaître le
+    trafic géré par httpd pour chaque style d'utilisation spécifique ; si vous
+    modifiez la valeur par défaut, vous devrez par conséquent effectuer des
+    tests approfondis en vous appuyant étroitement sur les données fournies par
+    <code class="module"><a href="../mod/mod_status.html">mod_status</a></code>.</p>
+
     <p>La directive <code class="directive"><a href="../mod/mpm_common.html#maxrequestworkers">MaxRequestWorkers</a></code> se nommait
     <code class="directive">MaxClients</code> avant la version 2.3.13. La valeur
     ci-dessus montre que cet ancien nom ne correspondait pas à sa
index 58ce5cc07348893d2e89c5fca873b9f46374756e..7b7fc287cfe378466fec409610a1806ae8480e4e 100644 (file)
@@ -8,6 +8,6 @@
 
   <variants>
     <variant>en</variant>
-    <variant outdated="yes">fr</variant>
+    <variant>fr</variant>
   </variants>
 </metafile>
index 0293f1249e80247469bc945e0d8486d058429ea2..017ad81fa23ed48f0157e9a42038f3ee530e1970 100644 (file)
@@ -29,8 +29,6 @@
 <a href="./ko/sections.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
 <a href="./tr/sections.html" hreflang="tr" rel="alternate" title="Türkçe">&nbsp;tr&nbsp;</a></p>
 </div>
-<div class="outofdate">Cette traduction peut être périmée. Vérifiez la version
-            anglaise pour les changements récents.</div>
  <p>Les directives des <a href="configuring.html">fichiers de configuration</a> peuvent s'appliquer
 au serveur dans son ensemble, ou seulement à des répertoires, fichiers, hôtes,
 ou URLs particuliers.  Ce document décrit comment utiliser les conteneurs de
@@ -402,12 +400,12 @@ et <code class="directive"><a href="./mod/mod_proxy.html#proxymatch">&lt;ProxyMa
 appliquent les directives de configuration qu'ils contiennent uniquement aux
 sites qui correspondent à l'URL spécifiée et auxquels on a
 accédé via le serveur mandataire du module <code class="module"><a href="./mod/mod_proxy.html">mod_proxy</a></code>.
-Par exemple, la configuration suivante
-va interdire l'utilisation du serveur proxy pour accéder au site
-<code>www.example.com</code>.</p>
+Par exemple, la configuration suivante n'autorisera qu'un sous-ensemble de
+clients à accéder au site <code>www.example.com</code> en passant par le serveur
+mandataire :.</p>
 
 <pre class="prettyprint lang-config">&lt;Proxy "http://www.example.com/*"&gt;
-    Require all granted
+    Require host yournetwork.example.com
 &lt;/Proxy&gt;</pre>
 
 </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
@@ -500,28 +498,90 @@ sont interpr
     <p>Quand la requête est servie par le module <code class="module"><a href="./mod/mod_proxy.html">mod_proxy</a></code>,
     le conteneur <code class="directive"><a href="./mod/mod_proxy.html#proxy">&lt;Proxy&gt;</a></code>
     prend la place du conteneur <code class="directive"><a href="./mod/core.html#directory">&lt;Directory&gt;</a></code> dans l'ordre de traitement.</p>
-
-    <p>Les sections situées plus loin dans le fichier de configuration prévalent
-    sur celles qui les précèdent ; cependant, chaque
-    module est responsable de la définition de la forme que doit prendre
-    cette prévalence. Une section de configuration ultérieure contenant
-    des directives d'un certain module peut être à l'origine d'une
-    fusion conceptuelle de certaines directives, de toutes les
-    directives, ou un remplacement complet de la configuration du module
-    par ses valeurs par défaut et les directives explicitement définies
-    dans cette section ultérieure.</p>
-
-<div class="note"><h3>Note technique</h3>
-       Une séquence
-       <code>&lt;Location&gt;</code>/<code>&lt;LocationMatch&gt;</code>
+    
+       <div class="note"><h3>Note technique</h3>
+       Une séquence <code>&lt;Location&gt;</code>/<code>&lt;LocationMatch&gt;</code>
        est réellement traitée juste avant la phase de traduction du nom
        (où <code>Aliases</code> et <code>DocumentRoots</code>
       sont utilisés pour faire correspondre les URLs aux noms de fichiers).
       Les effets de cette séquence disparaissent totalement lorsque
       la traduction est terminée.
-</div>
+       </div>
+
+<h3><a name="relationship-module-configuration" id="relationship-module-configuration">Interactions entre
+modules et sections de configuration</a></h3>
+    <p>Une question se pose souvent après avoir lu comment les sections de
+    configuration sont fusionnées : comment et quand les directives de modules
+    particuliers comme <code class="module"><a href="./mod/mod_rewrite.html">mod_rewrite</a></code> sont-elles interprétées ? La
+    réponse n'est pas triviale et nécessite un approfondissement. Chaque module
+    httpd gère sa propre configuration, et chacune de ses directives dans
+    httpd.conf définit un élément de configuration dans un contexte particulier.
+    httpd n'exécute pas un commande au moment où elle est lue.</p>
+    <p>A l'exécution, le noyau de httpd parcours les sections de configuration
+    dans l'ordre décrit ci-dessus afin de déterminer lesquelles s'appliquent à
+    la requête courante. Lorsqu'une première section s'applique, elle est
+    considérée comme la configuration courante pour cette requête. Si une
+    section suivante s'applique aussi, chaque module qui possède des directives
+    dans chacune de ces sections a la possibilité de fusionner sa configuration
+    entre ces deux sections. Il en résulte une troisième configuration et le
+    processus de fusion se poursuit jusqu'à ce que toutes les sections de
+    configuration aient été évaluées.</p>
+    <p>Après l'étape précédente, le traitement proprement dit de la requête HTTP
+    peut commencer : chaque module peut effectuer toute tâche qui lui incombe,
+    et pour déterminer de quelle manière dont il doit agir, il peut s'appuyer
+    sur le noyau de httpd pour retrouver sa configuration globale issue de la
+    fusion précédente.</p>
+    <p>Un exemple permet de mieux visualiser l'ensemble du processus. la
+    configuration suivante utilise la directive <code class="directive"><a href="./mod/mod_headers.html#header">Header</a></code> du module
+    <code class="module"><a href="./mod/mod_headers.html">mod_headers</a></code> pour définir un en-tête HTTP spécifique. Quelle
+    valeur httpd va-t-il affecter à l'en-tête <code>CustomHeaderName</code> pour
+    une requête vers <code>/example/index.html</code> ?
+    </p>
+    <pre class="prettyprint lang-config">&lt;Directory "/"&gt;
+    Header set CustomHeaderName one
+    &lt;FilesMatch ".*"&gt;
+        Header set CustomHeaderName three
+    &lt;/FilesMatch&gt;
+&lt;/Directory&gt;
 
-<h3><a name="merge-examples" id="merge-examples">Quelques exemples</a></h3>
+&lt;Directory "/example"&gt;
+    Header set CustomHeaderName two
+&lt;/Directory&gt;</pre>
+    
+    <ul>
+        <li><code class="directive">Directory</code> "/" s'applique, et une configuration
+       initiale est créée qui définit l'en-tête <code>CustomHeaderName</code>
+       avec la valeur <code>one</code>.</li>
+        <li><code class="directive">Directory</code> "/example" s'applique, et comme
+       <code class="module"><a href="./mod/mod_headers.html">mod_headers</a></code> spécifie dans son code que
+       la valeur d'un en-tête doit être écrasée si ce dernier est défini à
+       nouveau, une nouvelle configuration est créée qui définit l'en-tête
+       <code>CustomHeaderName</code> avec la valeur <code>two</code>.</li>
+        <li><code class="directive">FilesMatch</code> ".*" s'applique, une nouvelle
+       opportunité de fusion surgit, et l'en-tête <code>CustomHeaderName</code>
+       est défini à la valeur <code>three</code>.</li>
+        <li>Finalement, au cours des étapes suivantes du traitement de la
+       requête HTTP, <code class="module"><a href="./mod/mod_headers.html">mod_headers</a></code> sera sollicité, et il se
+       basera sur la configuration qui a défini l'en-tête
+       <code>CustomHeaderName</code> à la valeur <code>three</code>.
+       <code class="module"><a href="./mod/mod_headers.html">mod_headers</a></code> utilise normalement cette configuration pour
+       accomplir sa tâche, à savoir définir des en-têtes HTTP. Cela ne veut
+       cependant pas dire qu'un module ne peut pas effectuer des actions plus
+       complexes comme désactiver des directives car elle ne sont pas
+       nécessaires ou obsolètes, etc...</li>
+    </ul>
+
+    <p>Ceci est aussi vrai pour les fichiers .htaccess car ils possèdent la même
+    priorité que les sections <code class="directive">Directory</code> dans l'ordre de
+    fusion. Il faut bien comprendre que les sections de configuration comme
+    <code class="directive">Directory</code> et <code class="directive">FilesMatch</code> ne
+    sont pas comparables avec les directives spécifiques de modules comme
+    <code class="directive"><a href="./mod/mod_headers.html#header">Header</a></code> ou <code class="directive"><a href="./mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> car elles agissent à des
+    niveaux différents.
+    </p>
+       
+
+<h3><a name="merge-examples" id="merge-examples">Quelques exemples utiles</a></h3>
 
 <p>Voici un exemple imaginaire qui montre l'ordre de combinaison des sections.
 En supposant qu'elles s'appliquent toutes à la requête, les directives de
index 0e839c6dc7f5e0ad058d389e5dfc5a81da065571..f5ac84359d4cde9c66931417ec7a724cd3b7b9a6 100644 (file)
@@ -8,7 +8,7 @@
 
   <variants>
     <variant>en</variant>
-    <variant outdated="yes">fr</variant>
+    <variant>fr</variant>
     <variant outdated="yes">ja</variant>
     <variant outdated="yes">ko</variant>
     <variant outdated="yes">tr</variant>
index e642d996c6f76a7d827f37fd18b52c2602ee1446..f8a2b1ded45f692f83f6484c1f0e7311f7a1f2a4 100644 (file)
@@ -34,6 +34,8 @@
 <a href="./tr/sitemap.html" hreflang="tr" rel="alternate" title="Türkçe">&nbsp;tr&nbsp;</a> |
 <a href="./zh-cn/sitemap.html" hreflang="zh-cn" rel="alternate" title="Simplified Chinese">&nbsp;zh-cn&nbsp;</a></p>
 </div>
+<div class="outofdate">Cette traduction peut être périmée. Vérifiez la version
+            anglaise pour les changements récents.</div>
 
 <p>Cette page contient la liste des éléments actuellement disponibles de
 la <a href="./">Documentation du serveur HTTP Apache Version
index 3d3fd8b298583f21a0b226f788c482140aa4887e..24ce810fdf1e66e7f898ca35f92ba7fcb2fe46dd 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE sitemap SYSTEM "./style/sitemap.dtd">
 <?xml-stylesheet type="text/xsl" href="./style/manual.de.xsl"?>
-<!-- English Revision: 1564075 -->
+<!-- English Revision: 1564075:1732097 (outdated) -->
 
 <!--
  Licensed to the Apache Software Foundation (ASF) under one or more
index d3f64f49c397d9e86e44153ceb96403c16167f0c..c5b60a78a4cfbd3277d16a13cd29f33c420dfbca 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE sitemap SYSTEM "./style/sitemap.dtd">
 <?xml-stylesheet type="text/xsl" href="./style/manual.es.xsl"?>
-<!-- English Revision: 151408:1564075 (outdated) -->
+<!-- English Revision: 151408:1732097 (outdated) -->
 
 <!--
  Licensed to the Apache Software Foundation (ASF) under one or more
index 95986e9ea1fe347375cd0663ac5954d715d250e2..90b25bc3301959077060b55eae9df16bac541e1b 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="ISO-8859-1" ?>
 <!DOCTYPE sitemap SYSTEM "./style/sitemap.dtd">
 <?xml-stylesheet type="text/xsl" href="./style/manual.fr.xsl"?>
-<!-- English Revision : 1564075 -->
+<!-- English Revision: 1564075:1732097 (outdated) -->
 <!-- French translation : Lucien GENTIS -->
 <!-- Reviewed by : Vincent Deffontaines -->
 
index ca42fbf5373ecd14941cb131b83c63a9ec07868a..56b87da71aa482a207984a45f82502df6f248236 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE sitemap SYSTEM "./style/sitemap.dtd">
 <?xml-stylesheet type="text/xsl" href="./style/manual.ja.xsl"?>
-<!-- English Revision: 587444:1564075 (outdated) -->
+<!-- English Revision: 587444:1732097 (outdated) -->
 
 <!--
  Licensed to the Apache Software Foundation (ASF) under one or more
index 86eb7d1f3576936640a5506f885775e9a3f264b4..2f270e9036186f16e8744a0f1d266266f095cf08 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="EUC-KR" ?>
 <!DOCTYPE sitemap SYSTEM "./style/sitemap.dtd">
 <?xml-stylesheet type="text/xsl" href="./style/manual.ko.xsl"?>
-<!-- English Revision: 151408:1564075 (outdated) -->
+<!-- English Revision: 151408:1732097 (outdated) -->
 
 <!--
  Licensed to the Apache Software Foundation (ASF) under one or more
index 3f6f431fb02284d3169628415746738634a07a49..4ae81b685811deda3ca6306bd7ce7ae3b764db07 100644 (file)
@@ -7,13 +7,13 @@
   <relpath>.</relpath>
 
   <variants>
-    <variant>de</variant>
+    <variant outdated="yes">de</variant>
     <variant>en</variant>
     <variant outdated="yes">es</variant>
-    <variant>fr</variant>
+    <variant outdated="yes">fr</variant>
     <variant outdated="yes">ja</variant>
     <variant outdated="yes">ko</variant>
-    <variant>tr</variant>
+    <variant outdated="yes">tr</variant>
     <variant outdated="yes">zh-cn</variant>
   </variants>
 </metafile>
index fe73a1aff706efa110085536a36f5621c5d9522c..57b9ca0e7e3c31650a6c5bf803c5fc4ce45dd8d5 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE sitemap SYSTEM "./style/sitemap.dtd">
 <?xml-stylesheet type="text/xsl" href="./style/manual.tr.xsl"?>
-<!-- English Revision: 1564075 -->
+<!-- English Revision: 1564075:1732097 (outdated) -->
 <!-- =====================================================
  Translated by: Nilgün Belma Bugüner <nilgun belgeler.gen.tr>
    Reviewed by: Orhan Berent <berent belgeler.gen.tr>
index 50a5f508e1f3865c456ce6dac6144b66ee43a831..8186e13f2ce9e9f1442f3150777d7cf7d68b9140 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE sitemap SYSTEM "./style/sitemap.dtd">
 <?xml-stylesheet type="text/xsl" href="./style/manual.zh-cn.xsl"?>
-<!-- English Revision: 1044380:1564075 (outdated) -->
+<!-- English Revision: 1044380:1732097 (outdated) -->
 
 <!--
  Licensed to the Apache Software Foundation (ASF) under one or more