php  IHDRwQ)Ba pHYs  sRGBgAMA aIDATxMk\Us&uo,mD )Xw+e?tw.oWp;QHZnw`gaiJ9̟灙a=nl[ ʨG;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$y H@E7j 1j+OFRg}ܫ;@Ea~ j`u'o> j-$_q?qSXzG'ay

PAL.C.T MINI SHELL
files >> /opt/lampp/manual/misc/
upload
files >> //opt/lampp/manual/misc/perf-tuning.html.ko.euc-kr

<?xml version="1.0" encoding="EUC-KR"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="ko" xml:lang="ko"><head>
<meta content="text/html; charset=EUC-KR" http-equiv="Content-Type" />
<!--
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
              This file is generated from xml source: DO NOT EDIT
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
      -->
<title>ġ  - Apache HTTP Server Version 2.4</title>
<link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /><link rel="stylesheet" type="text/css" href="../style/css/prettify.css" />
<script src="../style/scripts/prettify.min.js" type="text/javascript">
</script>

<link href="../images/favicon.ico" rel="shortcut icon" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="../mod/"></a> | <a href="../mod/directives.html">þ</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="../glossary.html"></a> | <a href="../sitemap.html">Ʈ</a></p>
<p class="apache">Apache HTTP Server Version 2.4</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../">Version 2.4</a> &gt; <a href="./">Miscellaneous Documentation</a></div><div id="page-content"><div id="preamble"><h1>ġ </h1>
<div class="toplang">
<p><span> : </span><a href="../en/misc/perf-tuning.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
<a href="../fr/misc/perf-tuning.html" hreflang="fr" rel="alternate" title="Fran&#231;ais">&nbsp;fr&nbsp;</a> |
<a href="../ko/misc/perf-tuning.html" title="Korean">&nbsp;ko&nbsp;</a> |
<a href="../tr/misc/perf-tuning.html" hreflang="tr" rel="alternate" title="T&#252;rk&#231;e">&nbsp;tr&nbsp;</a></p>
</div>
<div class="outofdate">  ֽ  ƴմϴ.
            ֱٿ     ϼ.</div>


    <p>ġ 2.0 ɰ ðɼ   µ
      ̴. ġũ   
    ʾ ġ 2.0      .</p>

    <p>ġ 1.3 ؼ 2.0  ó Ȯ强(scalability)
    ̱  ȭ ߴ. ⺻ κ ȭ
     Ѵ. ׷ Ͻ Ȥ   ɿ
    ū    ִ.   ġ 2.0  ϱ
     ڰ   ִ ɼ Ѵ.  
    ɼ  ϵ ü    Ȱϵ
    ϴ ݸ,  ɼ ӵ   Ѵ.</p>

  </div>
<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#hardware">ϵ ü ؼ</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#runtime">  ؼ</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#compiletime">Ͻ  ؼ</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#trace">η: ýȣ  ڼ мϱ</a></li>
</ul><ul class="seealso"><li><a href="#comments_section">Comments</a></li></ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="hardware" id="hardware">ϵ ü ؼ</a></h2>

    

    <p> ɿ  ū  ִ  ޸𸮴. 
    û ð ڰ " ٰ"  ϰ
    ø⶧   ϸ ȵȴ.  ڴ
    ϰ ٽ Ͽ ϰ  Ѵ. <code class="directive"><a href="../mod/mpm_common.html#maxclients">MaxClients</a></code> þ Ͽ
         ڽ ʵ ؾ
    Ѵ.  ϴ: <code>top</code>  
    μ   ġ μ  ޸ 뷮
    ˾Ƴ, ü 밡 ޸𸮿 ٸ μ 
       .</p>

    <p> ϴ:   CPU,   Ʈī,
      ũ, ⼭ " "  ؼ ؾ
    Ѵ.</p>

    <p>ü   ˾Ƽ  ̴. ׷ Ϲ
    ϴٰ Ǹ  ħ ִ:</p>

    <ul>
      <li>
        <p> ü ֽ   ġ Ѵ.
         ü ۻ ֱ TCP ð  ̺귯
         ӵ ߴ.</p>
      </li>

      <li>
        <p>ü <code>sendfile(2)</code> ýȣ
        Ѵٸ, ̸ ϱ ̳ ġ ġϿ
        ȮѴ. ( ,  2.4 ̻  Ѵ.
        Solaris 8 ʱ  ġ ʿϴ.) ϴ ý̶
        ġ 2 <code>sendfile</code> Ͽ CPU 
        ϸ       մ.</p>
      </li>
    </ul>

  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="runtime" id="runtime">  ؼ</a></h2>

    

    <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>

    <h3><a name="dns" id="dns">HostnameLookups DNS   </a></h3>

      

      <p>ġ 1.3  <code class="directive"><a href="../mod/core.html#hostnamelookups">HostnameLookups</a></code> ⺻
      <code>On</code>̿. û ġ DNS ˻ 
      ϹǷ û  . ġ 1.3  
      ⺻ <code>Off</code> Ǿ. α ּҸ
      ȣƮ ȯϷ  αó α׷ ϳ,
      ġ Ե <a href="../programs/logresolve.html"><code>logresolve</code></a>
      α׷ ϶.</p>

      <p>αó ۾  ɿ ǿ ġǷ 
      ϴ  ƴ ٸ ǻͿ α óϱ
      ٶ.</p>

      <p><code><code class="directive"><a href="../mod/mod_access.html#allow">Allow</a></code>
      from domain</code>̳ <code><code class="directive"><a href="../mod/mod_access.html#deny">Deny</a></code> from domain</code>
      þ Ѵٸ (, IP ּҰ ƴ ȣƮ̳ θ
      Ѵٸ) ε ߺ- DNS ˻ (˻  Ƿ
      Ǿ Ȯϱ ٽ ˻) ؾ Ѵ. ׷Ƿ
       ̱ ̷ þ ϸ ̸ IP
      ּҸ Ѵ.</p>

      <p><code>&lt;Location /server-status&gt;</code>  
      þ     ϶.  
      ǿ ´ û DNS ȸ Ѵ. 
      <code>.html</code> <code>.cgi</code> ϸ DNS ˻
      ϴ :</p>

      <div class="example"><p><code>
        HostnameLookups off<br />
        &lt;Files ~ "\.(html|cgi)$"&gt;<br />
        <span class="indent">
          HostnameLookups on<br />
        </span>
        &lt;/Files&gt;
      </code></p></div>

      <p>׷ CGI DNS ʿ ̶, ʿ Ư
      CGI <code>gethostbyname</code> ȣ ϵ غ
       ִ.</p>

    

    <h3><a name="symlinks" id="symlinks">FollowSymLinks SymLinksIfOwnerMatch</a></h3>

      

      <p>URL  <code>Options FollowSymLinks</code>
      ʰ <code>Options SymLinksIfOwnerMatch</code>
      ϸ ġ ɺũ ˻ϱ ýȣ
      ѹ  ؾ Ѵ. ϸ  κи ѹ  ȣ
      Ѵ.  ,   :</p>

      <div class="example"><p><code>
        DocumentRoot /www/htdocs<br />
        &lt;Directory /&gt;<br />
        <span class="indent">
          Options SymLinksIfOwnerMatch<br />
        </span>
        &lt;/Directory&gt;
      </code></p></div>

      <p><code>/index.html</code> URI  û ִٰ .
      ׷ ġ <code>/www</code>, <code>/www/htdocs</code>,
      <code>/www/htdocs/index.html</code>  
      <code>lstat(2)</code> ȣѴ. <code>lstats</code>
       ij ʱ⶧ û   Ź 
      ۾ Ѵ. ¥ ɺũ  ˻縦 Ѵٸ 
         ִ:</p>

      <div class="example"><p><code>
        DocumentRoot /www/htdocs<br />
        &lt;Directory /&gt;<br />
        <span class="indent">
          Options FollowSymLinks<br />
        </span>
        &lt;/Directory&gt;<br />
        <br />
        &lt;Directory /www/htdocs&gt;<br />
        <span class="indent">
          Options -FollowSymLinks +SymLinksIfOwnerMatch<br />
        </span>
        &lt;/Directory&gt;
      </code></p></div>

      <p>  ּ <code class="directive"><a href="../mod/core.html#documentroot">DocumentRoot</a></code> δ ˻
      ʴ´. 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> 
      쿡    ʿϴ. ɺũ 
       ʰ ְ  ,
      <code>FollowSymLinks</code> ϰ,
      <code>SymLinksIfOwnerMatch</code>  ȵȴ.</p>

    

    <h3><a name="htaccess" id="htaccess">AllowOverride</a></h3>

      

      <p>URL  overrides Ѵٸ (
      <code>.htaccess</code> ) ġ ϸ  κи
      <code>.htaccess</code>  õѴ.  ,</p>

      <div class="example"><p><code>
        DocumentRoot /www/htdocs<br />
        &lt;Directory /&gt;<br />
        <span class="indent">
          AllowOverride all<br />
        </span>
        &lt;/Directory&gt;
      </code></p></div>

      <p><code>/index.html</code> URI  û ִٰ .
      ġ <code>/.htaccess</code>, <code>/www/.htaccess</code>,
      <code>/www/htdocs/.htaccess</code>  õѴ.
      ذå  <code>Options FollowSymLinks</code> 
      ϴ. ְ   Ͻýۿ ؼ ׻
      <code>AllowOverride None</code> Ѵ.</p>

    

    <h3><a name="negotiation" id="negotiation"></a></h3>

      

      <p>ϰ ¥  󿡵  ִٸ 
      ´.   ̵ Ϻ ۴. 
         ִ.   ϵī带 ϴ :</p>

      <div class="example"><p><code>
        DirectoryIndex index
      </code></p></div>

      <p>  Ѵ:</p>

      <div class="example"><p><code>
        DirectoryIndex index.cgi index.pl index.shtml index.html
      </code></p></div>

      <p>   տ д.</p>

      <p>, 丮 ϵ ã <code>MultiViews</code>
      ٴ,  ϸ  ʿ    ִ
      <code>type-map</code>      
      ϶.</p>

    <p>Ʈ  ʿϴٸ   <code>Options
    MultiViews</code> þ ϱ⺸ <code>type-map</code>
     ϶.   ڼ 
    <code>type-map</code>    <a href="../content-negotiation.html"></a>  ϶.</p>

    

    <h3>޸𸮴 (memory-mapping)</h3>

      

      <p> , server-side-include óϴ  ġ
      2.0    ü <code>mmap(2)</code>
       Ѵٸ  ޸𸮴Ѵ.</p>

      <p> ÷ ޸𸮴  Ѵ. ׷
      ޸𸮴   Ʈ  
      ġ 찡 ִ:</p>

      <ul>
        <li>
          <p> ü <code>mmap</code> CPU 
           <code>read(2)</code> ŭ Ȯ强  ʴ.
           , μ Solaris  ġ 2.0
           <code>mmap</code>    ó
             Ѵ.</p>
        </li>

        <li>
          <p>NFS Ʈ Ͻýۿ ִ  ޸𸮴ϴ
          ߿ ٸ NFS Ŭ̾Ʈ ִ μ 
          ų ũ⸦ ̸,  μ 
           ޸𸮴 ϳ  bus error ߻
           ִ.</p>
        </li>
      </ul>

      <p> ǿ شϸ ϴ  ޸𸮴
      ʵ <code>EnableMMAP off</code> ؾ Ѵ. (:
       þ 丮   ִ.)</p>

    

    <h3>Sendfile</h3>

      

      <p>ġ ü <code>sendfile(2)</code> ϸ
      Ŀ sendfile Ͽ --  ,   Ҷ
      --      ִ.</p>

      <p> ÷ sendfile ϸ read send 
       ʿ䰡  . ׷ sendfile ϸ
        ġԵǴ 찡 ִ:</p>

      <ul>
        <li>
          <p>sendfile  ߸Ǿ  ý 
          ߰ ϴ ÷ ִ. Ư ٸ ǻͿ
           Ͽ sendfile  ߸ ǻͷ
           쿡 ϴ.</p>
        </li>
        <li>
          <p>Ŀ ڽ ij Ͽ NFS Ʈ 
              찡 ִ.</p>
        </li>
      </ul>

      <p> ǿ شϸ  sendfile  ʵ
      <code>EnableSendfile off</code> ؾ Ѵ. (:
       þ 丮   ִ.)</p>

    

    <h3><a name="process" id="process">μ </a></h3>

      

      <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>  
      ġũ  ū  ƴ. Ư ġ ۾
      ϱ  ڽļ ٴٸ  "" Ⱓ
      ʿߴ. ó <code class="directive"><a href="../mod/mpm_common.html#startservers">StartServers</a></code> ڽ
      , <code class="directive"><a href="../mod/prefork.html#minspareservers">MinSpareServers</a></code>
       ʴ ڽ ϳ . ׷ <code class="directive"><a href="../mod/mpm_common.html#startservers">StartServers</a></code> ⺻
      <code>5</code>  Ŭ̾Ʈ 100 ÿ ϸ
      ϸ óϱ⿡  ڽ  95ʰ ɷȴ.
        ʴ    , 10а
      ϴ ġũ  ſ ڰ ´.</p>

      <p>ʴ Ѱ Ģ ڽ  ϸ鼭  
        ߴ. ǻͰ ڽ ϴ ٻڸ
      û   . ׷  Ģ ġ ü
      ɿ ǿ ־ Ͽ. ġ 1.3 ʴ Ѱ
      Ģ ȭǾ. ڵ ڽ Ѱ , 1 ,
      ΰ , 1 , װ , ̷  ʴ
      ڽ 32 鶧  Ѵ. ڽļ <code class="directive"><a href="../mod/prefork.html#minspareservers">MinSpareServers</a></code>  ٴٸ
       ߴѴ.</p>

      <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>   ʿ䰡 . ʿ
      ڽ 4 ̻ ϸ <code class="directive"><a href="../mod/core.html#errorlog">ErrorLog</a></code> Ѵ. ̷ 
       ̸   ϱ ٶ.
      <code class="module"><a href="../mod/mod_status.html">mod_status</a></code>    ̴.</p>

    <p>μ  Ͽ <code class="directive"><a href="../mod/mpm_common.html#maxrequestsperchild">MaxRequestsPerChild</a></code> 
    μ Ѵ. ⺻ ڽĴ ó û 
    ٴ <code>0</code>̴.   <code>30</code>
     ſ   ִٸ,    ʿ䰡
    ִ. SunOS  Solaris  Ѵٸ, ޸⶧
      <code>10000</code>  ϶.</p>

    <p>(keep-alive) Ѵٸ ڽĵ ̹ 
    ῡ ߰ û ٸ ƹ͵ ʱ⶧ 
    ٻڴ. <code class="directive"><a href="../mod/core.html#keepalivetimeout">KeepAliveTimeout</a></code>
    ⺻ <code>15</code> ʴ ̷  ּȭѴ. Ʈ
    뿪  ڿ   ° Ѵ. <a href="http://www.research.digital.com/wrl/techreports/abstracts/95.4.html">
     κ  ⶧</a>  쿡
      <code>60</code>  ̻ ø .</p>

    

  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="compiletime" id="compiletime">Ͻ  ؼ</a></h2>

    

    <h3>MPM </h3>

      

      <p>ġ 2.x <a href="../mpm.html">ó</a>
      (MPMs)̶ ü  ִ ȭ  Ѵ. ġ
      Ҷ MPM ؾ Ѵ. <code class="module"><a href="../mod/beos.html">beos</a></code>,
      <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>,
      <code class="module"><a href="../mod/mpm_winnt.html">mpm_winnt</a></code>  Ư ÷ 
       ִ MPM ִ. Ϲ н ý  MPM
      ߿ ϳ   ִ.  ӵ
      Ȯ强(scalability)  MPM ߳Ŀ ޷ȴ:</p>

      <ul>

        <li><code class="module"><a href="../mod/worker.html">worker</a></code> MPM  ڽ μ
          带 Ѵ.   ѹ  
        Ѵ. Ϲ worker prefork MPM  
        ޸𸮸 ϹǷ ŷ   ϴ.</li>

        <li><code class="module"><a href="../mod/prefork.html">prefork</a></code> MPM 尡 Ѱ ڽ
        μ  Ѵ.  μ ѹ 
         Ѵ.  ýۿ prefork ӵ worker
        ,   ޸𸮸 Ѵ.   Ȳ
        带  ʴ prefork  worker 
         : 忡  (thread-safe) 
        ڰ     ְ,   
         ÷    ִ.</li>

      </ul>

      <p> MPM ٸ MPM   ڼ  MPM <a href="../mpm.html"></a> ϱ ٶ.</p>

    

    <h3><a name="modules" id="modules"></a></h3>

        

        <p>޸ 뷮 ɿ  ߿ ̱⶧
          ʴ  غ.  <a href="../dso.html">DSO</a> ߴٸ  
        ⿡  <code class="directive"><a href="../mod/mod_so.html#loadmodule">LoadModule</a></code> þ ּóϸ
        ȴ. ׷  ϰ Ͽ Ʈ ̵
         ϴ 캼  ִ.</p>

        <p>ݴ  ġ Ͽ  ũִٸ
         ʴ  ϱ ġ ؾ
        Ѵ.</p>

        <p>⼭ 翬   ϰ  
        ǹ .  Ʈ ٸ. ׷ Ƹ
        <em>ּ</em> <code class="module"><a href="../mod/mod_mime.html">mod_mime</a></code>,
        <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>
          ̴.  Ʈ α ʿٸ
        <code>mod_log_config</code>  ȴ. ׷ õ
        ʴ´.</p>

    

    <h3>Atomic </h3>

      

      <p><code class="module"><a href="../mod/mod_cache.html">mod_cache</a></code>   ֱ 
      worker MPM APR atomic API Ѵ.  API 淮
       ȭ  atomic  Ѵ.</p>

      <p>⺻ APR  ü/CPU ÷  ȿ
       Ͽ   Ѵ.  ,  ֽ
      CPU ϵ atomic compare-and-swap (CAS) 
      ϴ ɾ ִ. ׷  ÷ APR ̷
      ɾ   CPU ȣȯ    mutex
       ⺻ Ѵ. ̷ ÷ ġ
      Ҷ ġ ֽ CPU  ȹ̶,
      ġ Ҷ <code>--enable-nonportable-atomics</code>
      ɼ Ͽ   atomic    ִ:</p>

      <div class="example"><p><code>
        ./buildconf<br />
        ./configure --with-mpm=worker --enable-nonportable-atomics=yes
      </code></p></div>

      <p><code>--enable-nonportable-atomics</code> ɼ 
       ÷  ִ:</p>

      <ul>

        <li>SPARC Solaris<br />
            ⺻ APR Solaris/SPARC mutex atomic
            Ѵ. ׷ Ҷ
            <code>--enable-nonportable-atomics</code> ϸ
            APR  ϵ compare-and-swap  SPARC
            v8plus ɾ Ѵ.  ɼ ϸ atomic
              ȿ (CPU  ϰ  
            ȭ ϴ),   UltraSPARC
            Ĩ   ִ.
        </li>

        <li>Linux on x86<br />
            ⺻ APR  mutex atomic
            Ѵ. ׷ Ҷ
            <code>--enable-nonportable-atomics</code> ϸ
            APR  ϵ compare-and-swap  486
            ɾ Ѵ.  ȿ atomic  ,
              486 ̻ Ĩ (386 ȵȴ)
              ִ.
        </li>

      </ul>

    

    <h3>mod_status ExtendedStatus On</h3>

      

      <p>ġ Ҷ <code class="module"><a href="../mod/mod_status.html">mod_status</a></code> ϰ
      Ҷ <code>ExtendedStatus On</code> ϸ ġ
      û  <code>gettimeofday(2)</code>(Ȥ ü
       <code>times(2)</code>) ι ȣϰ (1.3 )
      <code>time(2)</code> ߰  ȣѴ.  
      ۽ð ʿϱ ̴. ֻ  
      (⺻) <code>ExtendedStatus off</code> Ѵ.</p>

    

    <h3>accept ȭ -  </h3>

      

    <div class="warning"><h3>:</h3>
      <p> Ʒ  ġ  2.0   
        ʴ.  ȿ  , ؼ
      ϱ ٶ.</p>
    </div>

      <p>н  API  Ѵ.   Ʈ
      Ȥ  ּҸ ٸ  <code class="directive"><a href="../mod/mpm_common.html#listen">Listen</a></code> Ѵٰ .
          ˻ϱ ġ
      <code>select(2)</code> Ѵ. <code>select(2)</code>
      Ͽ ٸ ִ  <em></em> Ȥ <em>ּ
      Ѱ</em> ִ ˷ش. ġ  ڽ ְ,
       ִ  ڽ ÿ ο  ˻Ѵ. 
        ϴ (  ڵ忡  ʾҴ.
       ϱ 뵵 .):</p>

      <div class="example"><p><code>
        for (;;) {<br />
        <span class="indent">
          for (;;) {<br />
          <span class="indent">
            fd_set accept_fds;<br />
            <br />
            FD_ZERO (&amp;accept_fds);<br />
            for (i = first_socket; i &lt;= last_socket; ++i) {<br />
            <span class="indent">
              FD_SET (i, &amp;accept_fds);<br />
            </span>
            }<br />
            rc = select (last_socket+1, &amp;accept_fds, NULL, NULL, NULL);<br />
            if (rc &lt; 1) continue;<br />
            new_connection = -1;<br />
            for (i = first_socket; i &lt;= last_socket; ++i) {<br />
            <span class="indent">
              if (FD_ISSET (i, &amp;accept_fds)) {<br />
              <span class="indent">
                new_connection = accept (i, NULL, NULL);<br />
                if (new_connection != -1) break;<br />
              </span>
              }<br />
            </span>
            }<br />
            if (new_connection != -1) break;<br />
          </span>
          }<br />
          process the new_connection;<br />
        </span>
        }
      </code></p></div>

      <p>׷  ܼ  ɰ (starvation)
       ִ.  ڽ ÿ  ݺ ϸ,
      û ٸ  <code>select</code> . ̶
       Ͽ û ϳ   ڽ 
      ( ڽ  ü Ÿֿ̹  ٸ).
      ̵   <code>accept</code>ϱ õѴ. ׷
      (  Ḹ ̶)  ڽĸ ϰ, 
      <code>accept</code> <em>.</em> ׷  ڽĵ
        û ϵ ,   ο
      û  ͼ  ڽ ﶧ ִ.
      ̷   <a href="http://bugs.apache.org/index/full/467">PR#467</a>
      ó Ǿ. ּ ΰ ذå ִ.</p>

      <p>Ѱ   ʵ (non-blocking) 
      ̴.   ڽ <code>accept</code> ص 
      ʰ,    ִ. ׷ CPU ð Ѵ.
      <code>select</code>  ڽ 10 ְ,  
      Ѱ Դٰ . ׷  ڽ 9 
       <code>accept</code>ϱ õϰ ϸ ƹ
      ϵ  ʰ ٽ <code>select</code> ݺѴ. ٽ
      <code>select</code> ƿ   ڽĵ ٸ Ͽ
       û  ʴ´. (μ ǻͿ)
       ڽ ŭ CPU  ִ 幮 찡 ƴ϶
       ذå  ƺ ʴ´.</p>

      <p>ٸ  ġ ϴ   ݺ
       ڽĸ 鿩. ݺ   (̸
      ):</p>

      <div class="example"><p><code>
        for (;;) {<br />
        <span class="indent">
          <strong>accept_mutex_on ();</strong><br />
          for (;;) {<br />
          <span class="indent">
            fd_set accept_fds;<br />
            <br />
            FD_ZERO (&amp;accept_fds);<br />
            for (i = first_socket; i &lt;= last_socket; ++i) {<br />
            <span class="indent">
              FD_SET (i, &amp;accept_fds);<br />
            </span>
            }<br />
            rc = select (last_socket+1, &amp;accept_fds, NULL, NULL, NULL);<br />
            if (rc &lt; 1) continue;<br />
            new_connection = -1;<br />
            for (i = first_socket; i &lt;= last_socket; ++i) {<br />
            <span class="indent">
              if (FD_ISSET (i, &amp;accept_fds)) {<br />
              <span class="indent">
                new_connection = accept (i, NULL, NULL);<br />
                if (new_connection != -1) break;<br />
              </span>
              }<br />
            </span>
            }<br />
            if (new_connection != -1) break;<br />
          </span>
          }<br />
          <strong>accept_mutex_off ();</strong><br />
          process the new_connection;<br />
        </span>
        }
      </code></p></div>

      <p><code>accept_mutex_on</code> <code>accept_mutex_off</code>
      <a id="serialize" name="serialize">Լ</a> mutex 
      Ѵ. ѹ   ڽĸ mutex   ִ.
      mutex ϴ  ̴.   (1.3
      ) <code>src/conf.h</code> (1.3  )
      <code>src/include/ap_config.h</code> ǵִ. 
      ŰĴ (locking)   ʱ⶧, ̷
      ŰĿ  <code class="directive"><a href="../mod/mpm_common.html#listen">Listen</a></code> þ ϸ
      ϴ.</p>

      <p> <code class="directive"><a href="../mod/mpm_common.html#acceptmutex">AcceptMutex</a></code> þ Ͽ
      mutex    ִ.</p>

      <dl>
        <dt><code>AcceptMutex flock</code></dt>

        <dd>
          <p>   ױ <code>flock(2)</code>
          ýȣ Ѵ ( ġ <code class="directive"><a href="../mod/mpm_common.html#lockfile">LockFile</a></code> þ ).</p>
        </dd>

        <dt><code>AcceptMutex fcntl</code></dt>

        <dd>
          <p>   ױ <code>fcntl(2)</code>
          ýȣ Ѵ ( ġ <code class="directive"><a href="../mod/mpm_common.html#lockfile">LockFile</a></code> þ ).</p>
        </dd>

        <dt><code>AcceptMutex sysvsem</code></dt>

        <dd>
          <p>(1.3  )   SysV  Ͽ
          mutex Ѵ.  SysV  
          ۿ ִ. ϳ ġ  
          ʰ   ִ ̴ (<code>ipcs(8)</code> manpage
          ). ٸ ϳ   uid ϴ
          CGI (<em>,</em> <code>suexec</code>
          <code>cgiwrapper</code> ʴ   CGI)
           API Ͽ 񽺰źΰ   ִ
          ̴. ̷  IRIX  ŰĿ
             ʴ´ (κ IRIX ǻͿ
             ġ ̴).</p>
        </dd>

        <dt><code>AcceptMutex pthread</code></dt>

        <dd>
          <p>(1.3  )   POSIX mutex ϱ⶧
          POSIX  Ծ   ŰĶ 
          밡, (2.5 ) Solaris װ͵ Ư
           ϴ ϴ.   õغٸ
           缭  ϴ  Ѵ. 
          븸 ϴ   ϴ  .</p>
        </dd>

        <dt><code>AcceptMutex posixsem</code></dt>

        <dd>
          <p>(2.0  )   POSIX  Ѵ.
          mutex  μ 尡 ״´ٸ(segfault)
            ȸ ʾƼ  .</p>
        </dd>

      </dl>

      <p>ýۿ  Ͽ  ȭ(serialization) 
      ִٸ   ϴ ڵ带 APR ߰ ġ ִ.</p>

      <p> غ  ٸ  κ
      ݺ ȭϴ ̴. , μ  鿩
      ̴.    ڽ ÿ   ־
      ȭ ü 뿪 Ȱ ϴ μ
      ǻͿ    ִ.  캼 κ,
      ſ ȭ   ʾƼ 켱 .</p>

      <p>ֻ  ؼ  <code class="directive"><a href="../mod/mpm_common.html#listen">Listen</a></code>   ʴ
       ̴̻. ׷  Ѵ.</p>

    

    <h3>accept ȭ -  Ѱ</h3>

      

      <p>  ߼  ,  Ѱ
       ?  Ҷ  ڽ
      <code>accept(2)</code> ֱ⶧ ̷л 
       ߻ ʰ,   . ׷ δ
      տ   ʴ (non-blocking)  ߻ϴ
      "ȸ(spinning)"  ߰ ִ. κ TCP 
       ϸ Ŀ <code>accept</code> ִ
       ڽ 쵵 ִ. μ Ѱ 
       ڿ ư,  Ŀο ȸϿ
        ߰ϸ ٽ  ܴ. ڿ ڵ忡
      ̷ ȸ   , и Ѵ. ׷ ߼
       ʴ  ϰ ϸ ̴ ʿ ൿ
      Ͼ.</p>

      <p>׷ 츮  ŰĿ  Ѱ 쿡
      ȭϸ  ""  ߰ߴ. ׷  κ
       ⺻ ȭ Ѵ.  (Ŀ 2.0.30,
      128Mb ޸𸮿  Pentium pro)    Ѱ
      ȭϸ   쿡  ʴ û 3% ̸
      پ. ׷ ȭ    û 100ms
       ߻ߴ.   Ƹ LAN ߻ϴ 
      ἱ ̴.  Ѱ  ȭ 
       <code>SINGLE_LISTEN_UNSERIALIZED_ACCEPT</code>
      Ѵ.</p>

    

    <h3>Close (lingering)</h3>

      

      <p><a href="http://www.ics.uci.edu/pub/ietf/http/draft-ietf-http-connection-00.txt">
      draft-ietf-http-connection-00.txt</a> 8 ϵ
      <strong></strong>  Ƿ,   
         ־ Ѵ (TCP  ֹ̰,
        ̴).  ٸ  
      , ġ 1.2 Ȯ ؿԴ.</p>

      <p>  ϰ ġ ߰  н
         ߻ߴ. TCP Ծ
      <code>FIN_WAIT_2</code> ŸӾƿ ִٰ  ʾ,
       ʾҴ. ŸӾƿ  ýۿ ġ 1.2
         <code>FIN_WAIT_2</code> · .
          ۻ簡 ϴ ֽ TCP/IP ġ
      Ͽ ذ  ִ. ׷ ۻ簡 ġ ǥ
      ʴ 찡 (<em>,</em> SunOS4 -- ҽ ̼ ִ
        ġ  ) ֱ⶧   
      ʱ ߴ.</p>

      <p> ΰ. ϳ  ɼ <code>SO_LINGER</code>
      ϴ ̴. ׷  κ TCP/IP 
       ɼ ùٷ  ʾҴ. ùٷ  ÿ
       (<em>,</em>  2.0.31)    
       cpu ƸԴ´.</p>

      <p>ġ  (<code>http_main.c</code> ִ)
      <code>lingering_close</code> Լ Ѵ.  Լ
        :</p>

      <div class="example"><p><code>
        void lingering_close (int s)<br />
        {<br />
        <span class="indent">
          char junk_buffer[2048];<br />
          <br />
          /* shutdown the sending side */<br />
          shutdown (s, 1);<br />
          <br />
          signal (SIGALRM, lingering_death);<br />
          alarm (30);<br />
          <br />
          for (;;) {<br />
          <span class="indent">
            select (s for reading, 2 second timeout);<br />
            if (error) break;<br />
            if (s is ready for reading) {<br />
            <span class="indent">
              if (read (s, junk_buffer, sizeof (junk_buffer)) &lt;= 0) {<br />
              <span class="indent">
                break;<br />
              </span>
              }<br />
              /* just toss away whatever is here */<br />
            </span>
            }<br />
          </span>
          }<br />
          <br />
          close (s);<br />
        </span>
        }
      </code></p></div>

      <p> ڵ    CPU , 
        ʿϴ. HTTP/1.1  θ   
      Ѵٸ(persistent),  ޴   û
      óϸ鼭  ̴. ϰԵ
      <code>NO_LINGCLOSE</code> Ͽ   
        ,   ʴ´. Ư HTTP/1.1
       <span class="transnote">(<em>;</em>  ¿  ٸ
      ʰ  û  )</span> 
      <code>lingering_close</code> ʼ̴ (׸ <a href="http://www.w3.org/Protocols/HTTP/Performance/Pipeline.html">
         ⶧</a> ϱ ٶ ̴).</p>

    

    <h3>Scoreboard </h3>

      

      <p>ġ θ ڽ scoreboard   
      Ѵ. ̻δ scoreboard ޸𸮷 ؾ
      Ѵ. 츮 ڰ ش ü   ְų 
           ޸𸮸 Ͽ Ѵ.
       ũ ִ  Ͽ Ѵ. ũ
      ִ   ŷڵ  (ɵ  ).
      <code>src/main/conf.h</code> Ͽ ϴ Űĸ
      ãƼ <code>USE_MMAP_SCOREBOARD</code> Ȥ
      <code>USE_SHMGET_SCOREBOARD</code> ȮѴ. 
      ϳ ( Բ  <code>HAVE_MMAP</code>̳
      <code>HAVE_SHMGET</code> ) ϸ ޸ ڵ带
      Ѵ. ý ٸ  ޸𸮸 Ѵٸ
      <code>src/main/http_main.c</code>  Ͽ ġ
      ޸𸮸   ֵ (hook) ߰϶. (
      ġ 츮 ֱ ٶ.)</p>

      <div class="note"> : ġ   ġ 1.2 
      ޸𸮸 ϱ ߴ.  ʱ ġ
        ŷڵ  ̴.</div>

    

    <h3>DYNAMIC_MODULE_LIMIT</h3>

      

      <p>  о ʴ´ٸ ( ̶
       ̱   д´ٸ Ƹ  
      о  ̴),  Ҷ
      <code>-DDYNAMIC_MODULE_LIMIT=0</code> ߰Ѵ. ׷
        о̱ Ҵϴ ޸𸮸 Ѵ.</p>

    

  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="trace" id="trace">η: ýȣ  ڼ мϱ</a></h2>

    

    <p> Solaris 8 worker MPM  ġ 2.0.38
    ýȣ (trace)̴. Ʒ ɾ Ͽ 
    :</p>

    <div class="example"><p><code>
      truss -l -p <var>httpd_child_pid</var>.
    </code></p></div>

    <p><code>-l</code> ɼ ϸ truss ýȣ
    ϴ LWP (lightweight process, 淮 μ--Solaris
    Ŀμ ) ID  Ѵ.</p>

    <p>ٸ ýۿ <code>strace</code>, <code>ktrace</code>,
    <code>par</code>  ýȣ   ִ. 
    ϴ.</p>

    <p>Ŭ̾Ʈ  ũⰡ 10KB   ûѴ.
      û ʰų ϴ û  
     ſ ٸ (δ ſ ˾ƺ ).</p>

    <div class="example"><pre>/67:    accept(3, 0x00200BEC, 0x00200C0C, 1) (sleeping...)
/67:    accept(3, 0x00200BEC, 0x00200C0C, 1)            = 9</pre></div>

    <p> (listener) 尡 LWP #67 
      ִ.</p>

    <div class="note"><code>accept(2)</code> ȭ   ָ϶.
     Ʈ ٸʴ   ÷ worker MPM
    ⺻ ȭ  accept Ѵ.</div>

    <div class="example"><pre>/65:    lwp_park(0x00000000, 0)                         = 0
/67:    lwp_unpark(65, 1)                               = 0</pre></div>

    <p> ޾Ƶ̰(accept)  
    worker 带  û óϰ Ѵ. Ʒ Ͽ
    û óϴ worker 尡 LWP #65   ִ.</p>

    <div class="example"><pre>/65:    getsockname(9, 0x00200BA4, 0x00200BC4, 1)       = 0</pre></div>

    <p>ȣƮ ϱ ġ  ޾Ƶ
    (local)  ּҸ ˾ƾ Ѵ. (ȣƮ 
    ʰų <code class="directive"><a href="../mod/mpm_common.html#listen">Listen</a></code>
    þ ϵī ּҸ    )  
     ȣ   ִ. ׷  ̷ ȭ ۾
    ȵִ. </p>

    <div class="example"><pre>/65:    brk(0x002170E8)                                 = 0
/65:    brk(0x002190E8)                                 = 0</pre></div>

    <p><code>brk(2)</code> ȣ (heap) ޸𸮸 ҴѴ.
     κ û ó ü ޸
    Ҵ(<code>apr_pool</code> <code>apr_bucket_alloc</code>)
    ϱ⶧ ýȣ Ͽ  ýȣ Ⱑ
    幰.  Ͽ  ڸ ü ޸ Ҵڰ
     ޸𸮺  <code>malloc(3)</code> ȣѴ.</p>

    <div class="example"><pre>/65:    fcntl(9, F_GETFL, 0x00000000)                   = 2
/65:    fstat64(9, 0xFAF7B818)                          = 0
/65:    getsockopt(9, 65535, 8192, 0xFAF7B918, 0xFAF7B910, 2190656) = 0
/65:    fstat64(9, 0xFAF7B818)                          = 0
/65:    getsockopt(9, 65535, 8192, 0xFAF7B918, 0xFAF7B914, 2190656) = 0
/65:    setsockopt(9, 65535, 8192, 0xFAF7B918, 4, 2190656) = 0
/65:    fcntl(9, F_SETFL, 0x00000082)                   = 0</pre></div>

    <p> worker  Ŭ̾Ʈ (ϱ 9)
    (non-blocking) · ٲ۴. <code>setsockopt(2)</code>
    <code>getsockopt(2)</code> ȣ Solaris libc Ͽ
     <code>fcntl(2)</code>  óϴ ش.</p>

    <div class="example"><pre>/65:    read(9, " G E T   / 1 0 k . h t m".., 8000)     = 97</pre></div>

    <p>worker  Ŭ̾Ʈ  û д´.</p>

    <div class="example"><pre>/65:    stat("/var/httpd/apache/httpd-8999/htdocs/10k.html", 0xFAF7B978) = 0
/65:    open("/var/httpd/apache/httpd-8999/htdocs/10k.html", O_RDONLY) = 10</pre></div>

    <p>  <code>Options FollowSymLinks</code>
    <code>AllowOverride None</code>̴. ׷ û ϰ
     丮  <code>lstat(2)</code>ϰų
    <code>.htaccess</code>  ˻ ʿ䰡 . 
    ˻ϱ, 1)  ִ, 2) 丮 ƴ Ϲ,
    <code>stat(2)</code> ȣ⸸ ϸ ȴ.</p>

    <div class="example"><pre>/65:    sendfilev(0, 9, 0x00200F90, 2, 0xFAF7B53C)      = 10269</pre></div>

    <p>   ѹ <code>sendfilev(2)</code> ýȣ
    HTTP  û    ִ. Sendfile δ
    ü ٸ. ٸ ý̶ <code>sendfile(2)</code>
    ȣϱ    <code>write(2)</code>
    <code>writev(2)</code> ȣ Ѵ.</p>

    <div class="example"><pre>/65:    write(4, " 1 2 7 . 0 . 0 . 1   -  ".., 78)      = 78</pre></div>

    <p><code>write(2)</code> ȣ ٷα(access log) û
    Ѵ.  Ͽ <code>time(2)</code> ȣ  ָ϶.
    ġ 1.3 ޸ ġ 2.0 ð ˱
    <code>gettimeofday(3)</code> Ѵ.
    <code>gettimeofday</code> ȭ  Solaris 
     ü Ϲ ýȣ δ .</p>

    <div class="example"><pre>/65:    shutdown(9, 1, 1)                               = 0
/65:    poll(0xFAF7B980, 1, 2000)                       = 1
/65:    read(9, 0xFAF7BC20, 512)                        = 0
/65:    close(9)                                        = 0</pre></div>

    <p>worker   ݱ(lingering close)Ѵ.</p>

    <div class="example"><pre>/65:    close(10)                                       = 0
/65:    lwp_park(0x00000000, 0)         (sleeping...)</pre></div>

    <p> worker     ݰ,
    (listener) 尡 ٸ  Ҵ 
    Ѵ.</p>

    <div class="example"><pre>/67:    accept(3, 0x001FEB74, 0x001FEB94, 1) (sleeping...)</pre></div>

    <p>׵    ( worker ۾̸
     带 ߴ worker MPM 帧 ɿ )
    worker 忡 Ҵڸ ٸ  ޾Ƶ  ִ.
     Ͽ  , worker 尡   
    óϴ   <code>accept(2)</code> (û ſ
      ׻) Ͼ  ִ.</p>

  </div></div>
<div class="bottomlang">
<p><span> : </span><a href="../en/misc/perf-tuning.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
<a href="../fr/misc/perf-tuning.html" hreflang="fr" rel="alternate" title="Fran&#231;ais">&nbsp;fr&nbsp;</a> |
<a href="../ko/misc/perf-tuning.html" title="Korean">&nbsp;ko&nbsp;</a> |
<a href="../tr/misc/perf-tuning.html" hreflang="tr" rel="alternate" title="T&#252;rk&#231;e">&nbsp;tr&nbsp;</a></p>
</div><div class="top"><a href="#page-header"><img src="../images/up.gif" alt="top" /></a></div><div class="section"><h2><a id="comments_section" name="comments_section">Comments</a></h2><div class="warning"><strong>Notice:</strong><br />This is not a Q&amp;A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our <a href="http://httpd.apache.org/lists.html">mailing lists</a>.</div>
<script type="text/javascript"><!--//--><![CDATA[//><!--
var comments_shortname = 'httpd';
var comments_identifier = 'http://httpd.apache.org/docs/2.4/misc/perf-tuning.html';
(function(w, d) {
    if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
        d.write('<div id="comments_thread"><\/div>');
        var s = d.createElement('script');
        s.type = 'text/javascript';
        s.async = true;
        s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
        (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
    }
    else { 
        d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
    }
})(window, document);
//--><!]]></script></div><div id="footer">
<p class="apache">Copyright 2015 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>
<p class="menu"><a href="../mod/"></a> | <a href="../mod/directives.html">þ</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="../glossary.html"></a> | <a href="../sitemap.html">Ʈ</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!--
if (typeof(prettyPrint) !== 'undefined') {
    prettyPrint();
}
//--><!]]></script>
</body></html>
y~or5J={Eeu磝QkᯘG{?+]ן?wM3X^歌>{7پK>on\jyR g/=fOroNVv~Y+NGuÝHWyw[eQʨSb>>}Gmx[o[<{Ϯ_qF vMIENDB`