ITインフラ技術の実験室ITインフラ技術の実験室Linuxを中心に、仮想化やネットワーク、Windowsまで、ITインフラ技術に関するノウハウを幅広く紹介します。Flash)はじめにApache2.2の基本設定、バーチャルホスト設定、ログ設定等はApache2.2の設定にまとめていますので参照してみて下さい。MaxclientsについてはApache2.2のパフォーマンスチューニング(その2)にまとめています。Module)としては以下の二つがあります。マルチスレッドとマルチプロセスのハイブリッド型マルチスレッドであるworkerの方が、スレッドがメモリ空間を共有していたり、スレッド切り替え時にメモリ共有しているため切り替えのためのコストが少ない等などの理由によりお勧めのようですが、本サイトのように大量のアクセスがあるわけではない環境ではどちらを採用してもあまりかわらなそうです(ちなみにマルチプロセス、マルチスレッドの比較についてはLinuxネットワークプログラミング(シングルプロセス、シングルスレッドで多重化)にも書いています)。いえ、preforkかworkerかでMaxClients関連の設定箇所が変わってきますので、まずApacheがPreforkとWorkerのどちらで動作しているのかを調べます。以下のように、当サイトではpreforkで動作していることが分かります。prefork.c...PHPを動かす環境ではworkerでなくpreforkを使用すべきようです(PHPのサイトを参照)そういえば、phpをインストールした際にapache2-mpm-workerが削除され、apache2-mpm-preforkがインストールされていた記憶があったので、ログを読み返してみたところ形跡が残っていました。apache2-mpm-worker{a}Apache2におけるpreforkの独自設定箇所を確認します。0</IfModule>これらの値をチューニングしていきますが、MaxClientsは長くなるので、別途Apache2.2のパフォーマンスチューニング(その2)にまとめるとして、本記事ではMaxClients以外の4つのパラメータ(StartServers、MinSpareServers、MaxSpareServers、MaxRequestsPerChild)に絞って解説します。StartServers/MinSpareServers/MaxSpareServersMinSpareServers/MaxSpareServersについては混んでいるサイト以外あまりいじるべきではないとApacheのサイトに記載があります。StartServersもApacheのサイトに「通常はこの値を調整する理由はあまりないでしょう」と記載があります。いえ挙動については把握しておきたいので、パラメータを調整した際の動作について確認してみたいと思います。auxでapacheのプロセス数を見てみます。auxで確認してみたところ、STATがS(待機状態)の子プロセス(rootが親プロセス)が10個ありました。起動時に生成される子サーバプロセスの数を設定します。通常はこの値を調整する理由はあまりないでしょう。start→Apacheを再起動したところ5つになりました。アイドルな子サーバプロセスの希望最小個数を設定します。アイドルプロセスとは、リクエストを扱っていないプロセスです。個の割合で新しい子プロセスを生成します。apache2.confのMinSpareServers/MaxSpareServersを以下の通り修正してみます。..起動直後のプロセス状態は以下の通りでした。start→StartServers(3個)からMinSpareServers(6個)まで生成されている途中段階のため4つあるのだと思われます。apache→MinSpareServersの6つまで増えていました。アイドルな子サーバプロセスの希望最大個数を設定します。アイドルプロセスとは、リクエストを扱っていないプロセスです。通常はabコマンド等を使用するのでしょうが、ここではとりあえずブラウザからサイトに大量アクセスした後、プロセス状態を確認します。start→子プロセスが12個まで増えました(RNがrunning分です。start→しばらくして再度確認すると、8個(MaxSpareServers設定値)まで減りました。STATがRのプロセスが消えるわけではない点が少し意外でした。本サイトではとりあえずApacheサイトに記載のあった通り、元の設定に戻しておきます。0</IfModule>Maxclentsについて長くなるので、別途Apache2.2のパフォーマンスチューニング(その2)にまとめます。MaxRequestsPerChildについてApacheの親プロセスが子プロセスをforkするまでのリクエスト数の設定になります。リクエスト数が設定した値に達するとforkを行い、親プロセスと子プロセスの共有が100%に戻るため、メモリの効率利用に繋がりますし、メモリリーク防止にもなります。設定されていましたが、その場合、子プロセスはforkされることなく動作し続けます。リクエストが多数のサイトでは、値が小さすぎるとプロセスの終了と生成が繰り返されるため、ある程度大きな値にしなければなりませんが、当サイトでは1024ぐらいにして様子を見たいと思います。1024</IfModule>次はMaxclientsの設定です。コメントをキャンセルメールアドレスが公開されることはありません。