えっと、これは実はけっこう簡単にできます。 Musha さんの「tDiary を FastCGI 化」を参考に、というかほぼそのまんまいただいて
#!/usr/bin/env ruby $MY_DIR = File.dirname(__FILE__) $LOAD_PATH.unshift $MY_DIR require 'fcgi' FCGI.each_cgi { |cgi| begin $CGI = cgi def CGI::new; $CGI; end load File.join($MY_DIR, 'index.rb') ensure class << CGI; remove_method :new; end end }
というファイルを index.fcgi として .htaccess で
DirectoryIndex index.fcgi AddHandler fastcgi-script .fcgi
とやるだけです (letmesee.conf の @index も必要に応じて変更)。
また、mod_ruby で動かすと、以前はよく SEGV メッセージが error_log に出ていたのですが、さっき試してみるとちゃんと動きました。
ab (Apache Benche) で -n 100 で測定 (広辞苑第五版を「あさひ」で完全一致検索) してみると以下の通りでした。
# index.rb (normal CGI) Requests per second: 9.55 [#/sec] (mean) # index.fcgi (FastCGI) Requests per second: 22.07 [#/sec] (mean)
# index.rbx (mod_ruby) Requests per second: 33.61 [#/sec] (mean)
久しぶりにコミットしたような気がします。:)
YAML 形式は PStore 形式よりも遅いでしょうが、中身がテキストファイルですので一括置換とか履歴管理などに役立つと思います。普段は PStore で運用しておいて、cron で ioconv を走らせて、その結果の YAML をバックアップ、みたいな運用もよいでしょう。
ということで。