diff options
Diffstat (limited to 'docs/manual/mod/worker.xml.ja')
-rw-r--r-- | docs/manual/mod/worker.xml.ja | 172 |
1 files changed, 86 insertions, 86 deletions
diff --git a/docs/manual/mod/worker.xml.ja b/docs/manual/mod/worker.xml.ja index dc82001ac4..45adfa9998 100644 --- a/docs/manual/mod/worker.xml.ja +++ b/docs/manual/mod/worker.xml.ja @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="iso-2022-jp"?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd"> <?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?> <!-- English Revision: 151408:431460 (outdated) --> @@ -23,100 +23,100 @@ <modulesynopsis metafile="worker.xml.meta"> <name>worker</name> -<description>$B%^%k%A%9%l%C%I$H%^%k%A%W%m%;%9$N%O%$%V%j%C%I7?(B -$B%&%'%V%5!<%P$r<BAu$7$?%^%k%A%W%m%;%C%7%s%0%b%8%e!<%k(B</description> +<description>マルチスレッドとマルチプロセスのハイブリッド型 +ウェブサーバを実装したマルチプロセッシングモジュール</description> <status>MPM</status> <sourcefile>worker.c</sourcefile> <identifier>mpm_worker_module</identifier> <summary> - <p>$B$3$N%^%k%A%W%m%;%C%7%s%0%b%8%e!<%k(B (MPM) - $B$O!"%^%k%A%9%l%C%I$H%^%k%A%W%m%;%9$N%O%$%V%j%C%I7?%5!<%P$r(B - $B<BAu$7$F$$$^$9!#%j%/%(%9%H$N1~Ez$K%9%l%C%I$r;H$&$H!"(B - $B%W%m%;%9%Y!<%9$N%5!<%P$h$j$b>/$J$$%7%9%F%`;q8;$G!"(B - $BB?$/$N%j%/%(%9%H$K1~Ez$9$k$3$H$,$G$-$^$9!#(B - $B$5$i$K!"B?$/$N%9%l%C%I$r;}$C$?J#?t$N%W%m%;%9$r0];}$9$k$3$H$G!"(B - $B%W%m%;%9%Y!<%9$N%5!<%P$N;}$D0BDj@-$rJ];}$7$F$$$^$9!#(B</p> - - <p>$B$3$N(B MPM $B$r@)8f$9$k$N$K;H$o$l$k:G$b=EMW$J%G%#%l%/%F%#%V$O!"(B - <directive module="mpm_common">ThreadsPerChild</directive> $B$H(B - <directive module="mpm_common">MaxClients</directive> $B$G$9!#(B - <directive module="mpm_common">ThreadsPerChild</directive> $B$O(B - $B3F;R%W%m%;%9$GMQ0U$5$l$k%9%l%C%I?t$r@)8f$7$F!"(B - <directive module="mpm_common">MaxClients</directive> $B$O(B - $B5/F0$5$l$k%9%l%C%I$NAm?t$N:GBgCM$r@)8B$7$^$9!#(B</p> + <p>このマルチプロセッシングモジュール (MPM) + は、マルチスレッドとマルチプロセスのハイブリッド型サーバを + 実装しています。リクエストの応答にスレッドを使うと、 + プロセスベースのサーバよりも少ないシステム資源で、 + 多くのリクエストに応答することができます。 + さらに、多くのスレッドを持った複数のプロセスを維持することで、 + プロセスベースのサーバの持つ安定性を保持しています。</p> + + <p>この MPM を制御するのに使われる最も重要なディレクティブは、 + <directive module="mpm_common">ThreadsPerChild</directive> と + <directive module="mpm_common">MaxClients</directive> です。 + <directive module="mpm_common">ThreadsPerChild</directive> は + 各子プロセスで用意されるスレッド数を制御して、 + <directive module="mpm_common">MaxClients</directive> は + 起動されるスレッドの総数の最大値を制限します。</p> </summary> <seealso><a href="../bind.html">Apache -$B$N;HMQ$9$k%"%I%l%9$H%]!<%H$N@_Dj(B</a></seealso> +の使用するアドレスとポートの設定</a></seealso> -<section id="how-it-works"><title>$BF0:nJ}K!(B</title> - <p>$B0l$D$N@)8fMQ%W%m%;%9(B ($B?F(B) $B$,;R%W%m%;%9$r5/F0$7$^$9!#(B - $B;R%W%m%;%9$O(B +<section id="how-it-works"><title>動作方法</title> + <p>一つの制御用プロセス (親) が子プロセスを起動します。 + 子プロセスは <directive module="mpm_common">ThreadsPerChild</directive> - $B%G%#%l%/%F%#%V$G;XDj$5$l$?0lDj?t$N%5!<%P%9%l%C%I$H@\B3$r(B - listen $B$9$k%9%l%C%I$r0l$D:n$j$^$9!#(B - Listener $B%9%l%C%I$O@\B3$,Mh$?$H$-$K%5!<%P%W%m%;%9$KEO$7$^$9!#(B</p> - - <p>Apache $B$O(B<dfn>$B%9%Z%"$N(B</dfn>$B!"$D$^$j%"%$%I%k$J%5!<%P%9%l%C%I$N(B - $B%W!<%k$r>o$K0];}$7$F$$$F!"$=$l$i$OF~$C$F$/$k%j%/%(%9%H$K(B - $BEz$($i$l$k$h$&$KBT5!$7$F$$$^$9!#(B - $B$3$N$h$&$K$7$F!"%/%i%$%"%s%H$O%j%/%(%9%H$N1~Ez$,F@$i$l$k$h$&$K$J$k$?$a$K(B - $B?7$7$$%9%l%C%I$d%W%m%;%9$,@8@.$5$l$k$N$r(B - $BBT$?$J$/$F$b$h$$$h$&$K$J$C$F$$$^$9!#(B - $B5/F0=i4|;~$N%W%m%;%9Am?t$O!"(B + ディレクティブで指定された一定数のサーバスレッドと接続を + listen するスレッドを一つ作ります。 + Listener スレッドは接続が来たときにサーバプロセスに渡します。</p> + + <p>Apache は<dfn>スペアの</dfn>、つまりアイドルなサーバスレッドの + プールを常に維持していて、それらは入ってくるリクエストに + 答えられるように待機しています。 + このようにして、クライアントはリクエストの応答が得られるようになるために + 新しいスレッドやプロセスが生成されるのを + 待たなくてもよいようになっています。 + 起動初期時のプロセス総数は、 <directive module="mpm_common">StartServers</directive> - $B%G%#%l%/%F%#%V$G@_Dj$5$l$^$9!#$=$N8e$N2TF/Cf$K!"(B - Apache $B$OA4%W%m%;%9$N%"%$%I%k%9%l%C%I$N9g7W?t$r8+@Q$b$C$F!"(B - <directive module="mpm_common">MinSpareThreads</directive> $B$H(B + ディレクティブで設定されます。その後の稼働中に、 + Apache は全プロセスのアイドルスレッドの合計数を見積もって、 + <directive module="mpm_common">MinSpareThreads</directive> と <directive module="mpm_common">MaxSpareThreads</directive> - $B$G;XDj$5$l$?HO0O$NCf$K$3$N?t$,<}$^$k$h$&$K(B fork $B$7$?$j(B - kill $B$7$?$j$7$^$9!#$3$NA`:n$OHs>o$K<+N'E*$J$N$G!"(B - $B$3$l$i$N%G%#%l%/%F%#%V$r%G%U%)%k%HCM$+$iJQ99$9$kI,MW$O(B - $B$a$C$?$K$J$$$G$7$g$&!#(B - $BF1;~$K1~Ez$9$k$3$H$N$G$-$k%/%i%$%"%s%H?t$N:GBg?t(B - ($B$D$^$jA4%W%m%;%9Cf$NAm%9%l%C%I?t$N:GBgCM(B) $B$O(B + で指定された範囲の中にこの数が収まるように fork したり + kill したりします。この操作は非常に自律的なので、 + これらのディレクティブをデフォルト値から変更する必要は + めったにないでしょう。 + 同時に応答することのできるクライアント数の最大数 + (つまり全プロセス中の総スレッド数の最大値) は <directive module="mpm_common">MaxClients</directive> - $B%G%#%l%/%F%#%V$G7hDj$5$l$^$9!#(B - $B3hF0Cf$N;R%W%m%;%9?t$N:GBgCM$O(B - <directive module="mpm_common">MaxClients</directive> $B$r(B - <directive module="mpm_common">ThreadsPerChild</directive> $B$G3d$C$?(B - $B$b$N$K$J$j$^$9!#(B</p> + ディレクティブで決定されます。 + 活動中の子プロセス数の最大値は + <directive module="mpm_common">MaxClients</directive> を + <directive module="mpm_common">ThreadsPerChild</directive> で割った + ものになります。</p> - <p>$B3hF0Cf$N;R%W%m%;%9$N?t$H;R%W%m%;%9Cf$N%5!<%P%9%l%C%I$N?t$N1[$($i$l$J$$(B - $B>e8B$r@_Dj$9$k%G%#%l%/%F%#%V$,Fs$D$"$j$^$9!#$3$l$i$O%5!<%P$r(B - $B40A4$KDd;_$7$F!":F5/F0$9$k$3$H$G$7$+JQ99$9$k$3$H$O$G$-$^$;$s!#(B + <p>活動中の子プロセスの数と子プロセス中のサーバスレッドの数の越えられない + 上限を設定するディレクティブが二つあります。これらはサーバを + 完全に停止して、再起動することでしか変更することはできません。 <directive module="mpm_common">ServerLimit - </directive> $B$O3hF0Cf$N;R%W%m%;%9$N1[$($i$l$J$$>e8B$r@_Dj$7!"(B - <directive module="mpm_common">MaxClients</directive> $B%G%#%l%/%F%#%V(B - $B$NCM$r(B <directive module="mpm_common"> - ThreadsPerChild</directive> $B$NCM$G3d$C$?CM0J>e$G$"$k(B - $BI,MW$,$"$j$^$9!#(B<directive module="mpm_common">ThreadLimit</directive> $B$O(B - $B%5!<%P%9%l%C%I$N1[$($i$l$J$$>e8B$G!"(B<directive - module="mpm_common">ThreadsPerChild</directive> $B%G%#%l%/%F%#%V$N(B - $BCM0J>e$G$"$kI,MW$,$"$j$^$9!#%G%U%)%k%H0J30$NCM$r;XDj$9$k>l9g$O(B - $BB>$N(B <module>worker</module> $B%G%#%l%/%F%#%V$h$j$bA0$K=q$+$l$F$$$k(B - $BI,MW$,$"$j$^$9!#(B</p> - - <p>$B3hF0Cf$N;R%W%m%;%972$K2C$($F!">/$J$/$H$b0l$D$N%5!<%P%9%l%C%I$,(B - $B4{B8$N%/%i%$%"%s%H$+$i$N@\B3$r07$C$F$$$k=*N;$7$h$&$H$7$F$$$k(B - $B;R%W%m%;%9$,$"$k2DG=@-$,$"$j$^$9!#=*N;Cf$N%W%m%;%9$O(B <directive - module="mpm_common">MaxClients</directive> $B$G;XDj$5$l$??t$^$G(B - $BB8:_$G$-$^$9$,!"<B:]$K4|BT$5$l$k?t$O$:$C$H>/$J$/$J$j$^$9!#$3$N(B - $B?6Iq$$$O3F;R%W%m%;%9$r=*N;$5$;$J$$$h$&$K$9$k$3$H$G2sHr$G$-$^$9!#(B - $B$3$l$O0J2<$NMM$K$7$F<B8=$G$-$^$9!#(B</p> + </directive> は活動中の子プロセスの越えられない上限を設定し、 + <directive module="mpm_common">MaxClients</directive> ディレクティブ + の値を <directive module="mpm_common"> + ThreadsPerChild</directive> の値で割った値以上である + 必要があります。<directive module="mpm_common">ThreadLimit</directive> は + サーバスレッドの越えられない上限で、<directive + module="mpm_common">ThreadsPerChild</directive> ディレクティブの + 値以上である必要があります。デフォルト以外の値を指定する場合は + 他の <module>worker</module> ディレクティブよりも前に書かれている + 必要があります。</p> + + <p>活動中の子プロセス群に加えて、少なくとも一つのサーバスレッドが + 既存のクライアントからの接続を扱っている終了しようとしている + 子プロセスがある可能性があります。終了中のプロセスは <directive + module="mpm_common">MaxClients</directive> で指定された数まで + 存在できますが、実際に期待される数はずっと少なくなります。この + 振舞いは各子プロセスを終了させないようにすることで回避できます。 + これは以下の様にして実現できます。</p> <ul> <li><directive module="mpm_common"> - MaxRequestsPerChild</directive> $B$NCM$r(B 0 $B$K@_Dj$9$k(B</li> + MaxRequestsPerChild</directive> の値を 0 に設定する</li> <li><directive module="mpm_common"> - MaxSpareThreads</directive> $B$NCM$r(B + MaxSpareThreads</directive> の値を <directive module="mpm_common">MaxClients</directive> - $B$HF1$8CM$K$9$k(B</li> + と同じ値にする</li> </ul> - <p><module>worker</module> MPM $B$NE57?E*$J%W%m%;%9!&%9%l%C%I@)8f$N(B - $B@_Dj$G$O!"<!$N$h$&$K$J$j$^$9!#(B</p> + <p><module>worker</module> MPM の典型的なプロセス・スレッド制御の + 設定では、次のようになります。</p> <example> ServerLimit 16<br /> @@ -127,21 +127,21 @@ ThreadsPerChild 25 </example> - <p>$BDL>o(B Unix $B$G$O?F%W%m%;%9$O(B 80 $BHV%]!<%H$K%P%$%s%I$9$k$?$a$K(B - <code>root</code> $B$G5/F0$5$l$^$9$,!";R%W%m%;%9$d%9%l%C%I$O(B - $B$b$C$HDc$$8"8B$N%f!<%6$G(B Apache $B$K$h$C$F5/F0$5$l$^$9!#(B - <directive module="mpm_common">User</directive> $B$H(B - <directive module="mpm_common">Group</directive> $B%G%#%l%/%F%#%V$O(B - Apache $B$N;R%W%m%;%9$N8"8B$r@_Dj$9$k$N$KMQ$$$i$l$^$9!#(B - $B;R%W%m%;%9$O%/%i%$%"%s%H$KAw$k%3%s%F%s%DA4$F$rFI$a$J$$$H$$$1$^$;$s$,!"(B - $B2DG=$J8B$jI,MW:G>.8B$N8"8B$N$_$r;}$C$F$$$k$h$&$K$9$k$Y$-$G$9!#(B - $B$5$i$K!"(B<program>suexec</program> - $B$,;HMQ$5$l$F$$$J$$8B$j!"$3$l$i$N%G%#%l%/%F%#%V$O(B - CGI $B%9%/%j%W%H$G7Q>5$5$l$k8"8B$b@_Dj$7$^$9!#(B</p> + <p>通常 Unix では親プロセスは 80 番ポートにバインドするために + <code>root</code> で起動されますが、子プロセスやスレッドは + もっと低い権限のユーザで Apache によって起動されます。 + <directive module="mpm_common">User</directive> と + <directive module="mpm_common">Group</directive> ディレクティブは + Apache の子プロセスの権限を設定するのに用いられます。 + 子プロセスはクライアントに送るコンテンツ全てを読めないといけませんが、 + 可能な限り必要最小限の権限のみを持っているようにするべきです。 + さらに、<program>suexec</program> + が使用されていない限り、これらのディレクティブは + CGI スクリプトで継承される権限も設定します。</p> <p><directive module="mpm_common">MaxRequestsPerChild</directive> - $B$O!"8E$$%W%m%;%9$rDd;_$7$F?7$7$$%W%m%;%9$r5/F0$9$k$3$H$K$h$C$F!"(B - $B$I$NDxEY$NIQEY$G%5!<%P$,%W%m%;%9$r%j%5%$%/%k$9$k$+$r@)8f$7$^$9!#(B</p> + は、古いプロセスを停止して新しいプロセスを起動することによって、 + どの程度の頻度でサーバがプロセスをリサイクルするかを制御します。</p> </section> <directivesynopsis location="mpm_common"><name>AcceptMutex</name> |