Debian に Kyoto Tycoon、Net_KyotoTycoon をインストール

前回の記事でカウンタを SQLite3 に移行することに成功したのだが、なんか妙にパフォーマンスが安定しない。何度か F5 で読み込み直すと 100msec ちょっとぐらいで返ってきたり(それでも遅いけど)、500msec 以上掛かったり。
もしかして SQLite2 だと問題ないのかなと思い結局 php-sqlite を入れたりして実験してみると、確かに SQLite2 のコードの方が安定して 100msec を切っていた(それでも同時アクセスが集中すると簡単に遅くなっていく)。

アクセスが少ないんだからそれでいいじゃんという話もあるが、せっかく好き放題できるサーバなのだから好き放題やってみようと思い、Kyoto Tycoon のサーバを立てて PHP からアクセスさせてみることにした。こんなアクセスの少ないサイトに対してこんな豪華なものが使えるなんて幸せだ。

mikio さんのチュートリアルを参考にインストールする。とは言っても王道の流れで入れられるので特に壁になるようなことはない。
apt-get install g++
wget http://fallabs.com/kyotocabinet/pkg/kyotocabinet-1.2.24.tar.gz
tar -zxf kyotocabinet-1.2.24.tar.gz
pushd kyotocabinet-1.2.24
./configure
make
make install
popd
wget http://fallabs.com/kyototycoon/pkg/kyototycoon-0.9.7.tar.gz
tar -zxf kyototycoon-0.9.7.tar.gz
pushd kyototycoon-0.9.7
./configure
make
make install
チュートリアルのように ktserver を起動して、ktremovemgr から set をしようとすると接続に失敗した。これは恐らく iptables によるものだと思うので、ループバックインターフェイスを正しく経由するように明示的に -h localhost を加えることで上手く動いた。
問題なく動いているようなので、PHP からアクセスできるように Net_KyotoTycoon をインストールする。これは pear 経由でインストールする必要がある。こちらを参考にしながら進める。
apt-get install php-pear
pear channel-discover openpear.org
pear install HTTP_Request2-alpha
pear install openpear/Net_KyotoTycoon-beta
インストールもできたので実際にスクリプトを書いてみると安定して 30msec でレスポンスが返ってくるようになった。素晴らしい。

実際に運用させるにあたり、取りあえずデータベースファイル置き場を準備する。
cd /usr/local
mkdir ktserver
cd ktserver
mkdir db
chown www-data db
chgrp www-data db
続いていつものように daemontools 経由で起動させるために run スクリプトを設置する。
そのままだと root 権限で動いてしまうので setuidgid で www-data に切り替えて走らせる。
cd /etc/service
mkdir ktserver
vim run
#!/bin/sh
exec 2>&1
exec setuidgid www-data ktserver -host 127.0.0.1 -le /usr/local/ktserver/db/counter.kch
chmod 700 run
これといったチューニングはしていないけどそこまでシビアな要求に答えるわけではないのでよしとしよう。