ubuntu

pstreeコマンド

pstreeは、プロセスの親子関係を可視化してくれるコマンドです。
ApacheのMPMの設定を確認するのにとても便利です。

Apacheが使っているMPMの確認

Apacheが使っているMPMがなにか確認するには、-Vオプションを使います。
Ubuntu/Debianでは、Apacheのプロセスは、apache2です。
他のディストリビューションの場合は、httpdコマンドを使います。
Ubuntu 10.04では、workerを使っているようです。
workerは、マルチプロセス、マルチスレッドのハイブリッド型のMPMです。

$ apache2 -V | grep mpm
-D APACHE_MPM_DIR="server/mpm/worker"
$

workerの設定を確認

/etc/apache2/apache2.confを確認します。
初期設定では、

  • 起動時に2プロセス(StartServers)起動
  • 1プロセス当り25スレッド起動

で50の待ち受けスレッドが作成されるようです。

<IfModule mpm_worker_module>
StartServers          2
MinSpareThreads      25
MaxSpareThreads      75
ThreadLimit          64
ThreadsPerChild      25
MaxClients          150
MaxRequestsPerChild   0
</IfModule>

pstreeコマンドでプロセスとスレッドの確認

pstreeコマンドで確認すると下記のようなプロセスツリーが確認できます。
root権限で起動されたプロセスからwww-dataで、いくつかapache2プロセスが起動されています。
1つ目は、Ruby on Railsを動かすための、passengerが動いているプロセスです。
2つ目と3つ目は、たぶん管理プロセスでしょうか。
4つ目と5つ目が設定に従って作成された2つのプロセスで、それぞれ80ポートをListenするスレッドとThreadsPerChildに指定された25スレッドの計26スレッドを持ったプロセスです。
同じ内容は、Apacheのserver-statusモジュールでも確認できます。

$ pstree -a
init
├─apache2 -k start
│   ├─ApplicationPool 0/usr/lib/phusion_passenger/passeng
│   │   ├─ruby
│   │   │   └─{ruby}
│   │   └─2*[{ApplicationPoo}]
│   ├─apache2 -k start
│   ├─apache2 -k start
│   ├─apache2 -k start
│   │   └─26*[{apache2}]
│   └─apache2 -k start
│       └─26*[{apache2}]
タイトルとURLをコピーしました