sbのmod_perlによる高速化(PerlRun編)

sb入れてみてすぐに思ったのが「重い!!!!」ということ。

ppcLinuxとはいえ、OpenBlocksSという超ロースペックマシンで動いているから仕方がない。いまどきのPCをサーバにすれば全然問題ないのであろうが、時間を費やしマシンを移行し、かつOpenBlocksSの省スペース性を捨て去る気はない。とはいえ、クラシックCDコーナーのお客様に、ここままでは呆れられてしまう危険がある。

というわけで、現行のプラットホーム上で高速化を試みる。
Apache上でのperlCGIの高速化といえば、mod_perlである。

mod_perlは何通りかの高速化手法を提供するが、結論から言うとApache::RegistryというCGI自体をキャッシュしてしまう一番早い手法はNGで、今回はCGIプロセス起動のオーバヘッド(インタープリタのロード)とプリロードを行う、Apache::PerlRunハンドラを使用した。

この方式は、通常のCGIスクリプト形式のままでの実行をエミュレートしてくれることになり、問題が発生することが少ない。また、Perlインタプリイタのロードと、 標準モジュールロードのオーバヘッドがないという利点があります。

前置きが長くなりましたが、以下手順。
1、mod_perlをインストールする
上記mod_perlのサイトからApache1.3系を使用の場合はver1を、Apache2.0系を使用の場合はver2をダウンロードし、下記手順に従いインストール。

# tar zxvf mod_perl-1.0-current.tar.gz
# cd mod_perl-1.29
# perl Makefile.PL \
> USE_APXS=1 \
> WITH_APXS=/usr/local/httpd_mt/bin/apxs \
> EVERYTHING=1
# make
# make install

2、Apache::Requestをインストールする
CPANからインストールする。なお、CPAN初回起動時はいろいろ聞かれるが、画面の指示に従い進めること。

# perl -MCPAN -e shell
cpan> install Apache::Request

3、httpd.confの編集
以下は、

・/hogehoge/cgi-bin/sbにsbがインストールされている
・sbのみをmod_perl環境で動かしたい

場合の設定です。
一番上の行で、sb/libとsb/extを@INCにセットしてあげます。

====
PerlSetEnv PERL5LIB /hogehoge/cgi-bin/sb/lib:/hogehoge/cgi-bin/sb/ext


SetHandler perl-script

PerlHandler Apache::PerlRun
Options +ExecCGI
PerlSendHeader On

====

さらにmod_perlがきちんと動いているか確認するために、perl-stausを設定します。

====

SetHandler perl-script
PerlHandler Apache::Status

====

5、Apacheのリスタート
apachectl restartなどでApacheをリスタートします。
あとはテストをし確認します。

倍以上は早くなった感覚(正確にベンチマーク取ったわけではなく感覚ベースですが)。元が遅すぎたのだが、実用に耐えうるくらいになった。
- | comments (0) | trackbacks (0)

Comments

Comment Form

icons:

Trackbacks