<html xmlns="http://www.w3.org/TR/xhtml1/strict"><head><!-- 
          XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                This file is generated from xml source: DO NOT EDIT
          XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
        --><title>worker- Apache HTTP Server</title><link href="../style/manual.css" type="text/css" rel="stylesheet"/></head><body><blockquote><div align="center"><img src="../images/sub.gif" alt="[APACHE DOCUMENTATION]"/><h3>Apache HTTP Server Version 2.0</h3></div><h1 align="center">Apache モジュール worker</h1><table cellspacing="1" cellpadding="0" bgcolor="#cccccc"><tr><td><table bgcolor="#ffffff"><tr><td valign="top"><span class="help">説明:</span></td><td>マルチスレッドとマルチプロセスのハイブリッド型
ウェブサーバを実装したマルチプロセッシングモジュール</td></tr><tr><td><a href="module-dict.html#Status" class="help">ステータス:</a></td><td>MPM</td></tr><tr><td><a href="module-dict.html#ModuleIdentifier" class="help">モジュール識別子:</a></td><td>mpm_worker_module</td></tr></table></td></tr></table><h2>概要</h2>
    <p>このマルチプロセッシングモジュール (MPM) 
    は、マルチスレッドとマルチプロセスのハイブリッド型サーバを
    実装しています。リクエストの応答にスレッドを使うと、
    プロセスベースのサーバよりも少ないシステム資源で、
    多くのリクエストに応答することができます。
    さらに、多くのスレッドを持った複数のプロセスを維持することで、
    プロセスベースのサーバの持つ安定性を保持しています。</p>

    <p>この MPM を制御するのに使われる最も重要なディレクティブは、
    <a href="mpm_common.html#threadsperchild" class="directive"><code class="directive">ThreadsPerChild</code></a> と
    <a href="mpm_common.html#maxclients" class="directive"><code class="directive">MaxClients</code></a> です。
    これらのディレクティブの値を操作することで、
    サーバの扱うことのできる全同時コネクション数を定義します。</p>

<h2>ディレクティブ</h2><ul><li><a href="mpm_common.html#coredumpdirectory">CoreDumpDirectory</a></li><li><a href="mpm_common.html#group">Group</a></li><li><a href="mpm_common.html#listen">Listen</a></li><li><a href="mpm_common.html#listenbacklog">ListenBacklog</a></li><li><a href="mpm_common.html#lockfile">LockFile</a></li><li><a href="mpm_common.html#maxclients">MaxClients</a></li><li><a href="mpm_common.html#maxrequestsperchild">MaxRequestsPerChild</a></li><li><a href="mpm_common.html#maxsparethreads">MaxSpareThreads</a></li><li><a href="mpm_common.html#minsparethreads">MinSpareThreads</a></li><li><a href="mpm_common.html#pidfile">PidFile</a></li><li><a href="mpm_common.html#scoreboardfile">ScoreBoardFile</a></li><li><a href="mpm_common.html#sendbuffersize">SendBufferSize</a></li><li><a href="mpm_common.html#serverlimit">ServerLimit</a></li><li><a href="mpm_common.html#startservers">StartServers</a></li><li><a href="mpm_common.html#threadlimit">ThreadLimit</a></li><li><a href="mpm_common.html#threadsperchild">ThreadsPerChild</a></li><li><a href="mpm_common.html#user">User</a></li></ul><p><strong>参照 </strong></p><ul><li><a href="../bind.html">Apache 
の使用するアドレスとポートの設定</a></li></ul><h2>動作方法</h2>
    <p>プロセスは決まった数のスレッドを持ちます。
    負荷への適応はプロセスの数を増減により対応します。</p>

    <p>一つの制御用プロセスが子プロセスを起動します。
    子プロセスは
    <a href="mpm_common.html#threadsperchild" class="directive"><code class="directive">ThreadsPerChild</code></a>
    ディレクティブで指定された一定数のスレッドを作ります。
    それから、個々のスレッドがコネクションに対して listen
    して、しかるべき時に動作します。</p>

    <p>Apache は<em>スペアの</em>、つまりアイドルなサーバスレッドの
    プールを常に維持していて、それらは入ってくるリクエストに
    答えられるように待機しています。
    このようにして、クライアントはリクエストの応答が得られるようになるために
    新しいスレッドやプロセスが生成されるのを
    待たなくてもよいようになっています。
    Apache は全プロセスのアイドルスレッドの合計数を見積もって、
    <a href="mpm_common.html#minsparethreads" class="directive"><code class="directive">MinSpareThreads</code></a> と
    <a href="mpm_common.html#maxsparethreads" class="directive"><code class="directive">MaxSpareThreads</code></a>
    で指定された範囲の中にこの数が収まるように fork したり
    kill したりします。この操作は非常に自律的なので、
    これらのディレクティブをデフォルト値から変更する必要は
    めったにないでしょう。
    同時に応答することのできるクライアント数の最大数は、
    生成されるサーバプロセスの最大数
    (<a href="mpm_common.html#maxclients" class="directive"><code class="directive">MaxClients</code></a>)
    と、個々のプロセスで作られるスレッド数
    (<a href="mpm_common.html#threadsperchild" class="directive"><code class="directive">ThreadsPerChild</code></a>) 
    の積になります。</p>

    <p>通常 Unix では親プロセスは 80 番ポートにバインドするために
    root で起動されますが、子プロセスやスレッドは
    もっと低い権限のユーザで Apache によって起動されます。
    <a href="mpm_common.html#user" class="directive"><code class="directive">User</code></a> と
    <a href="mpm_common.html#group" class="directive"><code class="directive">Group</code></a> ディレクティブは
    Apache の子プロセスの権限を設定するのに用いられます。
    子プロセスはクライアントに送るコンテンツ全てを読めないといけませんが、
    可能な限り必要最小限の権限のみを持っているようにするべきです。
    さらに、<a href="../suexec.html">suexec</a>
    が使用されていない限り、これらのディレクティブは
    CGI スクリプトで継承される権限も設定します。</p>

    <p><a href="mpm_common.html#maxrequestsperchild" class="directive"><code class="directive">MaxRequestsPerChild</code></a>
    は、古いプロセスを停止して新しいプロセスを起動することによって、
    どの程度の頻度でサーバがプロセスをリサイクルするかを制御します。</p>
<hr/></blockquote><h3 align="center">Apache HTTP Server Version 2.0</h3><a href="./"><img src="../images/index.gif" alt="索引"/></a><a href="../"><img src="../images/home.gif" alt="ホーム"/></a></body></html>