home *** CD-ROM | disk | FTP | other *** search
/ Chip 2004 November / CMCD1104.ISO / Software / Complet / Apache / apache_2.0.52-win32-x86-no_ssl.msi / Data.Cab / F277923_perftuning.xml.ko < prev    next >
Extensible Markup Language  |  2004-05-07  |  41KB  |  1,042 lines

  1. <?xml version="1.0" encoding="EUC-KR" ?>
  2. <!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd">
  3. <?xml-stylesheet type="text/xsl" href="../style/manual.ko.xsl"?>
  4. <!-- English Revision: 1.3.2.15 -->
  5.  
  6. <!--
  7.  Copyright 2004 The Apache Software Foundation
  8.  
  9.  Licensed under the Apache License, Version 2.0 (the "License");
  10.  you may not use this file except in compliance with the License.
  11.  You may obtain a copy of the License at
  12.  
  13.      http://www.apache.org/licenses/LICENSE-2.0
  14.  
  15.  Unless required by applicable law or agreed to in writing, software
  16.  distributed under the License is distributed on an "AS IS" BASIS,
  17.  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  18.  See the License for the specific language governing permissions and
  19.  limitations under the License.
  20. -->
  21.  
  22. <manualpage metafile="perf-tuning.xml.meta">
  23.   <parentdocument href="./">Miscellaneous Documentation</parentdocument>
  24.  
  25.   <title>╛╞╞──í ╝║┤╔╟Γ╗≤</title>
  26.  
  27.   <summary>
  28.  
  29.     <p>╛╞╞──í 2.0└║ ▒Γ┤╔░· ╞≈╞├░í┤╔╝║░· ╝║┤╔└╟ ▒╒╟ⁿ└╠ ╕┬╡╡╖╧
  30.     ╝│░Φ╟╤ ╣ⁿ┐δ └Ñ╝¡╣÷└╠┤┘. ║Ñ─í╕╢┼⌐ ▒Γ╖╧└╗ ╝╝┐∞▒Γ└º╟╪ ╝│░Φ╟╧┴÷
  31.     ╛╩╛╥┴÷╕╕ ╛╞╞──í 2.0└║ ╜╟┴ª ╕╣└║ ░µ┐∞ │⌠└║ ╝║┤╔└╗ │╜┤┘.</p>
  32.  
  33.     <p>╛╞╞──í 1.3░· ║±▒│╟╪╝¡ 2.0 ╣÷└ⁿ└║ ├│╕«╖«░· ╚«└σ╝║(scalability)└╗
  34.     │⌠└╠▒Γ└º╟╪ ╕╣└║ ├╓└√╚¡╕ª ╟▀┤┘. ▒Γ║╗░¬└╕╖╬ ┤δ║╬║╨ ├╓└√╚¡╟╤
  35.     ░¬└╗ ╗τ┐δ╟╤┤┘. ▒╫╖»│¬ ──╞─└╧╜├ ╚ñ└║ ╜╟╟α╜├ ╝│┴ñ└╠ ╝║┤╔┐í
  36.     ┼½ ┐╡╟Γ└╗ ┴┘ ╝÷ └╓┤┘. └╠ ╣«╝¡┤┬ ╛╞╞──í 2.0└╟ ╝║┤╔└╗ ╟Γ╗≤╟╧▒Γ└º╟╪
  37.     ╝¡╣÷ ░ⁿ╕«└┌░í ╝│┴ñ╟╥ ╝÷ └╓┤┬ ┐╔╝╟└╗ ╝│╕φ╟╤┤┘. ╛ε╢▓ ╝│┴ñ
  38.     ┐╔╝╟└║ └Ñ╝¡╣÷░í ╟╧╡σ┐■╛ε┐═ ┐ε┐╡├╝┴ª└╟ ▒Γ┤╔└╗ ┤⌡ └▀ ╚░┐δ╟╧╡╡╖╧
  39.     ╟╧┤┬ ╣▌╕Θ, ╛ε╢▓ ┐╔╝╟└║ ╝╙╡╡╕ª └º╟╪ ▒Γ┤╔└╗ ╚±╗²╟╤┤┘.</p>
  40.  
  41.   </summary>
  42.  
  43.   <section id="hardware">
  44.  
  45.     <title>╟╧╡σ┐■╛ε┐═ ┐ε┐╡├╝┴ª┐í ┤δ╟╪╝¡</title>
  46.  
  47.     <p>└Ñ╝¡╣÷ ╝║┤╔┐í ░í└σ ┼½ ┐╡╟Γ└╗ ┴╓┤┬ ░═└║ ╕▐╕≡╕«┤┘. ╜║┐╥└║
  48.     ┐Σ├╗┤τ ┴÷┐¼╜├░ú└╗ ╗τ┐δ└┌░í "├µ║╨╚≈ ║ⁿ╕ú┤┘░φ" ╗²░ó╟╧┴÷ ╕°╟╧░╘
  49.     ┤├╕«▒Γ╢º╣«┐í └Ñ╝¡╣÷┤┬ ╜║┐╥└╗ ╟╧╕Θ ╛╚╡╚┤┘. ┤└╖┴┴÷╕Θ ╗τ┐δ└┌┤┬
  50.     ┴ñ┴÷╟╧░φ ┤┘╜├ ┴ó╝╙╟╧┐⌐ ║╬╟╧░í ░Φ╝╙ ┴⌡░í╟╤┤┘. <directive
  51.     module="mpm_common">MaxClients</directive> ┴÷╜├╛ε╕ª ┴╢└²╟╧┐⌐
  52.     └Ñ╝¡╣÷░í ╜║┐╥└╗ ╟╥ ┴ñ╡╡╖╬ ╕╣└║ └┌╜─└╗ ╕╕╡Θ┴÷╛╩╡╡╖╧ ╟╪╛▀
  53.     ╟╤┤┘. ╣µ╣²└║ ░ú┤▄╟╧┤┘: <code>top</code>░· ░░└║ ╡╡▒╕┐í╝¡
  54.     ╟┴╖╬╝╝╜║ ╕±╖╧└╗ ║╕░φ ╛╞╞──í ╟┴╖╬╝╝╜║└╟ ╞≥▒╒ ╕▐╕≡╕« ╗τ┐δ╖«└╗
  55.     ╛╦╛╞│╜╚─, └ⁿ├╝ ╗τ┐δ░í┤╔╟╤ ╕▐╕≡╕«┐í╝¡ ┤┘╕Ñ ╟┴╖╬╝╝╜║╡Θ└╠ ╗τ┐δ╟╥
  56.     ░°░ú└╗ ╗½ ░¬┐í╝¡ │¬┤½┤┘.</p>
  57.  
  58.     <p>│¬╕╙┴÷┤┬ ╞≥╣ⁿ╟╧┤┘: ├µ║╨╚≈ ║ⁿ╕Ñ CPU, ├µ║╨╚≈ ║ⁿ╕Ñ │╫╞«┐≈─½╡σ,
  59.     ├µ║╨╚≈ ║ⁿ╕Ñ ╡≡╜║┼⌐, ┐⌐▒Γ╝¡ "├µ║╨╚≈ ║ⁿ╕Ñ"└║ ╜╟╟Φ└╗ ╟╪╝¡ ░ß┴ñ╟╪╛▀
  60.     ╟╤┤┘.</p>
  61.  
  62.     <p>┐ε┐╡├╝┴ª┤┬ ║╕┼δ ░ó└┌ ╛╦╛╞╝¡ ╝▒┼├╟╥ └╧└╠┤┘. ▒╫╖»│¬ └╧╣▌└√└╕╖╬
  63.     └»┐δ╟╧┤┘░φ ╞╟╕φ╡╚ ╕ε░í┴÷ ┴÷─º└╠ └╓┤┘:</p>
  64.  
  65.     <ul>
  66.       <li>
  67.         <p>╝▒┼├╟╤ ┐ε┐╡├╝┴ª└╟ ├╓╜┼ ╛╚┴ñ ╣÷└ⁿ░· ╞╨─í╕ª ╜╟╟α╟╤┤┘.
  68.         ╕╣└║ ┐ε┐╡├╝┴ª ┴ª└█╗τ┤┬ ├╓▒┘ TCP ╜║┼├░· ╛▓╖╣╡σ ╢≤└╠║Ω╖»╕«┐í
  69.         ╕╣└║ ╝╙╡╡╟Γ╗≤└╗ ╟▀┤┘.</p>
  70.       </li>
  71.  
  72.       <li>
  73.         <p>┐ε┐╡├╝┴ª░í <code>sendfile(2)</code> ╜├╜║┼█╚ú├Γ└╗
  74.         ┴÷┐°╟╤┤┘╕Θ, └╠╕ª ╗τ┐δ╟╧▒Γ└º╟╤ ╣÷└ⁿ└╠│¬ ╞╨─í╕ª ╝│─í╟╧┐┤┤┬┴÷
  75.         ╚«└╬╟╤┤┘. (┐╣╕ª ╡Θ╛ε, ╕«┤¬╜║╢≤╕Θ 2.4 └╠╗≤ ╣÷└ⁿ└╗ ╢µ╟╤┤┘.
  76.         Solaris 8 ├╩▒Γ ╣÷└ⁿ└║ ╞╨─í░í ╟╩┐Σ╟╧┤┘.) ┴÷┐°╟╧┤┬ ╜├╜║┼█└╠╢≤╕Θ
  77.         ╛╞╞──í 2┤┬ <code>sendfile</code>└╗ ╗τ┐δ╟╧┐⌐ CPU╕ª ┤·
  78.         ╗τ┐δ╟╧╕τ ┴ñ└√ ╞─└╧└╗ ┤⌡ ╗í╕« └ⁿ╝█╟╥ ╝÷ └╒┤┘.</p>
  79.       </li>
  80.     </ul>
  81.  
  82.   </section>
  83.  
  84.   <section id="runtime">
  85.  
  86.     <title>╜╟╟α╜├ ╝│┴ñ┐í ┤δ╟╪╝¡</title>
  87.  
  88.     <related>
  89.       <modulelist>
  90.         <module>mod_dir</module>
  91.         <module>mpm_common</module>
  92.         <module>mod_status</module>
  93.       </modulelist>
  94.       <directivelist>
  95.         <directive module="core">AllowOverride</directive>
  96.         <directive module="mod_dir">DirectoryIndex</directive>
  97.         <directive module="core">HostnameLookups</directive>
  98.         <directive module="core">EnableMMAP</directive>
  99.         <directive module="core">EnableSendfile</directive>
  100.         <directive module="core">KeepAliveTimeout</directive>
  101.         <directive module="prefork">MaxSpareServers</directive>
  102.         <directive module="prefork">MinSpareServers</directive>
  103.         <directive module="core">Options</directive>
  104.         <directive module="mpm_common">StartServers</directive>
  105.       </directivelist>
  106.     </related>
  107.  
  108.     <section id="dns">
  109.  
  110.       <title>HostnameLookups┐═ DNS┐í ┤δ╟╪ ░φ╖┴╟╥ ┴í╡Θ</title>
  111.  
  112.       <p>╛╞╞──í 1.3 └╠└ⁿ┐í <directive
  113.       module="core">HostnameLookups</directive>└╟ ▒Γ║╗░¬└║
  114.       <code>On</code>└╠┐┤┤┘. ┐Σ├╗└╗ ╕╢─í▒Γ└ⁿ┐í DNS ░╦╗÷└╠ │í│¬╛▀
  115.       ╟╧╣╟╖╬ ┐Σ├╗╕╢┤┘ ┴÷┐¼└╠ ╗²░σ┤┘. ╛╞╞──í 1.3┐í╝¡ └╠ ╝│┴ñ└╟
  116.       ▒Γ║╗░¬└╠ <code>Off</code>╖╬ ║»░µ╡╟╛·┤┘. ╖╬▒╫╞─└╧└╟ ┴╓╝╥╕ª
  117.       ╚ú╜║╞«╕φ└╕╖╬ ║»╚»╟╧╖┴╕Θ ┐⌐╖» ╖╬▒╫├│╕« ╟┴╖╬▒╫╖Ñ┴▀ ╟╧│¬└╬,
  118.       ╛╞╞──í┐í ╞≈╟╘╡╚ <a
  119.       href="../programs/logresolve.html"><code>logresolve</code></a>
  120.       ╟┴╖╬▒╫╖Ñ└╗ ╗τ┐δ╟╧╢≤.</p>
  121.  
  122.       <p>╖╬▒╫├│╕« └█╛≈└╠ ╝¡╣÷ ╝║┤╔┐í ╛╟┐╡╟Γ└╗ ╣╠─í╣╟╖╬ ╜╟┴ª
  123.       ╗τ┐δ╟╧┤┬ └Ñ╝¡╣÷░í ╛╞┤╤ ┤┘╕Ñ ──╟╗┼═┐í╝¡ ╖╬▒╫╞─└╧└╗ ╚─├│╕«╟╧▒µ
  124.       ╣┘╢⌡┤┘.</p>
  125.  
  126.       <p><code><directive module="mod_access">Allow</directive>
  127.       from domain</code>└╠│¬ <code><directive 
  128.       module="mod_access">Deny</directive> from domain</code>
  129.       ┴÷╜├╛ε╕ª ╗τ┐δ╟╤┤┘╕Θ (┴∩, IP ┴╓╝╥░í ╛╞┤╤ ╚ú╜║╞«╕φ└╠│¬ ╡╡╕▐└╬╕φ└╗
  130.       ╗τ┐δ╟╤┤┘╕Θ) ║╬╡µ└╠ ┴▀║╣-┐¬ DNS ░╦╗÷└╗ (┐¬░╦╗÷└╗ ╟╤╚─ ╛╟└╟╖╬
  131.       ║»░µ╡╟╛·┤┬┴÷ ╚«└╬╟╧▒Γ└º╟╪ ┤┘╜├ ░╦╗÷) ╟╪╛▀ ╟╤┤┘. ▒╫╖»╣╟╖╬
  132.       ╝║┤╔└╗ │⌠└╠▒Γ└º╟╪ └╠╖▒ ┴÷╜├╛ε┐í┤┬ ░í┤╔╟╧╕Θ └╠╕º┤δ╜┼ IP
  133.       ┴╓╝╥╕ª ╗τ┐δ╟╤┤┘.</p>
  134.  
  135.       <p><code><Location /server-status></code> ╝╜╝╟ ╡ε└╕╖╬
  136.       ┴÷╜├╛ε└╟ └√┐δ╣ⁿ└º╕ª ┴ª╟╤╟╥ ╝÷ └╓└╜└╗ ▒Γ╛∩╟╧╢≤. └╠ ░µ┐∞
  137.       ┴╢░╟┐í ╕┬┤┬ ┐Σ├╗┐í╕╕ DNS ┴╢╚╕╕ª ╟╤┤┘. ┤┘└╜└║
  138.       <code>.html</code>░· <code>.cgi</code> ╞─└╧╕╕ DNS ░╦╗÷└╗
  139.       ╟╧┤┬ ┐╣┴ª┤┘:</p>
  140.  
  141.       <example>
  142.         HostnameLookups off<br />
  143.         <Files ~ "\.(html|cgi)$"><br />
  144.         <indent>
  145.           HostnameLookups on<br />
  146.         </indent>
  147.         </Files>
  148.       </example>
  149.  
  150.       <p>▒╫╖»│¬ CGI┐í╝¡ DNS╕φ└╠ ╟╩┐Σ╟╥ ╗╙└╠╢≤╕Θ, ╟╩┐Σ╟╤ ╞»┴ñ
  151.       CGI┐í╝¡╕╕ <code>gethostbyname</code> ╚ú├Γ└╗ ╟╧╡╡╖╧ ░φ╖┴╟╪║╝
  152.       ╝÷ └╓┤┘.</p>
  153.  
  154.     </section>
  155.  
  156.     <section id="symlinks">
  157.  
  158.       <title>FollowSymLinks┐═ SymLinksIfOwnerMatch</title>
  159.  
  160.       <p>URL ░°░ú┐í╝¡ <code>Options FollowSymLinks</code>╕ª
  161.       ╗τ┐δ╟╧┴÷╛╩░φ <code>Options SymLinksIfOwnerMatch</code>╕ª
  162.       ╗τ┐δ╟╧╕Θ ╛╞╞──í┤┬ ╜╔║╝╕╡┼⌐╕ª ░╦╗τ╟╧▒Γ└º╟╪ ╜├╜║┼█╚ú├Γ└╗
  163.       ╟╤╣° ┤⌡ ╟╪╛▀ ╟╤┤┘. ╞─└╧╕φ└╟ ░ó ║╬║╨╕╢┤┘ ╟╤╣°╛┐ ┤⌡ ╚ú├Γ└╗
  164.       ╟╤┤┘. ┐╣╕ª ╡Θ╛ε, ╝│┴ñ└╠ ┤┘└╜░· ░░░φ:</p>
  165.  
  166.       <example>
  167.         DocumentRoot /www/htdocs<br />
  168.         <Directory /><br />
  169.         <indent>
  170.           Options SymLinksIfOwnerMatch<br />
  171.         </indent>
  172.         </Directory>
  173.       </example>
  174.  
  175.       <p><code>/index.html</code> URI┐í ┤δ╟╤ ┐Σ├╗└╠ └╓┤┘░φ ░í┴ñ╟╧└┌.
  176.       ▒╫╖»╕Θ ╛╞╞──í┤┬ <code>/www</code>, <code>/www/htdocs</code>,
  177.       <code>/www/htdocs/index.html</code> ░ó░ó┐í ┤δ╟╪
  178.       <code>lstat(2)</code>╕ª ╚ú├Γ╟╤┤┘. <code>lstats</code>
  179.       ░ß░·╕ª ─│╜╠╟╧┴÷ ╛╩▒Γ╢º╣«┐í ┐Σ├╗└╠ ╡Θ╛ε┐├ ╢º╕╢┤┘ ╕┼╣° ░░└║
  180.       └█╛≈└╗ ╟╤┤┘. ┴°┬Ñ ╜╔║╝╕╡┼⌐ ║╕╛╚ ░╦╗τ╕ª ┐°╟╤┤┘╕Θ ┤┘└╜░·
  181.       ░░└╠ ╟╥ ╝÷ └╓┤┘:</p>
  182.  
  183.       <example>
  184.         DocumentRoot /www/htdocs<br />
  185.         <Directory /><br />
  186.         <indent>
  187.           Options FollowSymLinks<br />
  188.         </indent>
  189.         </Directory><br />
  190.         <br />
  191.         <Directory /www/htdocs><br />
  192.         <indent>
  193.           Options -FollowSymLinks +SymLinksIfOwnerMatch<br />
  194.         </indent>
  195.         </Directory>
  196.       </example>
  197.  
  198.       <p>└╠ ░µ┐∞ ├╓╝╥╟╤ <directive
  199.       module="core">DocumentRoot</directive> ░µ╖╬┤┬ ░╦╗τ╟╧┴÷
  200.       ╛╩┤┬┤┘. DocumentRoot ╣█┐í └╓┤┬ ░µ╖╬╖╬ <directive
  201.       module="mod_alias">Alias</directive>│¬ <directive
  202.       module="mod_rewrite">RewriteRule</directive>└╗ ╗τ┐δ╟╤
  203.       ░µ┐∞┐í╡╡ └º┐═ ║±╜┴╟╤ ╝╜╝╟└╠ ╟╩┐Σ╟╧┤┘. ╜╔║╝╕╡┼⌐ ║╕╛╚└╗
  204.       ░φ╖┴╟╧┴÷ ╛╩░φ ├╓░φ└╟ ╝║┤╔└╗ ╛≥└╕╖┴╕Θ,
  205.       <code>FollowSymLinks</code>╕ª ╝│┴ñ╟╧░φ,
  206.       <code>SymLinksIfOwnerMatch</code>┤┬ └²┤δ╖╬ ╛╚╡╚┤┘.</p>
  207.  
  208.     </section>
  209.  
  210.     <section id="htacess">
  211.  
  212.       <title>AllowOverride</title>
  213.  
  214.       <p>URL ░°░ú┐í╝¡ overrides╕ª ╟π┐δ╟╤┤┘╕Θ (║╕┼δ
  215.       <code>.htaccess</code> ╞─└╧) ╛╞╞──í┤┬ ╞─└╧╕φ└╟ ░ó ║╬║╨╕╢┤┘
  216.       <code>.htaccess</code>╕ª ┐¡▒µ ╜├╡╡╟╤┤┘. ┐╣╕ª ╡Θ╛ε,</p>
  217.  
  218.       <example>
  219.         DocumentRoot /www/htdocs<br />
  220.         <Directory /><br />
  221.         <indent>
  222.           AllowOverride all<br />
  223.         </indent>
  224.         </Directory>
  225.       </example>
  226.  
  227.       <p><code>/index.html</code> URI┐í ┤δ╟╤ ┐Σ├╗└╠ └╓┤┘░φ ░í┴ñ╟╧└┌.
  228.       ╛╞╞──í┤┬ <code>/.htaccess</code>, <code>/www/.htaccess</code>,
  229.       <code>/www/htdocs/.htaccess</code>╕ª ┐¡╖┴░φ ╜├╡╡╟╤┤┘.
  230.       ╟╪░ß├Ñ└║ ╛╒└╟ <code>Options FollowSymLinks</code> ░µ┐∞┐═
  231.       ║±╜┴╟╧┤┘. ├╓░φ└╟ ╝║┤╔└╗ ╛≥└╕╖┴╕Θ ╞─└╧╜├╜║┼█┐í ┤δ╟╪╝¡ ╟╫╗≤
  232.       <code>AllowOverride None</code>└╗ ╗τ┐δ╟╤┤┘.</p>
  233.  
  234.     </section>
  235.  
  236.     <section id="negotiation">
  237.  
  238.       <title>│╗┐δ╟∙╗≤</title>
  239.  
  240.       <p>░í┤╔╟╧░φ ┴°┬Ñ ┴╢▒▌└╟ ╝║┤╔╟Γ╗≤┐í╡╡ ░ⁿ╜╔└╠ └╓┤┘╕Θ │╗┐δ╟∙╗≤└╗
  241.       ╕╖┤┬┤┘. ╜╟┴ª╖╬ ╟∙╗≤└╟ └╠╡µ└║ ╝║┤╔└·╟╧║╕┤┘ └█┤┘. ╝¡╣÷╕ª
  242.       ║ⁿ╕ú░╘ ╟╥ ╝÷ └╓┤┘. ┤┘└╜░· ░░└╠ ┐═└╧╡σ─½╡σ╕ª ╗τ┐δ╟╧┤┬ ┤δ╜┼:</p>
  243.  
  244.       <example>
  245.         DirectoryIndex index
  246.       </example>
  247.  
  248.       <p>┐╧└ⁿ╟╤ ╕±╖╧└╗ ╗τ┐δ╟╤┤┘:</p>
  249.  
  250.       <example>
  251.         DirectoryIndex index.cgi index.pl index.shtml index.html
  252.       </example>
  253.  
  254.       <p>░í└σ ╚τ╟╤ ░═└╗ ╛╒┐í ╡╨┤┘.</p>
  255.  
  256.       <p>╢╟, ╡≡╖║┼Σ╕«┐í╝¡ ╞─└╧╡Θ└╗ ├ú┤┬ <code>MultiViews</code>
  257.       ║╕┤┘┤┬, ╟╤ ╞─└╧╕╕ └╨└╕╕Θ ╟╩┐Σ╟╤ ┴ñ║╕╕ª ╛≥└╗ ╝÷ └╓┤┬
  258.       <code>type-map</code> ╞─└╧└╗ ┴≈┴ó ╕╕╡σ┤┬ ░═└╠ ┤⌡ ║ⁿ╕º└╗
  259.       ╕φ╜╔╟╧╢≤.</p>
  260.  
  261.     <p>╗τ└╠╞«┐í │╗┐δ╟∙╗≤└╠ ╟╩┐Σ╟╧┤┘╕Θ ╟∙╗≤└╗ └º╟╪ <code>Options
  262.     MultiViews</code> ┴÷╜├╛ε╕ª ╗τ┐δ╟╧▒Γ║╕┤┘ <code>type-map</code>
  263.     ╞─└╧└╗ ░φ╖┴╟╧╢≤. ╟∙╗≤╣µ╣²┐í ┤δ╟╤ └┌╝╝╟╤ ╝│╕φ░·
  264.     <code>type-map</code> ╞─└╧└╗ ╕╕╡σ┤┬ ╣µ╣²└║ <a
  265.     href="../content-negotiation.html">│╗┐δ╟∙╗≤</a> ╣«╝¡╕ª ┬ⁿ░φ╟╧╢≤.</p>
  266.  
  267.     </section>
  268.  
  269.     <section>
  270.  
  271.       <title>╕▐╕≡╕«┤δ└└ (memory-mapping)</title>
  272.  
  273.       <p>┐╣╕ª ╡Θ╛ε, server-side-include╕ª ├│╕«╟╧┤┬ ╡ε ╛╞╞──í
  274.       2.0└╠ └ⁿ╝█╟╥ ╞─└╧└╗ └╨└╗╢º ┐ε┐╡├╝┴ª░í <code>mmap(2)</code>
  275.       ╡ε└╗ ┴÷┐°╟╤┤┘╕Θ ╞─└╧└╗ ╕▐╕≡╕«┤δ└└╟╤┤┘.</p>
  276.  
  277.       <p>┐⌐╖» ╟├╖í╞√┐í╝¡ ╕▐╕≡╕«┤δ└└└╗ ╝║┤╔└╗ ╟Γ╗≤╟╤┤┘. ▒╫╖»│¬
  278.       ╕▐╕≡╕«┤δ└└└╠ ╝¡╣÷└╟ ╝║┤╔└╗ ╢│╛ε╞«╕«░φ ╜╔┴÷╛ε ╛╚┴ñ╝║└╗
  279.       ╟╪─í┤┬ ░µ┐∞░í └╓┤┘:</p>
  280.  
  281.       <ul>
  282.         <li>
  283.           <p>╛ε╢▓ ┐ε┐╡├╝┴ª┐í╝¡ <code>mmap</code>└║ CPU ░│╝÷░í
  284.           ╕╣╛╞┴·╢º <code>read(2)</code> ╕╕┼¡ ╚«└σ╝║└╠ ┴┴┴÷ ╛╩┤┘.
  285.           ┐╣╕ª ╡Θ╛ε, ┤┘┴▀╟┴╖╬╝╝╝¡ Solaris ╝¡╣÷┐í╝¡ ╛╞╞──í 2.0└║
  286.           ┴╛┴╛ <code>mmap</code>└╗ ╗τ┐δ╟╧┴÷ ╛╩└╗╢º ╝¡╣÷░í ├│╕«╟╤
  287.           ╞─└╧└╗ ┤⌡ ╗í╕« └ⁿ╝█╟╤┤┘.</p>
  288.         </li>
  289.  
  290.         <li>
  291.           <p>NFS ╕╢┐ε╞«╟╤ ╞─└╧╜├╜║┼█┐í └╓┤┬ ╞─└╧└╗ ╕▐╕≡╕«┤δ└└╟╧┤┬
  292.           ╡╡┴▀┐í ┤┘╕Ñ NFS ┼¼╢≤└╠╛≡╞«┐í └╓┤┬ ╟┴╖╬╝╝╜║░í ╞─└╧└╗
  293.           ┴÷┐∞░┼│¬ ╞─└╧┼⌐▒Γ╕ª ┴┘└╠╕Θ, └Ñ╝¡╣÷ ╟┴╖╬╝╝╜║░í ┤┘└╜
  294.           ╣°┐í ╕▐╕≡╕«┤δ└└╟╤ ╞─└╧│╗┐δ└╗ └╨└╗╢º bus error░í ╣▀╗²╟╥
  295.           ╝÷ └╓┤┘.</p>
  296.         </li>
  297.       </ul>
  298.  
  299.       <p>└º└╟ ┴╢░╟┐í ╟╪┤τ╟╧╕Θ └ⁿ╝█╟╧┤┬ ╞─└╧└╗ ╕▐╕≡╕«┤δ└└╟╧┴÷
  300.       ╛╩╡╡╖╧ <code>EnableMMAP off</code>╕ª ╗τ┐δ╟╪╛▀ ╟╤┤┘. (┴╓└╟:
  301.       └╠ ┴÷╜├╛ε┤┬ ╡≡╖║┼Σ╕«║░╖╬ ║»░µ╟╥ ╝÷ └╓┤┘.)</p>
  302.  
  303.     </section>
  304.  
  305.     <section>
  306.  
  307.       <title>Sendfile</title>
  308.  
  309.       <p>╛╞╞──í┤┬ ┐ε┐╡├╝┴ª░í <code>sendfile(2)</code>└╗ ┴÷┐°╟╧╕Θ
  310.       ─┐│╬ sendfile└╗ ╗τ┐δ╟╧┐⌐ -- ┐╣╕ª ╡Θ╛ε, ┴ñ└√ ╞─└╧└╗ ╝¡║±╜║╟╥╢º
  311.       -- └ⁿ╝█╟╥ ╞─└╧└╗ ┴≈┴ó └╨┴÷╛╩└╗ ╝÷ └╓┤┘.</p>
  312.  
  313.       <p>┐⌐╖» ╟├╖í╞√┐í╝¡ sendfile└╗ ╗τ┐δ╟╧╕Θ read┐═ send╕ª ╡√╖╬
  314.       ╟╥ ╟╩┐Σ░í ╛°╛ε╝¡ ╗í╢≤┴°┤┘. ▒╫╖»│¬ sendfile└╗ ╗τ┐δ╟╧╕Θ
  315.       └Ñ╝¡╣÷└╟ ╛╚┴ñ╝║└╗ ╟╪─í░╘╡╟┤┬ ░µ┐∞░í └╓┤┘:</p>
  316.  
  317.       <ul>
  318.         <li>
  319.           <p>sendfile ┴÷┐°└╠ └▀╕°╡╟╛·░φ ──╞─└╧ ╜├╜║┼█└╠ └╠┴í└╗
  320.           ╣▀░▀╟╧┴÷ ╕°╟╧┤┬ ╟├╖í╞√└╠ └╓┤┘. ╞»╚≈ ┤┘╕Ñ ──╟╗┼═┐í╝¡
  321.           ╜╟╟α╞─└╧└╗ ──╞─└╧╟╧┐⌐ sendfile ┴÷┐°└╠ └▀╕°╡╚ ──╟╗┼═╖╬
  322.           ░í┴«┐┬ ░µ┐∞┐í ░í┤╔╟╧┤┘.</p>
  323.         </li>
  324.         <li>
  325.           <p>─┐│╬└║ └┌╜┼└╟ ─│╜¼╕ª ╗τ┐δ╟╧┐⌐ NFS╖╬ ╕╢┐ε╞«╟╤ ╞─└╧└╗
  326.           ╛╚┴ñ└√└╕╖╬ ╝¡║±╜║╟╥ ╝÷ ╛°┤┬ ░µ┐∞░í └╓┤┘.</p>
  327.         </li>
  328.       </ul>
  329.  
  330.       <p>└º└╟ ┴╢░╟┐í ╟╪┤τ╟╧╕Θ ╞─└╧└╗ sendfile └ⁿ╝█╟╧┴÷ ╛╩╡╡╖╧
  331.       <code>EnableSendfile off</code>╕ª ╗τ┐δ╟╪╛▀ ╟╤┤┘. (┴╓└╟:
  332.       └╠ ┴÷╜├╛ε┤┬ ╡≡╖║┼Σ╕«║░╖╬ ║»░µ╟╥ ╝÷ └╓┤┘.)</p>
  333.  
  334.     </section>
  335.  
  336.     <section id="process">
  337.  
  338.       <title>╟┴╖╬╝╝╜║ ╗²╝║</title>
  339.  
  340.       <p>╛╞╞──í 1.3 └╠└ⁿ┐í┤┬ <directive
  341.       module="prefork">MinSpareServers</directive>, <directive
  342.       module="prefork">MaxSpareServers</directive>, <directive
  343.       module="mpm_common">StartServers</directive> ╝│┴ñ└╠ ╕≡╡╬
  344.       ║Ñ─í╕╢┼⌐ ░ß░·┐í ┼½ ┐╡╟Γ└╗ ╣╠├╞┤┘. ╞»╚≈ ╛╞╞──í┤┬ └█╛≈└╗
  345.       ╝¡║±╜║╟╧▒Γ└º╟╪ ├µ║╨╟╤ └┌╜─╝÷┐í ┤┘┤┘╕ª ╢º▒ε┴÷ "╡╡┤▐" ▒Γ░ú└╠
  346.       ╟╩┐Σ╟▀┤┘. ├│└╜ <directive
  347.       module="mpm_common">StartServers</directive>░│ └┌╜─└╗
  348.       ╕╕╡τ╚─, <directive module="prefork">MinSpareServers</directive>
  349.       ╝│┴ñ░¬▒ε┴÷ ├╩┤τ └┌╜─└╗ ╟╧│¬╛┐ ╕╕╡Θ╛·┤┘. ▒╫╖í╝¡ <directive
  350.       module="mpm_common">StartServers</directive> ▒Γ║╗░¬└╠
  351.       <code>5</code>└╬ ╝¡╣÷┐í ┼¼╢≤└╠╛≡╞« 100░│░í ╡┐╜├┐í ┴ó╝╙╟╧╕Θ
  352.       ║╬╟╧╕ª ├│╕«╟╧▒Γ┐í ├µ║╨╟╤ └┌╜─└╗ ╕╕╡Θ▒Γ▒ε┴÷ 95├╩░í ░╔╖╚┤┘.
  353.       └┌┴╓ └τ╜├└█╟╧┴÷ ╛╩┤┬ ╜╟┴ª ╝¡╣÷┐í╝¡┤┬ └▀ ╡┐└█╟╧┴÷╕╕, 10║╨░ú╕╕
  354.       ╜╟╟α╟╧┤┬ ║Ñ─í╕╢┼⌐ ░ß░·┤┬ ╕┼┐∞ │¬╗┌░╘ │¬┐┬┤┘.</p>
  355.  
  356.       <p>├╩┤τ ╟╤░│ ▒╘─ó└║ └┌╜─└╗ ╗⌡╖╬ ╜├└█╟╧╕Θ╝¡ ╝¡╣÷┐í ╣½╕«╕ª
  357.       ┴╓┴÷ ╛╩└╕╖┴░φ ┴ñ╟▀┤┘. ──╟╗┼═░í └┌╜─└╗ ╜├└█╟╧┤└╢≤ ╣┘╗┌╕Θ
  358.       ┐Σ├╗└╗ ╝¡║±╜║╟╥ ╝÷ ╛°┤┘. ▒╫╖»│¬ └╠ ▒╘─ó└╠ ╛╞╞──í└╟ ├╝░¿
  359.       ╝║┤╔┐í ╛╟┐╡╟Γ└╗ ┴╓╛ε ║»░µ╟╧┐┤┤┘. ╛╞╞──í 1.3┐í╝¡ ├╩┤τ ╟╤░│
  360.       ▒╘─ó└║ ┐╧╚¡╡╟╛·┤┘. ─┌╡σ┤┬ └┌╜─ ╟╤░│╕ª ╕╕╡Θ░φ, 1├╩ ╜¼░φ,
  361.       ╡╬░│╕ª ╕╕╡Θ░φ, 1├╩ ╜¼░φ, │╫░│╕ª ╕╕╡Θ░φ, └╠╖▒ ╜─└╕╖╬ ├╩┤τ
  362.       └┌╜─└╗ 32░│ ╕╕╡Θ╢º▒ε┴÷ ┴÷╝÷╖╬ ┴⌡░í╟╤┤┘. └┌╜─╝÷░í <directive
  363.       module="prefork">MinSpareServers</directive> ╝│┴ñ┐í ┤┘┤┘╕ú╕Θ
  364.       ┴⌡░í╕ª ┴▀┤▄╟╤┤┘.</p>
  365.  
  366.       <p>└╠ ░µ┐∞ ╣▌└└╝╙╡╡░í ╗í╢≤┴«╝¡ <directive module="prefork"
  367.       >MinSpareServers</directive>, <directive module="prefork"
  368.       >MaxSpareServers</directive>, <directive module="mpm_common"
  369.       >StartServers</directive>╕ª ░┼└╟ ╝│┴ñ╟╥ ╟╩┐Σ░í ╛°┤┘. └╧├╩┐í
  370.       └┌╜─└╗ 4░│ └╠╗≤ ╗²╝║╟╧╕Θ <directive
  371.       module="core">ErrorLog</directive>┐í ▒Γ╖╧╟╤┤┘. └╠╖▒ ┐└╖∙╣«└╠
  372.       ╕╣└╠ ║╕└╠╕Θ └╠ ╝│┴ñ╡Θ└╗ ┴╢└²╟╧▒µ ╣┘╢⌡┤┘.
  373.       <module>mod_status</module> ░ß░·░í ╡╡┐≥└╠ ╡╔ ░═└╠┤┘.</p>
  374.  
  375.     <p>╟┴╖╬╝╝╜║ ╗²╝║░· ░ⁿ╖├╟╧┐⌐ <directive
  376.     module="mpm_common">MaxRequestsPerChild</directive> ╝│┴ñ└║
  377.     ╟┴╖╬╝╝╜║╕ª ┴╛╖ß╟╤┤┘. ▒Γ║╗░¬└║ └┌╜─┤τ ├│╕«╟╥ ┐Σ├╗╝÷┐í ┴ª╟╤└╠
  378.     ╛°┤┘┤┬ <code>0</code>└╠┤┘. ╟÷└τ ╝│┴ñ└╠ <code>30</code>░·
  379.     ░░└╠ ╕┼┐∞ └█└║ ░¬└╕╖╬ ╝│┴ñ╡╟└╓┤┘╕Θ, ░¬└╗ ╗≤┤τ╚≈ │⌠╚· ╟╩┐Σ░í
  380.     └╓┤┘. SunOS│¬ ┐└╖í╡╚ Solaris ╣÷└ⁿ└╗ ╗τ┐δ╟╤┤┘╕Θ, ╕▐╕≡╕«└»├Γ╢º╣«┐í
  381.     └╠ ░¬└╗ <code>10000</code> ┴ñ╡╡╖╬ ╝│┴ñ╟╧╢≤.</p>
  382.  
  383.     <p>┐¼░ß└»┴÷(keep-alive)╕ª ╗τ┐δ╟╤┤┘╕Θ └┌╜─╡Θ└║ └╠╣╠ ┐¡╕░
  384.     ┐¼░ß┐í╝¡ ├▀░í ┐Σ├╗└╗ ▒Γ┤┘╕«╕τ ╛╞╣½░═╡╡ ╟╧┴÷╛╩▒Γ╢º╣«┐í ░Φ╝╙
  385.     ╣┘╗┌┤┘. <directive module="core">KeepAliveTimeout</directive>└╟
  386.     ▒Γ║╗░¬ <code>15</code> ├╩┤┬ └╠╖▒ ╟÷╗≤└╗ ├╓╝╥╚¡╟╤┤┘. │╫╞«┐≈
  387.     ┤δ┐¬╞°░· ╝¡╣÷ └┌┐° ░ú└╟ ▒╒╟ⁿ└╠ ╕┬░╘ ╝│┴ñ╟╤┤┘. <a
  388.     href="http://www.research.digital.com/wrl/techreports/abstracts/95.4.html">
  389.     ┐¼░ß└»┴÷└╟ ┤δ║╬║╨└╟ └╠┴í└╠ ╗τ╢≤┴÷▒Γ╢º╣«┐í</a> ╛ε╢▓ ░µ┐∞┐í╡╡
  390.     └╠ ░¬└╗ <code>60</code> ├╩ └╠╗≤└╕╖╬ ┐├╕«┴÷ ╕╢╢≤.</p>
  391.  
  392.     </section>
  393.  
  394.   </section>
  395.  
  396.   <section id="compiletime">
  397.  
  398.     <title>──╞─└╧╜├ ╝│┴ñ┐í ┤δ╟╪╝¡</title>
  399.  
  400.     <section>
  401.  
  402.       <title>MPM ╝▒┼├</title>
  403.  
  404.       <p>╛╞╞──í 2.x┤┬ <a href="../mpm.html">┤┘┴▀├│╕«╕≡╡Γ</a>
  405.       (MPMs)└╠╢≤┤┬ ▒│├╝╟╥ ╝÷ └╓┤┬ ╡┐▒Γ╚¡ ╕≡╡¿└╗ ┴÷┐°╟╤┤┘. ╛╞╞──í╕ª
  406.       ──╞─└╧╟╥╢º MPM└╗ ╝▒┼├╟╪╛▀ ╟╤┤┘. <module>beos</module>,
  407.       <module>mpm_netware</module>, <module>mpmt_os2</module>,
  408.       <module>mpm_winnt</module>┐═ ░░└╠ ╞»┴ñ ╟├╖í╞√┐í╝¡╕╕ ╗τ┐δ╟╥
  409.       ╝÷ └╓┤┬ MPM╡╡ └╓┤┘. └╧╣▌└√└╬ └»┤╨╜║╖∙ ╜├╜║┼█└║ ┐⌐╖» MPM
  410.       ┴▀┐í ╟╧│¬╕ª ╝▒┼├╟╥ ╝÷ └╓┤┘. └Ñ╝¡╣÷└╟ ╝╙╡╡┐═
  411.       ╚«└σ╝║(scalability)└║ ╛ε╢▓ MPM└╗ ╝▒┼├╟▀│─┐í ┤▐╖╚┤┘:</p>
  412.  
  413.       <ul>
  414.  
  415.         <li><module>worker</module> MPM└║ ┐⌐╖» └┌╜─ ╟┴╖╬╝╝╜║░í
  416.         ░ó░ó ┐⌐╖» ╛▓╖╣╡σ╕ª ╗τ┐δ╟╤┤┘. ░ó ╛▓╖╣╡σ┤┬ ╟╤╣°┐í ╟╤ ┐¼░ß└╗
  417.         ┤π┤τ╟╤┤┘. └╧╣▌└√└╕╖╬ worker┤┬ prefork MPM ║╕┤┘ └√└║
  418.         ╕▐╕≡╕«╕ª ╗τ┐δ╟╧╣╟╖╬ ┼δ╜┼╖«└╠ ╕╣└║ ╝¡╣÷┐í └√└²╟╧┤┘.</li>
  419.  
  420.         <li><module>prefork</module> MPM└║ ╛▓╖╣╡σ░í ╟╤░│└╬ └┌╜─
  421.         ╟┴╖╬╝╝╜║╕ª ┐⌐╖»░│ ╗τ┐δ╟╤┤┘. ░ó ╟┴╖╬╝╝╜║┤┬ ╟╤╣°┐í ╟╤
  422.         ┐¼░ß└╗ ┤π┤τ╟╤┤┘. ┐⌐╖» ╜├╜║┼█┐í╝¡ prefork└╟ ╝╙╡╡┤┬ worker┐═
  423.         ║±╜┴╟╧┴÷╕╕, ┤⌡ ╕╣└║ ╕▐╕≡╕«╕ª ╗τ┐δ╟╤┤┘. ┤┘└╜░· ░░└║ ╗≤╚▓┐í╝¡
  424.         ╛▓╖╣╡σ╕ª ╗τ┐δ╟╧┴÷ ╛╩┤┬ prefork ╣µ╜─└╠ worker┐í ║±╟╪
  425.         └╠┴í└╗ ░í┴°┤┘: ╛▓╖╣╡σ┐í ╛╚└ⁿ╟╧┴÷ (thread-safe) ╛╩└║
  426.         ┴ª╗∩└┌░í ╕╕╡τ ╕≡╡Γ└╗ ╗τ┐δ╟╥ ╝÷ └╓░φ, ╛▓╖╣╡σ ╡≡╣÷▒δ ┴÷┐°└╠
  427.         ║≤╛α╟╤ ╟├╖í╞√┐í╝¡ ╜▒░╘ ╡≡╣÷▒δ╟╥ ╝÷ └╓┤┘.</li>
  428.  
  429.       </ul>
  430.  
  431.       <p>└╠ MPM╡Θ░· ┤┘╕Ñ MPM┐í ┤δ╟╪ ┤⌡ └┌╝╝╟╤ ┴ñ║╕┤┬ MPM <a
  432.       href="../mpm.html">╣«╝¡</a>╕ª ┬ⁿ░φ╟╧▒µ ╣┘╢⌡┤┘.</p>
  433.  
  434.     </section>
  435.  
  436.     <section id="modules">
  437.  
  438.         <title>╕≡╡Γ</title>
  439.  
  440.         <p>╕▐╕≡╕« ╗τ┐δ╖«└╠ ╝║┤╔┐í╝¡ ░í└σ ┴▀┐Σ╟╤ ┐Σ└╬└╠▒Γ╢º╣«┐í
  441.         ╜╟┴ª╖╬ ╗τ┐δ╟╧┴÷ ╛╩┤┬ ╕≡╡Γ└╗ ┴ª░┼╟╪║╕└┌. ╕≡╡Γ└╗ <a
  442.         href="../dso.html">DSO</a>╖╬ ──╞─└╧╟▀┤┘╕Θ ░ú┤▄╚≈ ▒╫
  443.         ╕≡╡Γ┐í ┤δ╟╤ <directive
  444.         module="mod_so">LoadModule</directive> ┴÷╜├╛ε╕ª ┴╓╝«├│╕«╟╧╕Θ
  445.         ╡╚┤┘. ▒╫╖í╝¡ ╕≡╡Γ└╗ ┴ª░┼╟╧░φ ╜╟╟α╟╧┐⌐ ╗τ└╠╞«░í ╕≡╡Γ╛°└╠╡╡
  446.         ┴ñ╗≤└√└╕╖╬ ╡┐└█╟╧┤┬┴÷ ╗∞╞∞║╝ ╝÷ └╓┤┘.</p>
  447.  
  448.         <p>╣▌┤δ╖╬ ╕≡╡Γ└╠ ╛╞╞──í ╜╟╟α╞─└╧┐í ┴ñ└√└╕╖╬ ╕╡┼⌐╡╟└╓┤┘╕Θ
  449.         ┐°╟╧┴÷ ╛╩┤┬ ╕≡╡Γ└╗ ┴ª░┼╟╧▒Γ└º╟╪ ╛╞╞──í╕ª └τ──╞─└╧╟╪╛▀
  450.         ╟╤┤┘.</p>
  451.  
  452.         <p>┐⌐▒Γ╝¡ ┤τ┐¼╚≈ ╛ε╢▓ ╕≡╡Γ└╗ ╗τ┐δ╟╧░φ ╗τ┐δ╟╧┴÷ ╕╗┴÷
  453.         └╟╣«└╠ ╗²▒Σ┤┘. ┴ñ┤Σ└║ └Ñ╗τ└╠╞«╕╢┤┘ ┤┘╕ú┤┘. ▒╫╖»│¬ ╛╞╕╢╡╡
  454.         <em>├╓╝╥╟╤</em> <module>mod_mime</module>,
  455.         <module>mod_dir</module>, <module>mod_log_config</module>
  456.         ╕≡╡Γ└║ ╗τ┐δ╟╥ ░═└╠┤┘. ╣░╖╨ └Ñ╗τ└╠╞«┐í ╖╬▒╫╞─└╧└╠ ╟╩┐Σ╛°┤┘╕Θ
  457.         <code>mod_log_config</code>┤┬ ╛°╛ε╡╡ ╡╚┤┘. ▒╫╖»│¬ ├▀├╡╟╧┴÷
  458.         ╛╩┤┬┤┘.</p>
  459.  
  460.     </section>
  461.  
  462.     <section>
  463.  
  464.       <title>Atomic ╕φ╖╔</title>
  465.  
  466.       <p><module>mod_cache</module> ░░└║ ╕≡╡Γ░· ├╓▒┘ ░│╣▀┴▀└╬
  467.       worker MPM└║ APR└╟ atomic API╕ª ╗τ┐δ╟╤┤┘. └╠ API┤┬ ░µ╖«▒▐
  468.       ╛▓╖╣╡σ ╡┐▒Γ╚¡╕ª └º╟╥ atomic ╕φ╖╔└╗ ┴ª░°╟╤┤┘.</p>
  469.  
  470.       <p>▒Γ║╗└√└╕╖╬ APR└║ ░ó ┐ε┐╡├╝┴ª/CPU ╟├╖í╞√┐í╝¡ ░í└σ ╚┐└▓└√└╬
  471.       ╣µ╣²└╗ ╗τ┐δ╟╧┐⌐ └╠ ╕φ╖╔└╗ ▒╕╟÷╟╤┤┘. ┐╣╕ª ╡Θ╛ε, ┐⌐╖» ├╓╜┼
  472.       CPU┐í┤┬ ╟╧╡σ┐■╛ε╖╬ atomic compare-and-swap (CAS) ┐¼╗Ω└╗
  473.       ╟╧┤┬ ╕φ╖╔╛ε░í └╓┤┘. ▒╫╖»│¬ ╛ε╢▓ ╟├╖í╞√┐í╝¡ APR└║ └╠╖▒
  474.       ╕φ╖╔╛ε░í ╛°┤┬ ┐└╖í╡╚ CPU┐═ ╚ú╚»╝║└╗ └º╟╪ ┤⌡ ┤└╕░ mutex▒Γ╣▌
  475.       ▒╕╟÷└╗ ▒Γ║╗└√└╕╖╬ ╗τ┐δ╟╤┤┘. └╠╖▒ ╟├╖í╞√┐í╝¡ ╛╞╞──í╕ª
  476.       ──╞─└╧╟╥╢º ╛╞╞──í╕ª ├╓╜┼ CPU┐í╝¡╕╕ ╜╟╟α╟╥ ░Φ╚╣└╠╢≤╕Θ,
  477.       ╛╞╞──í╕ª ▒╕╝║╟╥╢º <code>--enable-nonportable-atomics</code>
  478.       ┐╔╝╟└╗ ╗τ┐δ╟╧┐⌐ ┤⌡ ║ⁿ╕Ñ atomic ▒╕╟÷└╗ ╝▒┼├╟╥ ╝÷ └╓┤┘:</p>
  479.  
  480.       <example>
  481.         ./buildconf<br />
  482.         ./configure --with-mpm=worker --enable-nonportable-atomics=yes
  483.       </example>
  484.  
  485.       <p><code>--enable-nonportable-atomics</code> ┐╔╝╟└║ ┤┘└╜░·
  486.       ░░└║ ╟├╖í╞√┐í ┐╡╟Γ└╠ └╓┤┘:</p>
  487.  
  488.       <ul>
  489.  
  490.         <li>SPARC┐í╝¡ Solaris<br />
  491.             ▒Γ║╗└√└╕╖╬ APR└║ Solaris/SPARC┐í╝¡ mutex▒Γ╣▌ atomic└╗
  492.             ╗τ┐δ╟╤┤┘. ▒╫╖»│¬ ▒╕╝║╟╥╢º
  493.             <code>--enable-nonportable-atomics</code>╕ª ╗τ┐δ╟╧╕Θ
  494.             APR└║ ║ⁿ╕Ñ ╟╧╡σ┐■╛ε compare-and-swap└╗ └º╟╤ SPARC
  495.             v8plus ╕φ╖╔╛ε╕ª ╗τ┐δ╟╤┤┘. └╠ ┐╔╝╟└╗ ╗τ┐δ╟╧╕Θ atomic
  496.             ╕φ╖╔└╠ ┤⌡ ╚┐└▓└√└╠┴÷╕╕ (CPU╕ª ┤· ╗τ┐δ╟╧░φ ┤⌡ │⌠└║
  497.             ╡┐▒Γ╚¡░í ░í┤╔╟╧┤┘), ──╞─└╧╟╤ ╜╟╟α╞─└╧└║ UltraSPARC
  498.             ─¿┐í╝¡╕╕ ╜╟╟α╟╥ ╝÷ └╓┤┘.
  499.         </li>
  500.  
  501.         <li>Linux on x86<br />
  502.             ▒Γ║╗└√└╕╖╬ APR└║ ╕«┤¬╜║┐í╝¡ mutex▒Γ╣▌ atomic└╗
  503.             ╗τ┐δ╟╤┤┘. ▒╫╖»│¬ ▒╕╝║╟╥╢º
  504.             <code>--enable-nonportable-atomics</code>╕ª ╗τ┐δ╟╧╕Θ
  505.             APR└║ ║ⁿ╕Ñ ╟╧╡σ┐■╛ε compare-and-swap└╗ └º╟╤ 486
  506.             ╕φ╖╔╛ε╕ª ╗τ┐δ╟╤┤┘. ┤⌡ ╚┐└▓└√└╬ atomic ╕φ╖╔└╠ ░í┤╔╟╧┴÷╕╕,
  507.             ──╞─└╧╟╤ ╜╟╟α╞─└╧└║ 486 └╠╗≤ ─¿┐í╝¡╕╕ (386└║ ╛╚╡╚┤┘)
  508.             ╜╟╟α╟╥ ╝÷ └╓┤┘.
  509.         </li>
  510.  
  511.       </ul>
  512.  
  513.     </section>
  514.  
  515.     <section>
  516.  
  517.       <title>mod_status┐═ ExtendedStatus On</title>
  518.  
  519.       <p>╛╞╞──í╕ª ──╞─└╧╟╥╢º <module>mod_status</module>╕ª ╞≈╟╘╟╧░φ
  520.       ╜╟╟α╟╥╢º <code>ExtendedStatus On</code>└╗ ╝│┴ñ╟╧╕Θ ╛╞╞──í┤┬
  521.       ┐Σ├╗└╗ ╣▐└╗╢º╕╢┤┘ <code>gettimeofday(2)</code>(╚ñ└║ ┐ε┐╡├╝┴ª┐í
  522.       ╡√╢≤ <code>times(2)</code>)╕ª ╡╬╣° ╚ú├Γ╟╧░φ (1.3 └╠└ⁿ┐í┤┬)
  523.       <code>time(2)</code>╡╡ ├▀░í╖╬ ┐⌐╖»╣° ╚ú├Γ╟╤┤┘. ╗≤┼┬ ║╕░φ╝¡┐í
  524.       ╡┐└█╜├░ú└╠ ╟╩┐Σ╟╧▒Γ ╢º╣«└╠┤┘. ├╓╗≤└╟ ╝║┤╔└╗ ╛≥└╕╖┴╕Θ
  525.       (▒Γ║╗░¬└╬) <code>ExtendedStatus off</code>╕ª ╝│┴ñ╟╤┤┘.</p>
  526.  
  527.     </section>
  528.  
  529.     <section>
  530.  
  531.       <title>accept ┴≈╖─╚¡ - ┐⌐╖» ╝╥─╧</title>
  532.  
  533.     <note type="warning"><title>┴╓└╟:</title>
  534.       <p> ╛╞╖í ╣«╝¡┤┬ ╛╞╞──í └Ñ╝¡╣÷ 2.0 ╣÷└ⁿ┐í╝¡ ║»░µ╡╚ │╗┐δ└╗
  535.       ┤π░φ └╓┴÷ ╛╩┤┘. ╛╞┴≈╡╡ └»╚┐╟╤ ┴ñ║╕░í └╓┴÷╕╕, ┴╓└╟╟╪╝¡
  536.       ╗τ┐δ╟╧▒µ ╣┘╢⌡┤┘.</p>
  537.     </note>
  538.  
  539.       <p>└»┤╨╜║ ╝╥─╧ API└╟ ┤▄┴í└╗ ╝│╕φ╟╤┤┘. └Ñ╝¡╣÷░í ┐⌐╖» ╞≈╞«
  540.       ╚ñ└║ ┐⌐╖» ┴╓╝╥╕ª ▒Γ┤┘╕«▒Γ└º╟╪ ┐⌐╖» <directive
  541.       module="mpm_common">Listen</directive>└╗ ╗τ┐δ╟╤┤┘░φ ░í┴ñ╟╧└┌.
  542.       ┐¼░ß└╠ ░í┤╔╟╤┴÷ ░ó ╝╥─╧└╗ ░╦╗τ╟╧▒Γ└º╟╪ ╛╞╞──í┤┬
  543.       <code>select(2)</code>╕ª ╗τ┐δ╟╤┤┘. <code>select(2)</code>┤┬
  544.       ╝╥─╧┐í ▒Γ┤┘╕«░φ └╓┤┬ ┐¼░ß└╠ <em>╛°┤┬┴÷</em> ╚ñ└║ <em>├╓╝╥╟╤
  545.       ╟╤░│</em> └╓┤┬┴÷ ╛╦╖┴┴╪┤┘. ╛╞╞──í┐í┤┬ ┐⌐╖» └┌╜─└╠ └╓░φ,
  546.       ╜¼░φ └╓┤┬ ╕≡╡τ └┌╜─└║ ╡┐╜├┐í ╗⌡╖╬┐ε ┐¼░ß└╗ ░╦╗τ╟╤┤┘. ┐°╖í
  547.       ▒╕╟÷└║ ┤┘└╜░· ║±╜┴╟╧┤┘ (└╠ ┐╣┤┬ ─┌╡σ┐í╝¡ ░í┴«┐└┴÷ ╛╩╛╥┤┘.
  548.       ┤▄┴÷ ╝│╕φ╟╧▒Γ└º╟╤ ┐δ╡╡╖╬ ╕╕╡Θ╛·┤┘.):</p>
  549.  
  550.       <example>
  551.         for (;;) {<br />
  552.         <indent>
  553.           for (;;) {<br />
  554.           <indent>
  555.             fd_set accept_fds;<br />
  556.             <br />
  557.             FD_ZERO (&accept_fds);<br />
  558.             for (i = first_socket; i <= last_socket; ++i) {<br />
  559.             <indent>
  560.               FD_SET (i, &accept_fds);<br />
  561.             </indent>
  562.             }<br />
  563.             rc = select (last_socket+1, &accept_fds, NULL, NULL, NULL);<br />
  564.             if (rc < 1) continue;<br />
  565.             new_connection = -1;<br />
  566.             for (i = first_socket; i <= last_socket; ++i) {<br />
  567.             <indent>
  568.               if (FD_ISSET (i, &accept_fds)) {<br />
  569.               <indent>
  570.                 new_connection = accept (i, NULL, NULL);<br />
  571.                 if (new_connection != -1) break;<br />
  572.               </indent>
  573.               }<br />
  574.             </indent>
  575.             }<br />
  576.             if (new_connection != -1) break;<br />
  577.           </indent>
  578.           }<br />
  579.           process the new_connection;<br />
  580.         </indent>
  581.         }
  582.       </example>
  583.  
  584.       <p>▒╫╖»│¬ └º└╟ ┤▄╝°╟╤ ▒╕╟÷┐í┤┬ ╜╔░ó╟╤ ░φ░Ñ(starvation)
  585.       ╣«┴ª░í └╓┤┘. ┐⌐╖» └┌╜─└╠ ╡┐╜├┐í └╠ ╣▌║╣╣«└╗ ╜╟╟α╟╧╕Θ,
  586.       ┐Σ├╗└╗ ▒Γ┤┘╕«╕τ ╕≡╡╬ <code>select</code>┐í╝¡ ╕╪├ß┤┘. └╠╢º
  587.       ╛ε╢▓ ╝╥─╧┐í ┐Σ├╗└╠ ╟╧│¬╢≤╡╡ ╡Θ╛ε┐└╕Θ ╕≡╡τ └┌╜─└╠ ▒·╛ε│¡┤┘
  588.       (▒·╛ε│¬┤┬ └┌╜─└╟ ░│╝÷┤┬ ┐ε┐╡├╝┴ª┐═ ┼╕└╠╣╓┐í ╡√╢≤ ┤┘╕ú┤┘).
  589.       └╠╡Θ└║ ╕≡╡╬ ┐¼░ß└╗ <code>accept</code>╟╧▒µ ╜├╡╡╟╤┤┘. ▒╫╖»│¬
  590.       (╛╞┴≈╡╡ ╟╤ ┐¼░ß╕╕ ┤δ▒Γ┴▀└╠╢≤╕Θ) ╟╤ └┌╜─╕╕ ╝║░°╟╧░φ, │¬╕╙┴÷┤┬
  591.       <code>accept</code>┐í╝¡ <em>╕╪├ß┤┘.</em> ▒╫╖»╕Θ └╠ └┌╜─╡Θ└║
  592.       ╟╤ ╝╥─╧└╟ ┐Σ├╗╕╕└╗ ╝¡║±╜║╟╧╡╡╖╧ ╣¡┐⌐╝¡, ▒╫ ╝╥─╧└╕╖╬ ╗⌡╖╬┐ε
  593.       ┐Σ├╗└╠ ├µ║╨╚≈ ╡Θ╛ε┐═╝¡ ╕≡╡τ └┌╜─└╗ ▒·┐∩╢º▒ε┴÷ ┴ñ┴÷╟╪└╓┤┘.
  594.       └╠╖▒ ░φ░Ñ ╣«┴ª┤┬ <a
  595.       href="http://bugs.apache.org/index/full/467">PR#467</a>┐í
  596.       ├│└╜ ║╕░φ╡╟╛·┤┘. ├╓╝╥╟╤ ╡╬░í┴÷ ╟╪░ß├Ñ└╠ └╓┤┘.</p>
  597.  
  598.       <p>╟╤░í┴÷┤┬ ╝╥─╧└╗ ┤δ▒Γ╟╧┴÷ ╛╩╡╡╖╧ (non-blocking) ╕╕╡σ┤┬
  599.       ╣µ╣²└╠┤┘. └╠ ░µ┐∞ └┌╜─└╠ <code>accept</code>╕ª ╟╪╡╡ ╕╪├▀┴÷
  600.       ╛╩░φ, ┴∩╜├ ┴°╟α╟╥ ╝÷ └╓┤┘. ▒╫╖»│¬ CPU ╜├░ú└╗ │╢║±╟╤┤┘.
  601.       <code>select</code>┐í╝¡ ╜¼┤┬ └┌╜─└╠ 10░│ └╓░φ, ╗⌡╖╬ ┐¼░ß└╠
  602.       ╟╤░│ ╡Θ╛ε┐╘┤┘░φ ░í┴ñ╟╧└┌. ▒╫╖»╕Θ └╠ └┌╜─┴▀ 9░│┤┬ ▒·╛ε│¬╝¡
  603.       ┐¼░ß└╗ <code>accept</code>╟╧▒µ ╜├╡╡╟╧░φ ╜╟╞╨╟╧╕Θ ╛╞╣½
  604.       └╧╡╡ ╟╧┴÷ ╛╩░φ ┤┘╜├ <code>select</code>╕ª ╣▌║╣╟╤┤┘. ┤┘╜├
  605.       <code>select</code>╖╬ ╡╣╛╞┐├ ╢º▒ε┴÷ ╛ε╢▓ └┌╜─╡╡ ┤┘╕Ñ ╝╥─╧┐í
  606.       ╡Θ╛ε┐┬ ┐Σ├╗└╗ ╝¡║±╜║╟╧┴÷ ╛╩┤┬┤┘. (┤┘┴▀╟┴╖╬╝╝╝¡ ──╟╗┼═┐í╝¡)
  607.       ╜¼┤┬ └┌╜─ ░│╝÷╕╕┼¡ CPU ░│╝÷░í └╓┤┬ ╡σ╣« ░µ┐∞░í ╛╞┤╧╢≤╕Θ
  608.       └╠ ╟╪░ß├Ñ└║ ║░╖╬ ┴┴╛╞║╕└╠┴÷ ╛╩┤┬┤┘.</p>
  609.  
  610.       <p>┤┘╕Ñ ╣µ╣²└║ ╛╞╞──í░í ╗τ┐δ╟╧┤┬ ╣µ╣²└╕╖╬ │╗║╬ ╣▌║╣╣«┐í
  611.       ╟╤ └┌╜─╕╕└╗ ╡Θ┐⌐║╕│╜┤┘. ╣▌║╣╣«└║ ┤┘└╜░· ░░┤┘ (┬≈└╠╕ª
  612.       ░¡┴╢╟▀└╜):</p>
  613.  
  614.       <example>
  615.         for (;;) {<br />
  616.         <indent>
  617.           <strong>accept_mutex_on ();</strong><br />
  618.           for (;;) {<br />
  619.           <indent>
  620.             fd_set accept_fds;<br />
  621.             <br />
  622.             FD_ZERO (&accept_fds);<br />
  623.             for (i = first_socket; i <= last_socket; ++i) {<br />
  624.             <indent>
  625.               FD_SET (i, &accept_fds);<br />
  626.             </indent>
  627.             }<br />
  628.             rc = select (last_socket+1, &accept_fds, NULL, NULL, NULL);<br />
  629.             if (rc < 1) continue;<br />
  630.             new_connection = -1;<br />
  631.             for (i = first_socket; i <= last_socket; ++i) {<br />
  632.             <indent>
  633.               if (FD_ISSET (i, &accept_fds)) {<br />
  634.               <indent>
  635.                 new_connection = accept (i, NULL, NULL);<br />
  636.                 if (new_connection != -1) break;<br />
  637.               </indent>
  638.               }<br />
  639.             </indent>
  640.             }<br />
  641.             if (new_connection != -1) break;<br />
  642.           </indent>
  643.           }<br />
  644.           <strong>accept_mutex_off ();</strong><br />
  645.           process the new_connection;<br />
  646.         </indent>
  647.         }
  648.       </example>
  649.  
  650.       <p><code>accept_mutex_on</code>░· <code>accept_mutex_off</code>
  651.       <a id="serialize" name="serialize">╟╘╝÷</a>┤┬ mutex ╝╝╕╢╞≈╛ε╕ª
  652.       ▒╕╟÷╟╤┤┘. ╟╤╣°┐í ┐└┴≈ ╟╤ └┌╜─╕╕└╠ mutex╕ª ░í┴· ╝÷ └╓┤┘.
  653.       mutex╕ª ▒╕╟÷╟╧┤┬ ╣µ╣²└║ ┐⌐╖»░í┴÷└╠┤┘. ▒╕╟÷ ╣µ╣²└║ (1.3
  654.       └╠└ⁿ) <code>src/conf.h</code>│¬ (1.3░· ▒╫ └╠╚─)
  655.       <code>src/include/ap_config.h</code>┐í ┴ñ└╟╡╟└╓┤┘. ╛ε╢▓
  656.       ╛╞┼░┼╪├─┤┬ └ß▒▌(locking) ╣µ╣²└╗ ╝▒┼├╟╧┴÷ ╛╩▒Γ╢º╣«┐í, └╠╖▒
  657.       ╛╞┼░┼╪├─┐í╝¡ ┐⌐╖» <directive
  658.       module="mpm_common">Listen</directive> ┴÷╜├╛ε╕ª ╗τ┐δ╟╧╕Θ
  659.       └º╟Φ╟╧┤┘.</p>
  660.  
  661.       <p>╜╟╟α╜├ <directive
  662.       module="mpm_common">AcceptMutex</directive> ┴÷╜├╛ε╕ª ╗τ┐δ╟╧┐⌐
  663.       mutex ▒╕╟÷└╗ ║»░µ╟╥ ╝÷ └╓┤┘.</p>
  664.  
  665.       <dl>
  666.         <dt><code>AcceptMutex flock</code></dt>
  667.  
  668.         <dd>
  669.           <p>└╠ ╣µ╣²└║ └ß▒▌╞─└╧└╗ └ß▒╫▒Γ└º╟╪ <code>flock(2)</code>
  670.           ╜├╜║┼█╚ú├Γ└╗ ╗τ┐δ╟╤┤┘ (└ß▒▌╞─└╧ └º─í┤┬ <directive
  671.           module="mpm_common">LockFile</directive> ┴÷╜├╛ε╖╬ ┴÷┴ñ).</p>
  672.         </dd>
  673.  
  674.         <dt><code>AcceptMutex fcntl</code></dt>
  675.  
  676.         <dd>
  677.           <p>└╠ ╣µ╣²└║ └ß▒▌╞─└╧└╗ └ß▒╫▒Γ└º╟╪ <code>fcntl(2)</code>
  678.           ╜├╜║┼█╚ú├Γ└╗ ╗τ┐δ╟╤┤┘ (└ß▒▌╞─└╧ └º─í┤┬ <directive
  679.           module="mpm_common">LockFile</directive> ┴÷╜├╛ε╖╬ ┴÷┴ñ).</p>
  680.         </dd>
  681.  
  682.         <dt><code>AcceptMutex sysvsem</code></dt>
  683.  
  684.         <dd>
  685.           <p>(1.3░· ▒╫ └╠╚─) └╠ ╣µ╣²└╗ SysV╜─ ╝╝╕╢╞≈╛ε╕ª ╗τ┐δ╟╧┐⌐
  686.           mutex╕ª ▒╕╟÷╟╤┤┘. ║╥╟α╚≈╡╡ SysV╜─ ╝╝╕╢╞≈╛ε┤┬ │¬╗█
  687.           ║╬└█┐δ└╠ └╓┤┘. ╟╧│¬┤┬ ╛╞╞──í░í ╝╝╕╢╞≈╛ε╕ª ┴ñ╕«╟╧┴÷
  688.           ╛╩░φ ┴╫└╗ ╝÷ └╓┤┬ ┴í└╠┤┘ (<code>ipcs(8)</code> manpage
  689.           ┬ⁿ░φ). ┤┘╕Ñ ╟╧│¬┤┬ └Ñ╝¡╣÷┐═ ╡┐└╧╟╤ uid╖╬ ╜╟╟α╟╧┤┬
  690.           CGI░í (<em>┴∩,</em> <code>suexec</code>│¬
  691.           <code>cgiwrapper</code>╕ª ╗τ┐δ╟╧┴÷╛╩┤┬ ╟╤ ╕≡╡τ CGI)
  692.           ╝╝╕╢╞≈╛ε API╕ª ╗τ┐δ╟╧┐⌐ ╝¡║±╜║░┼║╬░°░▌└╗ ╟╥ ╝÷ └╓┤┬
  693.           ┴í└╠┤┘. └╠╖▒ └╠└»╢º╣«┐í IRIX╕ª ┴ª┐▄╟╤ ╛╞┼░┼╪├─┐í╝¡
  694.           └╠ ╣µ╣²└╗ ╗τ┐δ╟╧┴÷ ╛╩┤┬┤┘ (┤δ║╬║╨└╟ IRIX ──╟╗┼═┐í╝¡
  695.           ╛╒└╟ ╡╬ ╣µ╣²└║ ┴÷│¬─í░╘ ╣÷░╠┤┘).</p>
  696.         </dd>
  697.  
  698.         <dt><code>AcceptMutex pthread</code></dt>
  699.  
  700.         <dd>
  701.           <p>(1.3░· ▒╫ └╠╚─) └╠ ╣µ╣²└║ POSIX mutex╕ª ╗τ┐δ╟╧▒Γ╢º╣«┐í
  702.           POSIX ╛▓╖╣╡σ ▒╘╛α└╗ ┐╧└ⁿ╚≈ ▒╕╟÷╟╤ ╛╞┼░┼╪├─╢≤╕Θ ╕≡╡╬
  703.           ╗τ┐δ░í┤╔╟╧┴÷╕╕, (2.5 └╠╚─) Solaris┐í╝¡╕╕ ▒╫░═╡╡ ╞»┴ñ
  704.           ▒╕╝║┐í╝¡╕╕ ╡┐└█╟╧┤┬ ╡φ╟╧┤┘. └╠ ╣µ╣²└╗ ╜├╡╡╟╪║╗┤┘╕Θ
  705.           ╝¡╣÷░í ╕╪├τ╝¡ └└┤Σ└╗ ╛╚╟╧┤┬┴÷ ╗∞╞∞║┴╛▀ ╟╤┤┘. ┴ñ└√
  706.           │╗┐δ╕╕ ╝¡║±╜║╟╧┤┬ ╝¡╣÷┤┬ └▀ ╡┐└█╟╧┤┬ ░═ ░░┤┘.</p>
  707.         </dd>
  708.  
  709.         <dt><code>AcceptMutex posixsem</code></dt>
  710.  
  711.         <dd>
  712.           <p>(2.0░· ▒╫ └╠╚─) └╠ ╣µ╣²└║ POSIX ╝╝╕╢╞≈╛ε╕ª ╗τ┐δ╟╤┤┘.
  713.           mutex╕ª ░í┴° ╟┴╖╬╝╝╜║└╟ ╛▓╖╣╡σ░í ┴╫┤┬┤┘╕Θ(segfault)
  714.           ╝╝╕╢╞≈╛ε ╝╥└»▒╟└╠ ╚╕║╣╡╟┴÷ ╛╩╛╞╝¡ └Ñ╝¡╣÷░í ╕╪├ß┤┘.</p>
  715.         </dd>
  716.  
  717.       </dl>
  718.  
  719.       <p>╜├╜║┼█┐í └º ╕±╖╧┐í ╛°┤┬ ┴≈╖─╚¡(serialization) ╣µ╣²└╠
  720.       └╓┤┘╕Θ ▒╫ ╣µ╣²└╗ ╗τ┐δ╟╧┤┬ ─┌╡σ╕ª APR┐í ├▀░í╟╥ ░í─í░í └╓┤┘.</p>
  721.  
  722.       <p>░φ╖┴┤┬ ╟╪║├┴÷╕╕ ▒╕╟÷╟╧┴÷╛╩└║ ┤┘╕Ñ ╣µ╣²└║ ║╬║╨└√└╕╖╬
  723.       ╣▌║╣╣«└╗ ┴≈╖─╚¡╟╧┤┬ ╣µ╣²└╠┤┘. ┴∩, ╟┴╖╬╝╝╝¡╕ª ╕ε░│╕╕ ╡Θ┐⌐║╕│╗┤┬
  724.       ░═└╠┤┘. └╠ ╣µ╣²└║ ┐⌐╖» └┌╜─└╗ ╡┐╜├┐í ╜╟╟α╟╥ ╝÷ └╓╛ε╝¡
  725.       ┴≈╖─╚¡╢º╣«┐í └ⁿ├╝ ┤δ┐¬╞°└╗ ╚░┐δ╟╧┴÷ ╕°╟╧┤┬ ┤┘┴▀╟┴╖╬╝╝╝¡
  726.       ──╟╗┼═┐í╝¡╕╕ ░ⁿ╜╔└╗ ░í┴«║╝ ╝÷ └╓┤┘. ╛╒└╕╖╬ ╗∞╞∞║╝ ║╬║╨└╠┴÷╕╕,
  727.       ╕┼┐∞ ║┤╖─╚¡╡╚ └Ñ╝¡╣÷░í ╚τ╟╧┴÷ ╛╩╛╞╝¡ ┐∞╝▒╝°└º░í │╖┤┘.</p>
  728.  
  729.       <p>├╓╗≤└╟ ╝║┤╔└╗ ╛≥▒Γ└º╟╪╝¡┤┬ ┐⌐╖» <directive
  730.       module="mpm_common">Listen</directive> ╣«└╗ ╗τ┐δ╟╧┴÷ ╛╩┤┬
  731.       ░═└╠ └╠╗≤└√└╠┤┘. ▒╫╖»│¬ ░Φ╝╙ ╝│╕φ╟╤┤┘.</p>
  732.  
  733.     </section>
  734.  
  735.     <section>
  736.  
  737.       <title>accept ┴≈╖─╚¡ - ╝╥─╧ ╟╤░│</title>
  738.  
  739.       <p>╛╒└╟ ╝│╕φ└║ ┤┘┴▀╝╥─╧ ╝¡╣÷┐í┤┬ ┴┴┴÷╕╕, ╝╥─╧└╠ ╟╤░│└╬
  740.       ╝¡╣÷┤┬ ╛ε╢▓░í? ┐¼░ß└╠ ╡╡┬°╟╥╢º▒ε┴÷ ╕≡╡τ └┌╜─└╠
  741.       <code>accept(2)</code>┐í╝¡ ╕╪├τ└╓▒Γ╢º╣«┐í └╠╖╨╗≤ ░░└║
  742.       ╣«┴ª░í ╣▀╗²╟╧┴÷ ╛╩░φ, ░φ░Ñ ╣«┴ª╡╡ ╛°┤┘. ▒╫╖»│¬ ╜╟┴ª╖╬┤┬
  743.       ╛╒┐í╝¡ ╕╗╟╤ ┤δ▒Γ╟╧┴÷ ╛╩┤┬ (non-blocking) ╣µ╣²┐í╝¡ ╣▀╗²╟╧┤┬
  744.       "░°╚╕└ⁿ(spinning)" ╟÷╗≤└╗ ░¿├▀░φ └╓┤┘. ┤δ║╬║╨└╟ TCP ╜║┼├└║
  745.       ┐¼░ß└╠ ╡╡┬°╟╧╕Θ ─┐│╬└╠ <code>accept</code>┐í╝¡ ╕╪├τ└╓┤┬
  746.       ╕≡╡τ └┌╜─└╗ ▒·┐∞╡╡╖╧ ▒╕╟÷╡╟└╓┤┘. ╟┴╖╬╝╝╜║┴▀ ╟╤░│░í ┐¼░ß└╗
  747.       ╛≥░φ ╗τ┐δ└┌┐╡┐¬└╕╖╬ ╡╣╛╞░í░φ, │¬╕╙┴÷┤┬ ─┐│╬┐í╝¡ ░°╚╕└ⁿ╟╧┐⌐
  748.       ┐¼░ß└╠ ╛°└╜└╗ ╣▀░▀╟╧╕Θ ┤┘╜├ └ß└╗ └▄┤┘. ╗τ┐δ└┌┐╡┐¬ ─┌╡σ┐í╝¡┤┬
  749.       └╠╖▒ ░°╚╕└ⁿ└╗ ╛╦ ╝÷ ╛°┴÷╕╕, ║╨╕φ╚≈ ┴╕└τ╟╤┤┘. ▒╫╖í╝¡ ┤┘┴▀╝╥─╧└╟
  750.       ┤δ▒Γ╟╧┴÷ ╛╩┤┬ ╣µ╣²░· ╡┐└╧╟╧░╘ ║╬╟╧╕ª │⌠└╠┤┬ ║╥╟╩┐Σ╟╤ ╟α╡┐└╠
  751.       └╧╛ε│¡┤┘.</p>
  752.  
  753.       <p>▒╫╖í╝¡ ┐∞╕«┤┬ ┐⌐╖» ╛╞┼░┼╪├─┐í╝¡ ╝╥─╧└╠ ╟╤░│└╬ ░µ┐∞┐í╡╡
  754.       ┴≈╖─╚¡╟╧╕Θ ┤⌡ "└▀" ╡┐└█╟╘└╗ ╣▀░▀╟▀┤┘. ▒╫╖í╝¡ ░┼└╟ ┤δ║╬║╨└╟
  755.       ░µ┐∞ ▒Γ║╗└√└╕╖╬ ┴≈╖─╚¡╕ª ╗τ┐δ╟╤┤┘. ╕«┤¬╜║┐í╝¡ (─┐│╬ 2.0.30,
  756.       128Mb ╕▐╕≡╕«┐í ╡α╛≤ Pentium pro) ╜╟╟Φ╟╤ ░ß░· ╝╥─╧ ╟╤░│╕ª
  757.       ┴≈╖─╚¡╟╧╕Θ ╟╧┴÷ ╛╩└║ ░µ┐∞┐í ║±╟╪ ├╩┤τ ┐Σ├╗└╠ 3% ╣╠╕╕
  758.       ┴┘╛ε╡Θ╛·┤┘. ▒╫╖»│¬ ┴≈╖─╚¡╕ª ╟╧┴÷ ╛╩└║ ░µ┐∞ ┐Σ├╗┤τ 100ms
  759.       ┴÷┐¼└╠ ╣▀╗²╟▀┤┘. └╠ ┴÷┐¼└║ ╛╞╕╢╡╡ LAN┐í╝¡ ╣▀╗²╟╧┤┬ ▒Σ
  760.       ┐¼░ß╝▒╢º╣«└╧ ░═└╠┤┘. ╝╥─╧└╠ ╟╤░│└╬ ░µ┐∞ ┴≈╖─╚¡╕ª ╗τ┐δ╟╧┴÷
  761.       ╛╩└╕╖┴╕Θ <code>SINGLE_LISTEN_UNSERIALIZED_ACCEPT</code>╕ª
  762.       ┴ñ└╟╟╤┤┘.</p>
  763.  
  764.     </section>
  765.  
  766.     <section>
  767.  
  768.       <title>Close ┴÷┐¼(lingering)</title>
  769.  
  770.       <p><a
  771.       href="http://www.ics.uci.edu/pub/ietf/http/draft-ietf-http-connection-00.txt">
  772.       draft-ietf-http-connection-00.txt</a> 8└²┐í╝¡ ╝│╕φ╟╧╡φ└╠
  773.       <strong>╛╚┴ñ└√└╬</strong> └Ñ╝¡╣÷░í ╡╟╖┴╕Θ, ┼δ╜┼└╟ ╛τ ╣µ╟Γ└╗
  774.       ╡╢╕│└√└╕╖╬ ┤▌└╗ ╝÷ └╓╛ε╛▀ ╟╤┤┘ (TCP ┐¼░ß└║ ╜╓╣µ╟Γ└╠░φ,
  775.       ╣µ╟Γ└║ ╝¡╖╬ ╡╢╕│└√└╠┤┘). └╠┴í└╗ ┤┘╕Ñ ╝¡╣÷┐í╝¡┤┬ └┌┴╓
  776.       ░ú░·╟╧┴÷╕╕, ╛╞╞──í┤┬ 1.2║╬┼═ ┴ñ╚«╚≈ ▒╕╟÷╟╪┐╘┤┘.</p>
  777.  
  778.       <p>└╠ ▒Γ┤╔└╗ ║╬┴╓└╟╟╧░╘ ╛╞╞──í┐í ├▀░í╟▀└╗╢º ┐⌐╖» └»┤╨╜║
  779.       ╣÷└ⁿ┐í╝¡ ╕╣└║ ╣«┴ª░í ╣▀╗²╟▀┤┘. TCP ▒╘╛α└║
  780.       <code>FIN_WAIT_2</code>┐í ┼╕└╙╛╞┐⌠└╠ └╓┤┘░φ ┴ñ╟╧┴÷ ╛╩╛╥┴÷╕╕,
  781.       ▒▌┴÷╟╧┴÷╡╡ ╛╩╛╥┤┘. ┼╕└╙╛╞┐⌠└╠ ╛°┤┬ ╜├╜║┼█┐í╝¡ ╛╞╞──í 1.2┤┬
  782.       ╕╣└║ ╝╥─╧└╗ ┐╡┐°╚≈ <code>FIN_WAIT_2</code> ╗≤┼┬╖╬ ╕╕╡Θ╛·┤┘.
  783.       ╕╣└║ ░µ┐∞ └╠ ╣«┴ª┤┬ ┴ª└█╗τ░í ┴ª░°╟╧┤┬ ├╓╜┼ TCP/IP ╞╨─í╕ª
  784.       └√┐δ╟╧┐⌐ ╟╪░ß╟╥ ╝÷ └╓┤┘. ▒╫╖»│¬ ┴ª└█╗τ░í ╞╨─í╕ª ╣▀╟Ñ╟╧┴÷
  785.       ╛╩┤┬ ░µ┐∞░í (<em>┴∩,</em> SunOS4 -- ╝╥╜║ ╢≤└╠╝▒╜║░í └╓┤┬
  786.       ╗τ╢≈└║ ┴≈┴ó ╞╨─í╟╥ ╝÷ └╓┴÷╕╕) └╓▒Γ╢º╣«┐í └╠ ▒Γ┤╔└╗ ╗τ┐δ╟╧┴÷
  787.       ╛╩▒Γ╖╬ ░ß┴ñ╟▀┤┘.</p>
  788.  
  789.       <p>╣µ╣²└║ ╡╬░í┴÷┤┘. ╟╧│¬┤┬ ╝╥─╧ ┐╔╝╟ <code>SO_LINGER</code>╕ª
  790.       ╗τ┐δ╟╧┤┬ ╣µ╣²└╠┤┘. ▒╫╖»│¬ ║╥╟α╚≈╡╡ ┤δ║╬║╨└╟ TCP/IP ╜║┼├└║
  791.       └╠ ┐╔╝╟└╗ ┐├╣┘╖╬ ▒╕╟÷╟╧┴÷ ╛╩╛╥┤┘. ┐├╣┘╖╬ ▒╕╟÷╟╤ ╜║┼├┐í╝¡
  792.       ┴╢┬≈╡╡ (<em>┴∩,</em> ╕«┤¬╜║ 2.0.31) └╠ ╣µ╣²└║ ┤┘└╜ ╣µ╣²║╕┤┘
  793.       ┤⌡ cpu╕ª └Γ╛╞╕╘┤┬┤┘.</p>
  794.  
  795.       <p>╛╞╞──í┤┬ ║╕┼δ (<code>http_main.c</code>┐í └╓┤┬)
  796.       <code>lingering_close</code>╢≤┤┬ ╟╘╝÷╕ª ╗τ┐δ╟╤┤┘. └╠ ╟╘╝÷┤┬
  797.       ┤δ├µ ┤┘└╜░· ░░┤┘:</p>
  798.  
  799.       <example>
  800.         void lingering_close (int s)<br />
  801.         {<br />
  802.         <indent>
  803.           char junk_buffer[2048];<br />
  804.           <br />
  805.           /* shutdown the sending side */<br />
  806.           shutdown (s, 1);<br />
  807.           <br />
  808.           signal (SIGALRM, lingering_death);<br />
  809.           alarm (30);<br />
  810.           <br />
  811.           for (;;) {<br />
  812.           <indent>
  813.             select (s for reading, 2 second timeout);<br />
  814.             if (error) break;<br />
  815.             if (s is ready for reading) {<br />
  816.             <indent>
  817.               if (read (s, junk_buffer, sizeof (junk_buffer)) <= 0) {<br />
  818.               <indent>
  819.                 break;<br />
  820.               </indent>
  821.               }<br />
  822.               /* just toss away whatever is here */<br />
  823.             </indent>
  824.             }<br />
  825.           </indent>
  826.           }<br />
  827.           <br />
  828.           close (s);<br />
  829.         </indent>
  830.         }
  831.       </example>
  832.  
  833.       <p>└╠ ─┌╡σ┤┬ ┐¼░ß└╗ ┤▌└╗╢º ┤⌡ CPU╕ª ╗τ┐δ╟╧┴÷╕╕, ╛╚┴ñ└√└╬
  834.       ▒╕╟÷└╗ └º╟╪ ╟╩┐Σ╟╧┤┘. HTTP/1.1└╠ ┤⌡ │╬╕« ╞█┴÷░φ ╕≡╡τ ┐¼░ß└╗
  835.       └»┴÷╟╤┤┘╕Θ(persistent), ┐¼░ß└╗ ╣▐┤┬ ║±┐δ└║ ┐⌐╖» ┐Σ├╗└╗
  836.       ├│╕«╟╧╕Θ╝¡ ╗≤╝Γ╡╔ ░═└╠┤┘. └º╟Φ╟╧░╘╡╡
  837.       <code>NO_LINGCLOSE</code>╕ª ┴ñ└╟╟╧┐⌐ └╠ ▒Γ┤╔└╗ ╗τ┐δ╟╧┴÷
  838.       ╛╩└╗ ╝÷ └╓┴÷╕╕, └²┤δ╖╬ ▒╟╟╧┴÷ ╛╩┤┬┤┘. ╞»╚≈ HTTP/1.1
  839.       ╞─└╠╟┴╢≤└╬ <transnote>┐¼░ß└»┴÷ ╗≤┼┬┐í╝¡ └└┤Σ└╗ ▒Γ┤┘╕«┴÷
  840.       ╛╩░φ ┐⌐╖» ┐Σ├╗└╗ ║╕│╗┤┬ ▒Γ╝·</transnote> ┐¼░ß└»┴÷┐í┤┬
  841.       <code>lingering_close</code>░í ╟╩╝÷└√└╠┤┘ (▒╫╕«░φ <a
  842.       href="http://www.w3.org/Protocols/HTTP/Performance/Pipeline.html">
  843.       ╞─└╠╟┴╢≤└╬ ┐¼░ß└╠ ┤⌡ ║ⁿ╕ú▒Γ╢º╣«┐í</a> ╗τ┐δ╟╧▒µ ╣┘╢÷ ░═└╠┤┘).</p>
  844.  
  845.     </section>
  846.  
  847.     <section>
  848.  
  849.       <title>Scoreboard ╞─└╧</title>
  850.  
  851.       <p>╛╞╞──í└╟ ║╬╕≡┐═ └┌╜─└║ scoreboard╢≤┤┬ ░═└╗ ┼δ╟╪ ╝¡╖╬
  852.       ┼δ╜┼╟╤┤┘. └╠╗≤└√└╕╖╬┤┬ scoreboard╕ª ░°└»╕▐╕≡╕«╖╬ ▒╕╟÷╟╪╛▀
  853.       ╟╤┤┘. ┐∞╕« ░│╣▀└┌░í ╟╪┤τ ┐ε┐╡├╝┴ª┐í ┴ó▒┘╟╥ ╝÷ └╓░┼│¬ ╗≤╝╝╟╤
  854.       ╞≈╞├ ░ß░·╕ª ╣▐└║ ░µ┐∞ ║╕┼δ ░°└»╕▐╕≡╕«╕ª ╗τ┐δ╟╧┐⌐ ▒╕╟÷╟╤┤┘.
  855.       │¬╕╙┴÷┤┬ ╡≡╜║┼⌐┐í └╓┤┬ ╞─└╧└╗ ╗τ┐δ╟╧┐⌐ ▒╕╟÷╟╤┤┘. ╡≡╜║┼⌐┐í
  856.       └╓┤┬ ╞─└╧└║ ┤└╕«░φ ╜┼╖┌╡╡░í ╢│╛ε┴°┤┘ (▒Γ┤╔╡╡ ┤⌡ └√┤┘).
  857.       <code>src/main/conf.h</code> ╞─└╧┐í╝¡ ╗τ┐δ╟╧┤┬ ╛╞┼░┼╪├─╕ª
  858.       ├ú╛╞╝¡ <code>USE_MMAP_SCOREBOARD</code> ╚ñ└║
  859.       <code>USE_SHMGET_SCOREBOARD</code>└╬┴÷ ╚«└╬╟╤┤┘. ╡╤┴▀
  860.       ╟╧│¬╕ª (░ó░ó ╟╘▓▓ ╗τ┐δ╟╥ <code>HAVE_MMAP</code>└╠│¬
  861.       <code>HAVE_SHMGET</code>╡╡ ░░└╠) ┴ñ└╟╟╧╕Θ ░°└»╕▐╕≡╕« ─┌╡σ╕ª
  862.       ╗τ┐δ╟╤┤┘. ╜├╜║┼█└╠ ┤┘╕Ñ ┴╛╖∙└╟ ░°└»╕▐╕≡╕«╕ª ╗τ┐δ╟╤┤┘╕Θ
  863.       <code>src/main/http_main.c</code> ╞─└╧└╗ ╝÷┴ñ╟╧┐⌐ ╛╞╞──í┐í╝¡
  864.       ░°└»╕▐╕≡╕«╕ª ╗τ┐δ╟╥ ╝÷ └╓╡╡╖╧ ╚┼(hook)└╗ ├▀░í╟╧╢≤. (╢╟╟╤
  865.       ╞╨─í╕ª ┐∞╕«┐í░╘ ║╕│╗┴╓▒µ ╣┘╢⌡┤┘.)</p>
  866.  
  867.       <note>┐¬╗τ└√ ╝│╕φ: ╛╞╞──í└╟ ╕«┤¬╜║ ╣÷└ⁿ└║ ╛╞╞──í 1.2 ╣÷└ⁿ║╬┼═
  868.       ░°└»╕▐╕≡╕«╕ª ╗τ┐δ╟╧▒Γ ╜├└█╟▀┤┘. ╕«┤¬╜║┐í╝¡ ├╩▒Γ ╛╞╞──í
  869.       ╣÷└ⁿ└╠ ┤└╕«░φ ╜┼╖┌╡╡░í ╢│╛ε┴│▒Γ ╢º╣«└╠┤┘.</note>
  870.  
  871.     </section>
  872.  
  873.     <section>
  874.  
  875.       <title>DYNAMIC_MODULE_LIMIT</title>
  876.  
  877.       <p>╕≡╡Γ└╗ ╡┐└√└╕╖╬ └╨╛ε╡Θ└╠┴÷ ╛╩┤┬┤┘╕Θ (░í┤╔╟╤ ┴╢▒▌└╠╢≤╡╡
  878.       ╝║┤╔└╗ │⌠└╠▒Γ└º╟╪ └╠ ▒█└╗ └╨┤┬┤┘╕Θ ╛╞╕╢╡╡ ╕≡╡Γ└╗ ╡┐└√└╕╖╬
  879.       └╨╛ε╡Θ└╠┴÷ ╛╩└╗ ░═└╠┤┘), ╝¡╣÷╕ª ──╞─└╧╟╥╢º
  880.       <code>-DDYNAMIC_MODULE_LIMIT=0</code>└╗ ├▀░í╟╤┤┘. ▒╫╖»╕Θ
  881.       ╕≡╡Γ└╗ ╡┐└√└╕╖╬ └╨╛ε╡Θ└╠▒Γ└º╟╪ ╟╥┤τ╟╧┤┬ ╕▐╕≡╕«╕ª └²╛α╟╤┤┘.</p>
  882.  
  883.     </section>
  884.  
  885.   </section>
  886.  
  887.   <section id="trace">
  888.  
  889.     <title>║╬╖╧: ╜├╜║┼█╚ú├Γ ▒Γ╖╧└╗ └┌╝╝╚≈ ║╨╝«╟╧▒Γ</title>
  890.  
  891.     <p>┤┘└╜└║ Solaris 8┐í╝¡ worker MPM└╗ ╗τ┐δ╟╤ ╛╞╞──í 2.0.38└╟
  892.     ╜├╜║┼█╚ú├Γ ▒Γ╖╧(trace)└╠┤┘. ╛╞╖í ╕φ╖╔╛ε╕ª ╗τ┐δ╟╧┐⌐ ▒Γ╖╧└╗
  893.     ╛≥╛·┤┘:</p>
  894.  
  895.     <example>
  896.       truss -l -p <var>httpd_child_pid</var>.
  897.     </example>
  898.  
  899.     <p><code>-l</code> ┐╔╝╟└╗ ╗τ┐δ╟╧╕Θ truss┤┬ ╜├╜║┼█╚ú├Γ└╗
  900.     ╟╧┤┬ LWP (lightweight process, ░µ╖«▒▐ ╟┴╖╬╝╝╜║--Solaris└╟
  901.     ─┐│╬╝÷┴╪ ╛▓╖╣╡σ) ID╕ª ░░└╠ ▒Γ╖╧╟╤┤┘.</p>
  902.  
  903.     <p>┤┘╕Ñ ╜├╜║┼█┐í┤┬ <code>strace</code>, <code>ktrace</code>,
  904.     <code>par</code> ░░└║ ╜├╜║┼█╚ú├Γ ├▀└√ ╡╡▒╕░í └╓┤┘. ░ß░·┤┬
  905.     ║±╜┴╟╧┤┘.</p>
  906.  
  907.     <p>┼¼╢≤└╠╛≡╞«┤┬ └Ñ╝¡╣÷┐í░╘ ┼⌐▒Γ░í 10KB└╬ ┴ñ└√ ╞─└╧└╗ ┐Σ├╗╟╤┤┘.
  908.     ┴ñ└√└╬ ╞─└╧└╗ ┐Σ├╗╟╧┴÷ ╛╩░┼│¬ │╗┐δ╟∙╗≤╟╧┤┬ ┐Σ├╗└╗ ╟╤ ░µ┐∞
  909.     ▒Γ╖╧└╠ ╕┼┐∞ ┤┘╕ú┤┘ (╢º╖╬┤┬ ╕┼┐∞ ╛╦╛╞║╕▒Γ ╚√╡Θ┤┘).</p>
  910.  
  911.     <example>
  912. <pre>/67:    accept(3, 0x00200BEC, 0x00200C0C, 1) (sleeping...)
  913. /67:    accept(3, 0x00200BEC, 0x00200C0C, 1)            = 9</pre>
  914.     </example>
  915.  
  916.     <p>└º┐í╝¡ ┐¼░ß┤δ▒Γ(listener) ╛▓╖╣╡σ░í LWP #67┐í╝¡ ╜╟╟α╡╩└╗
  917.     ╛╦ ╝÷ └╓┤┘.</p>
  918.  
  919.     <note><code>accept(2)</code> ┴≈╖─╚¡╕ª ╗τ┐δ╟╧┴÷ ╛╩└╜└╗ ┴╓╕±╟╧╢≤.
  920.     ┐⌐╖» ╞≈╞«╕ª ▒Γ┤┘╕«┴÷╛╩┤┬ ░µ┐∞ └╠ ╟├╖í╞√└╟ worker MPM└║
  921.     ▒Γ║╗└√└╕╖╬ ┴≈╖─╚¡╟╧┴÷ ╛╩└║ accept╕ª ╗τ┐δ╟╤┤┘.</note>
  922.  
  923.     <example>
  924. <pre>/65:    lwp_park(0x00000000, 0)                         = 0
  925. /67:    lwp_unpark(65, 1)                               = 0</pre>
  926.     </example>
  927.  
  928.     <p>┐¼░ß└║ ╣▐╛╞╡Θ└╠░φ(accept) ┐¼░ß┤δ▒Γ ╛▓╖╣╡σ┤┬
  929.     worker ╛▓╖╣╡σ╕ª ▒·┐÷╝¡ ┐Σ├╗└╗ ├│╕«╟╧░╘ ╟╤┤┘. ╛╞╖í ▒Γ╖╧┐í╝¡
  930.     ┐Σ├╗└╗ ├│╕«╟╧┤┬ worker ╛▓╖╣╡σ░í LWP #65└╙└╗ ╛╦ ╝÷ └╓┤┘.</p>
  931.  
  932.     <example>
  933. <pre>/65:    getsockname(9, 0x00200BA4, 0x00200BC4, 1)       = 0</pre>
  934.     </example>
  935.  
  936.     <p>░í╗≤╚ú╜║╞«╕ª ▒╕╟÷╟╧▒Γ└º╟╪ ╛╞╞──í┤┬ ┐¼░ß└╗ ╣▐╛╞╡Θ└╬
  937.     ┴÷┐¬(local) ╝╥─╧ ┴╓╝╥╕ª ╛╦╛╞╛▀ ╟╤┤┘. (░í╗≤╚ú╜║╞«╕ª ╗τ┐δ╟╧┴÷
  938.     ╛╩░┼│¬ <directive module="mpm_common">Listen</directive>
  939.     ┴÷╜├╛ε┐í ┐═└╧╡σ─½╡σ ┴╓╝╥╕ª ╗τ┐δ╟╧┴÷ ╛╩└║ ░µ┐∞ ╡ε) ╕╣└║ ░µ┐∞
  940.     └╠ ╚ú├Γ└╗ ╛°╛┘ ╝÷ └╓┤┘. ▒╫╖»│¬ ╛╞┴≈ └╠╖▒ ├╓└√╚¡ └█╛≈└╠
  941.     ╛╚╡╟└╓┤┘. </p>
  942.  
  943.     <example>
  944. <pre>/65:    brk(0x002170E8)                                 = 0
  945. /65:    brk(0x002190E8)                                 = 0</pre>
  946.     </example>
  947.  
  948.     <p><code>brk(2)</code> ╚ú├Γ└║ ╚ⁿ(heap)┐í╝¡ ╕▐╕≡╕«╕ª ╟╥┤τ╟╤┤┘.
  949.     └Ñ╝¡╣÷┤┬ ┤δ║╬║╨└╟ ┐Σ├╗ ├│╕«╜├ └┌├╝ ╕▐╕≡╕«
  950.     ╟╥┤τ└┌(<code>apr_pool</code>░· <code>apr_bucket_alloc</code>)╕ª
  951.     ╗τ┐δ╟╧▒Γ╢º╣«┐í ╜├╜║┼█╚ú├Γ ▒Γ╖╧┐í╝¡ └╠ ╜├╜║┼█╚ú├Γ└╗ ║╕▒Γ░í
  952.     ╡σ╣░┤┘. └╠ ▒Γ╖╧┐í╝¡ └Ñ╝¡╣÷┤┬ ╜├└█╟╧└┌╕╢└┌ └┌├╝ ╕▐╕≡╕« ╟╥┤τ└┌░í
  953.     ╗τ┐δ╟╥ ╕▐╕≡╕«║φ╖╧└╗ ╛≥▒Γ└º╟╪ <code>malloc(3)</code>└╗ ╚ú├Γ╟╤┤┘.</p>
  954.  
  955.     <example>
  956. <pre>/65:    fcntl(9, F_GETFL, 0x00000000)                   = 2
  957. /65:    fstat64(9, 0xFAF7B818)                          = 0
  958. /65:    getsockopt(9, 65535, 8192, 0xFAF7B918, 0xFAF7B910, 2190656) = 0
  959. /65:    fstat64(9, 0xFAF7B818)                          = 0
  960. /65:    getsockopt(9, 65535, 8192, 0xFAF7B918, 0xFAF7B914, 2190656) = 0
  961. /65:    setsockopt(9, 65535, 8192, 0xFAF7B918, 4, 2190656) = 0
  962. /65:    fcntl(9, F_SETFL, 0x00000082)                   = 0</pre>
  963.     </example>
  964.  
  965.     <p>┤┘└╜ worker ╛▓╖╣╡σ┤┬ ┼¼╢≤└╠╛≡╞«└╟ ┐¼░ß(╞─└╧▒Γ╝·└┌ 9)└╗
  966.     ┤δ▒Γ╛╚╟╘(non-blocking) ╗≤┼┬╖╬ ╣┘▓█┤┘. <code>setsockopt(2)</code>┐═
  967.     <code>getsockopt(2)</code> ╚ú├Γ└║ Solaris└╟ libc░í ╝╥─╧┐í
  968.     ┤δ╟╤ <code>fcntl(2)</code>└╗ ╛ε╢╗░╘ ├│╕«╟╧┤┬┴÷ ║╕┐⌐┴╪┤┘.</p>
  969.  
  970.     <example>
  971. <pre>/65:    read(9, " G E T   / 1 0 k . h t m".., 8000)     = 97</pre>
  972.     </example>
  973.  
  974.     <p>worker ╛▓╖╣╡σ┤┬ ┼¼╢≤└╠╛≡╞«╖╬ ║╬┼═ ┐Σ├╗└╗ └╨┤┬┤┘.</p>
  975.  
  976.     <example>
  977. <pre>/65:    stat("/var/httpd/apache/httpd-8999/htdocs/10k.html", 0xFAF7B978) = 0
  978. /65:    open("/var/httpd/apache/httpd-8999/htdocs/10k.html", O_RDONLY) = 10</pre>
  979.     </example>
  980.  
  981.     <p>└Ñ╝¡╣÷ ╝│┴ñ└║ <code>Options FollowSymLinks</code>┐═
  982.     <code>AllowOverride None</code>└╠┤┘. ▒╫╖í╝¡ ┐Σ├╗╟╤ ╞─└╧░µ╖╬└╟
  983.     ░ó ╡≡╖║┼Σ╕«┐í ┤δ╟╪ <code>lstat(2)</code>╟╧░┼│¬
  984.     <code>.htaccess</code> ╞─└╧└╗ ░╦╗τ╟╥ ╟╩┐Σ░í ╛°┤┘. ╞─└╧└╗
  985.     ░╦╗τ╟╧▒Γ└º╟╪, 1) ╞─└╧└╠ └╓┤┬┴÷, 2) ╡≡╖║┼Σ╕«░í ╛╞┤╤ └╧╣▌╞─└╧└╬┴÷,
  986.     <code>stat(2)</code> ╚ú├Γ╕╕ ╟╧╕Θ ╡╚┤┘.</p>
  987.  
  988.     <example>
  989. <pre>/65:    sendfilev(0, 9, 0x00200F90, 2, 0xFAF7B53C)      = 10269</pre>
  990.     </example>
  991.  
  992.     <p>└╠ ░µ┐∞ └Ñ╝¡╣÷┤┬ ╟╤╣°└╟ <code>sendfilev(2)</code> ╜├╜║┼█╚ú├Γ╖╬
  993.     HTTP └└┤Σ╟∞┤⌡┐═ ┐Σ├╗╟╤ ╞─└╧└╗ └ⁿ╝█╟╥ ╝÷ └╓┤┘. Sendfile ┴÷┐°┐⌐║╬┤┬
  994.     ┐ε┐╡├╝┴ª╕╢┤┘ ┤┘╕ú┤┘. ┤┘╕Ñ ╜├╜║┼█└╠╢≤╕Θ <code>sendfile(2)</code>└╗
  995.     ╚ú├Γ╟╧▒Γ └ⁿ┐í ╟∞┤⌡╕ª ║╕│╗▒Γ└º╟╪ <code>write(2)</code>│¬
  996.     <code>writev(2)</code> ╚ú├Γ└╗ ╟╤┤┘.</p>
  997.  
  998.     <example>
  999. <pre>/65:    write(4, " 1 2 7 . 0 . 0 . 1   -  ".., 78)      = 78</pre>
  1000.     </example>
  1001.  
  1002.     <p><code>write(2)</code> ╚ú├Γ└║ ┴ó▒┘╖╬▒╫(access log)┐í ┐Σ├╗└╗
  1003.     ▒Γ╖╧╟╤┤┘. └╠ ▒Γ╖╧┐í <code>time(2)</code> ╚ú├Γ└╠ ╛°└╜└╗ ┴╓╕±╟╧╢≤.
  1004.     ╛╞╞──í 1.3░· ┤▐╕« ╛╞╞──í 2.0└║ ╜├░ú└╗ ╛╦▒Γ└º╟╪
  1005.     <code>gettimeofday(3)</code>╕ª ╗τ┐δ╟╤┤┘.
  1006.     <code>gettimeofday</code>╕ª ├╓└√╚¡╟╤ ╕«┤¬╜║┐═ Solaris ░░└║
  1007.     ╕ε╕ε ┐ε┐╡├╝┴ª┐í╝¡┤┬ └╧╣▌└√└╬ ╜├╜║┼█╚ú├Γ ║╬┤π└╠ ╛°┤┘.</p>
  1008.  
  1009.     <example>
  1010. <pre>/65:    shutdown(9, 1, 1)                               = 0
  1011. /65:    poll(0xFAF7B980, 1, 2000)                       = 1
  1012. /65:    read(9, 0xFAF7BC20, 512)                        = 0
  1013. /65:    close(9)                                        = 0</pre>
  1014.     </example>
  1015.  
  1016.     <p>worker ╛▓╖╣╡σ┤┬ ┐¼░ß└╗ ┴÷┐¼┤▌▒Γ(lingering close)╟╤┤┘.</p>
  1017.  
  1018.     <example>
  1019. <pre>/65:    close(10)                                       = 0
  1020. /65:    lwp_park(0x00000000, 0)         (sleeping...)</pre>
  1021.     </example>
  1022.  
  1023.     <p>╕╢┴÷╕╖└╕╖╬ worker ╛▓╖╣╡σ┤┬ ╣µ▒▌ └ⁿ╝█╟╤ ╞─└╧└╗ ┤▌░φ,
  1024.     ┐¼░ß┤δ▒Γ(listener) ╛▓╖╣╡σ░í ┤┘╕Ñ ┐¼░ß└╗ ╟╥┤τ╟╥ ╢º▒ε┴÷
  1025.     ┴ñ┴÷╟╤┤┘.</p>
  1026.  
  1027.     <example>
  1028. <pre>/67:    accept(3, 0x001FEB74, 0x001FEB94, 1) (sleeping...)</pre>
  1029.     </example>
  1030.  
  1031.     <p>▒╫╡┐╛╚ ┐¼░ß┤δ▒Γ ╛▓╖╣╡σ┤┬ ┐¼░ß└╗ (╕≡╡τ worker░í └█╛≈┴▀└╠╕Θ
  1032.     ┐¼░ß┤δ▒Γ ╛▓╖╣╡σ╕ª ╕╪├▀┤┬ worker MPM└╟ ╚σ╕º┴ª╛ε ▒Γ┤╔┐í ╡√╢≤)
  1033.     worker ╛▓╖╣╡σ┐í ╟╥┤τ╟╧└┌╕╢└┌ ┤┘╕Ñ ┐¼░ß└╗ ╣▐╛╞╡Θ└╧ ╝÷ └╓┤┘.
  1034.     └╠ ▒Γ╖╧┐í┤┬ │¬┐└┴÷ ╛╩┴÷╕╕, worker ╛▓╖╣╡σ░í ╣µ▒▌ ╣▐└║ ┐¼░ß└╗
  1035.     ├│╕«╟╧┤┬ ╡┐╛╚ ┤┘└╜ <code>accept(2)</code>░í (┐Σ├╗└╠ ╕┼┐∞
  1036.     ╕╣└║ ░µ┐∞ ╟╫╗≤) └╧╛ε│» ╝÷ └╓┤┘.</p>
  1037.  
  1038.   </section>
  1039.  
  1040. </manualpage>
  1041.  
  1042.