<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd">
<?xml-stylesheet type="text/xsl" href="./style/manual.ja.xsl"?>
<!-- English Revision: 420990:1602766 (outdated) -->

<!--
 Licensed to the Apache Software Foundation (ASF) under one or more
 contributor license agreements.  See the NOTICE file distributed with
 this work for additional information regarding copyright ownership.
 The ASF licenses this file to You under the Apache License, Version 2.0
 (the "License"); you may not use this file except in compliance with
 the License.  You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
-->

<manualpage metafile="mpm.xml.meta">

  <title>マルチプロセッシングモジュール (MPM)</title>

<summary>
<p>この文書ではマルチプロセッシングモジュールがどのようなもので、
Apache HTTP サーバでどのように使用されるかについて解説しています。</p>
</summary>

<section id="introduction"><title>はじめに</title>

    <p>Apache HTTP サーバは異なる幅広い環境、多種多様なプラットホームで
    動作するように、パワフルで柔軟性に富んだ設計になっています。
    異なるプラットホーム・異なる環境ではしばしば、
    異なる機能が必要になったり、
    同じ機能でも効率のために異なる実装が必要になったりします。
    Apache ではモジュール化された設計により幅広い環境に適応してきました。
    この設計のおかげで、管理者は
    コンパイル時または実行時にどのモジュールをロードするか選ぶことによって、
    どの機能をサーバに取り込むか選択することができます。</p>

    <p>Apache 2.0 では、
    このモジュール化された設計をサーバの基本機能にまで拡張しました。
    サーバには精選されたマルチプロセッシングモジュール (MPM) 
    が付いてきて、これらはマシンのネットワークポートをバインドしたり、
    リクエストを受け付けたり、リクエストを扱うよう子プロセスに割り当てたり、
    といった役割を持ちます。</p>

    <p>モジュール化された設計をサーバのこのレベルまで拡張することで
    二つの重要な利点が生まれます:</p>

    <ul>
      <li>Apache は幅広いオペレーティングシステムを
      より美しく効率的にサポートできます。
      特に Windows 版の Apache は随分効率的になりました。
      なぜなら <module>mpm_winnt</module>
      によって、Apache 1.3 で用いられていた POSIX 
      レイヤの代わりにネイティブのネットワーク機能を
      利用できるからです。
      特別化された MPM 
      を実装した他のオペレーティングシステムでも、
      同様にこの利点は生まれます。</li>

      <li>サーバは特定のサイト向けに、より上手にカスタマイズできます。
      例えば、非常に大きなスケーラビリティを必要とするサイトでは、
      <module>worker</module> や <module>event</module> といったスレッド化された
      MPM を利用できる一方で、安定性や古いソフトウェアとの互換性を
      必要とするサイトでは <module>prefork</module>
      が利用できます。</li>
    </ul>

    <p>ユーザレベルでは、MPM は他の Apache 
    モジュールと同等に見えます。
    主な違いは、いつでも唯一の MPM 
    がロードされなければならないという点です。
    利用可能な MPM は 
    <a href="mod/">module インデックス</a>にあります。</p>

</section>

<section id="choosing"><title>MPM を選ぶ</title>

    <p>MPM は設定中に選択して、サーバ内部にコンパイルされなければ
    なりません。
    コンパイラは、スレッドが使用されている場合に様々な機能を最適化できますが、
    そのためにはそもそもスレッドが使われているということを知る必要があります。</p>

    <p>望みの MPM を実際に選ぶためには、<program>configure</program> スクリプトで
    <code>--with-mpm=<em>NAME</em></code> 引数を用いてください。
    <em>NAME</em> は望みの MPM の名前です。</p>

    <p>サーバコンパイル後は、どの MPM が選択されたかを
    <code>./httpd -l</code> で確かめることができます。
    このコマンドは、MPM
    を含め、サーバにコンパイルで組み込まれたモジュール全てを
    列挙します。</p>
</section>

<section id="defaults"><title>MPM デフォルト値</title>

<p>次表に様々な OS 向けのデフォルトの MPM 一覧を掲載しています。
コンパイル時に意図的に他を選択しなければ、自動的にこれらの MPM
が選択されます。</p>

<table>
<columnspec><column width=".2"/><column width=".2"/></columnspec>
<tr><td>BeOS</td><td><module>beos</module></td></tr>
<tr><td>Netware</td><td><module>mpm_netware</module></td></tr>
<tr><td>OS/2</td><td><module>mpmt_os2</module></td></tr>
<tr><td>Unix</td><td><module>prefork</module></td></tr>
<tr><td>Windows</td><td><module>mpm_winnt</module></td></tr>
</table>
</section>

</manualpage>
