酒日記

2003 02 11

Tue, 11 Feb 2003

Old Parr (43% × 80 ml)

仕事の都合上、FastCGI のお勉強。 うちの会社では、負荷のかかる CGI は mod_perl で開発するのが標準なのだが、他のところで開発したシステムの後継ぎをすることになり。 それが FastCGI だそうな。

本家

言語は Perl 限定ではなく、Webサーバも Apache 限定ではない。 が、自分が使うのは Apache + Perl なので、とりあえず mod_fastcgi のモジュールを Apache に組み込む。DSO で。

$ tar xzvf mod_fastcgi-2.4.0.tar.gz
$ cd mod_fastcgi-2.4.0
$ /usr/sbin/apxs -o mod_fastcgi.so -c *.c
# /usr/sbin/apxs -i -a -n fastcgi mod_fastcgi.so

httpd.conf に

LoadModule fastcgi_module     modules/mod_fastcgi.so
AddModule mod_fastcgi.c

を書き加えて httpd を restart 。

.htaccess には

AddHandler fastcgi-script fcgi

として、拡張子 .fcgi で FastCGI が起動するようにする。

CGI のほうは以下の調子で。(ドキュメントを読めば書いてあることだが)

#!/usr/bin/perl

use CGI::Fast;
while(my $q = CGI::Fast->new){
    # ここに自分の CGI の処理を書く。
}

初回のリクエスト時に mod_fastcgi がプロセスを起動。 以後、起動されたプロセスは無限ループして常駐し、リクエストごとに上記 while の中の処理が実行される。 一旦起動されたプロセスは (exit とか die とかしない限り) 生き続けるので、実行中にスクリプトの中身を書き換えても反映されない。 これはちょっと不便だが、生きているプロセスを kill して殺すと、mod_fastcgi が自動的に再起動してくれる。

同時に起動するプロセス数の管理などは、(httpd.conf でもできるが) FCGI::ProcManager という Perl モジュールを使うと便利そう。

mod_perl と比べた利点は、httpd とは独立した別プロセスで実行されるので httpd が太らない。 また、実行するプロセス数を管理しやすい。 mod_perl では、スクリプトを実行する httpd と静的ファイルを配信する httpd は同じものなので、 起動するプロセスを絞ろうとして MaxClients を低く設定すると、静的ファイルの配信に影響を及ぼす可能性あり。 (まあ、Apache の前に Squid などで Reverse Proxy を設置してやればいいのだけど)

欠点は……いわゆる CGI として動作させるのであれば、特に欠点はないかも。 もっとも mod_perl は CGI の高速化だけでなく、Apache モジュールを Perl で手軽に書くことができる、という利点 (というかそもそもの mod_perl の目的) があるわけで、要は適材適所。


モルツ (5% × 1000 ml)

めしを食おうと渋谷駅周辺をうろついていて、尾道ラーメン 道玄亭 というラーメン屋を見つけたので入ってみる。

尾道ラーメン (¥500) を注文。

麺は中太の平打ち麺で、これはまあまあ。が、スープがちょっと。 醤油風味のスープに背脂が浮いているのだが、ベースのスープがあまりにそっけない。 醤油をお湯で溶いたような、というといいすぎだが、とにかくダシもコクも感じられず。 背脂のぎっとりした風味があっさり過ぎるスープと馴染んでおらず、味が分離している。

更にチャーシューが。 薄くてパサパサで味がなくて、まあそれだけだったら無視するのだけど、なぜか妙にヒネたくさみがある。これははっきりいって不味い。


powered by blosxom