mod_perl で、Apache::DBI を使って DB 接続を永続化覚え書き。
最初 mod_perl-1.21 (Kondara1.2, Apache-1.3.14) の環境に ApacheDBI-0.88 をインストールしたのだが、 httpd.conf に
PerlModule Apache::DBI
と記述すると、httpd が起動しなくなる。エラーログにも何も痕跡を残さないので、何が何やら。 startup.pl に記述したりもしたが結果は同じ。
mod_perl を 1.25 に上げてみる。1.21 は RPM パッケージで入ってるので、まずはこれを
rpm -e mod_perl
でアンインストール。その後、CPAN から落としてきた mod_perl-1.25.tar.gz を展開して、
$ perl Makefile.PL USE_APXS=1 WITH_APXS=/usr/sbin/apxs EVERYTHING=1 $ make # make install
で、DSO としてインストール。すると、Apache::DBI が正常に起動するようになった。 なんだか原因が分からないのですっきりしないが、まあ。
さて、startup.pl に
use Apache::DBI;
等として Apache::DBI を有効にすると・・・ httpd のプロセス毎にバックエンドが立ち上がったままになる。 接続を切らないでいるんだから当然なんだろうけど、無闇にプロセスが増えるなあ < 貧乏性。 メモリはやっぱり、潤沢に積むべきですな。128MB では厳しい。
メモリと引き換えに、パフォーマンスは確かに上がる。某所の仕事で作った BBS、 Apache::DBI を使わないと一回の処理に平均 0.2 秒弱掛かってたのが、 0.1 秒程度に。つまり DB 接続の為に毎回 0.1 秒余計に掛かってたということで。
Apache 付属の負荷測定(?) ツール、ab で
ab -c 10 -t 100 'http://hoge/hoge'
のようにして測定した場合でも、明らかにパフォーマンス (1秒あたりのトランザクション回数) が向上しているので、まずは満足。