frei

旧「anney's room」からブログ「frei」だけ引っ越し&残しました

Apache::DProf。

前の職場でvmware上のCentOSApache::DProf 入れてた同僚さんがいて

なるほど、便利やね〜…と思いつつも試す機会がなかった。

が、再び今の現場でも「あったらいいのにねぇ」と思うタイミングがあったので

家の vmware に入れてみたメモ。訳あって apache1.3系です。

勿論、mod_perl 入り。

Apache::DProf のインストール

いつものように「perl -MCPAN -e 'install Apache::DProf'」で入ります。

httpd.conf に書き足した部分

SetHandler perl-script

PerlModule Apache::DProf

PerlModule Apache::Registry

PerlHandler Apache::Registry::handler

PerlSendHeader On

「PerlHandler Apache::Registry」を設定しているところに

「PerlModule Apache::DProf」を書き足しただけだと

[Mon Sep  1 01:59:43 2008] [error] Undefined subroutine &Apache::Registry::handler called.\n

…なんてエラーが出たりする事があるので、

PerlModule Apache::Registry」「PerlHandler Apache::Registry::handler」と設定。

・tmon.out の保存先を設定

apache の logs ディレクトリ配下に dprof ディレクトリを作成して、

apache のUser/Group用に書き込み権限を与えておく。

apache の再起動

例によって mod_perl 環境下では

「apachectl restart」やら「apachectl graceful」だとコケる可能性大なので

「apachectl stop」して ps -ef でプロセス確認してから

「apachectl start」がお勧め。

それから、Apache::DProfにトレースして欲しいスクリプトブラウザーで叩き、

一度、apachectl stop すると、今叩いた分の tmon.out が

さっき作った dprof/PID/tmon.out として保存される模様。

一度 stop しないと保存されないのが結構ポイント。

ここを見て、やっとそれに気付いたのでしたorz

てな訳で、保存された tmon.out は例によって

dprofpp logs/PID/tmon.out などと打てば、

ダダーっといつもの表を表示してくれるのでして、

さらにいつものように dprpfpp -t で全通過メソッドも確認出来るのでした。便利ー。

[root@localhost dprof]# dprofpp 4825/tmon.out

Exporter::import has -3 unstacked calls in outer

Exporter::Heavy::heavy_export_ok_tags has 1 unstacked calls in outer

Exporter::export_ok_tags has -1 unstacked calls in outer

Exporter::export has -2 unstacked calls in outer

Exporter::Heavy::heavy_export has 5 unstacked calls in outer

Total Elapsed Time = 238.9550 Seconds

User+System Time = 0.545048 Seconds

Exclusive Times

%Time ExclSec CumulS #Calls sec/call Csec/c Name

17.4 0.095 0.352 17 0.0056 0.0207 base::import

12.1 0.066 0.090 6 0.0109 0.0150 Ima::DBI::BEGIN

7.34 0.040 0.040 4 0.0100 0.0100 DynaLoader::bootstrap

7.16 0.039 0.044 7 0.0056 0.0063 Class::DBI::_require_class

3.67 0.020 0.020 1 0.0200 0.0200 DBD::mysql::db::_login

3.67 0.020 -0.000 2 0.0099 - Exporter::export

3.67 0.020 0.038 1 0.0196 0.0381 DBI::install_driver

3.67 0.020 0.019 7 0.0028 0.0027 IO::Handle::BEGIN

3.67 0.020 0.492 5 0.0039 0.0983 Apache::ROOT::cgi_2dbin::test_2ecgi::BEGIN

3.49 0.019 0.057 7 0.0028 0.0082 IO::File::BEGIN

3.30 0.018 0.147 20 0.0009 0.0074 Class::DBI::BEGIN

1.83 0.010 0.010 1 0.0100 0.0100 AutoLoader::import

1.83 0.010 0.010 1 0.0100 0.0100 warnings::register::import

1.83 0.010 0.010 4 0.0025 0.0025 XSLoader::load

1.83 0.010 0.010 2 0.0049 0.0049 Anigon::DBI::BEGIN

まだまだ試してない事いっぱいあるなー。

もっと勉強せなー。