Hatena::ブログ(Diary)

ksaitoの日記 このページをアンテナに追加 RSSフィード Twitter

2010-09-27 pstreeコマンド

[]pstreeコマンド 08:42 pstreeコマンドを含むブックマーク 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}]
トラックバック - http://d.hatena.ne.jp/ksaito11/20100927