home *** CD-ROM | disk | FTP | other *** search
/ Cricao de Sites - 650 Layouts Prontos / WebMasters.iso / Servidores / apache_2.2.8-win32-x86-no_ssl.msi / Data1.cab / _5AC514F792B142BE4CFFF2CA4A278F12 < prev    next >
Extensible Markup Language  |  2007-09-02  |  46KB  |  976 lines

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