ITインフラ技術の実験室ITインフラ技術の実験室Linuxを中心に、仮想化やネットワーク、Windowsまで、ITインフラ技術に関するノウハウを幅広く紹介します。Flash)はじめにApache2.2の基本設定、バーチャルホスト設定、ログ設定等はApache2.2の設定にまとめていますので参照してみて下さい。preforkのMaxclients以外のパラメータ(StartServers、MinSpareServers、MaxSpareServers、MaxRequestsPerChild)についてはApache2.2のパフォーマンスチューニング(その1)にまとめていますので参照してみて下さい。載っていたApache2のチューニングをしてみることにしました(ここに書いてあることは間違いだらけかもしれません...がご了承下さい)。チューニングをする意味があるほどのアクセスは当サイトにはありませんが、マシンリソースを使い切るほどの攻撃を受けないとも限りませんので、本記事ではMaxClientsが適切な値になっているかを確認したいと思います。適切なMaxClientsの値を調べるため、まずはApacheの1プロセスが使用するメモリ容量を調べます。(STAT|apache)preforkのためPID(プロセスID)とLWP(スレッドID)は等しくなっています。rootユーザで起動しているのが親プロセスです。ここでは子プロセスの中から、例としてPID=12650の使用メモリ量を調べてみます。以下の、VmHWMの値(18376=約18M)が実際にプロセスの使用しているメモリ容量の最大値になります。上記で1プロセスが使用するメモリ容量が18Mであることを確認しましたが、実際にはapache2の親プロセスと子プロセスがコピーオンライト機能によりメモリを一部共用しているため、そのメモリサイズを上記18Mから引く必要があります。naoyaのはてなダイアリーでも紹介されている、共有メモリサイズを調べるPerlスクリプトを使用して、各プロセスが親プロセスと共用しているメモリ容量を調べます。4.PerlモジュールのLinux::Smapsが必要になります。最近はCPANよりもcpanmの方が主流になっているようですので、こちらのサイトを参考にさせて頂き、Linux::Smapsモジュールをインストールします。