SmallStyle


2005-08-28

_ tDiary on Lighttpd with FastCGI

なんとなくApache以外のWebサーバでtDiaryを動かしてみたい衝動にかられて,最近よくみるLighttpdを使ってみました.tDiaryを単純なCGIとして動かすだけであれば,最低限の設定をすることで難なく動かすことができました.この時点でApacheとLighttpdのベンチマークを比較してみると,

# Apache
Requests per second:    1.15 [#/sec] (mean)

# lighttpd
Requests per second:    1.17 [#/sec] (mean)

という結果で,まぁそう大差のない結果となりました.これではあまり面白みがないので,FastCGIを使ってどのくらい高速化できるかを試してみました.aptでlibfcgi-rubyをインストールして,LighttpdのFastCGIのモジュールを有効にします.設定は以下のようにしてみました.

fastcgi.server = (
        ".fcgi" => ( "localhost" =>
                (
                "max-procs" => 10,
                "socket" => "/tmp/tdiary.socket",
                "bin-path" => "/var/www/html/index.fcgi"
                )
        ),
)

呼び出すindex.fcgiは以下のようにしました.

#!/usr/bin/env ruby
$MY_DIR = File.dirname(__FILE__)
$LOAD_PATH.unshift $MY_DIR
Dir.chdir( File.dirname(__FILE__) )

require 'fcgi'

FCGI.each_cgi { |cgi|
        begin
                ENV.clear
                ENV.update(cgi.env_table)

                $CGI = cgi
                def CGI::new; $CGI; end

                load File.join($MY_DIR, 'index.rb')
        ensure
                class << CGI; remove_method :new; end
        end
}

上記コードは,tDiaryをFastCGI化LighttpdAndFastCGIを参考にしました.LighttpdAndFastCGIでも書かれていますが,

よくわかんないけど、lighttpdでFastCGIを実行すると、カレントディレクトリが '/' になる。

という影響からなのか,tdiary.confが読み込めないエラーが発生しました.これを解決するために,「Dir.chdir( File.dirname(__FILE__) )」を記述しています.このサーバではtDiaryを複数設置構成でインストールしてあるので,index.rbはシンボリックリンクになっています.で,これでベンチマークをとってみると…

# FastCGI
Requests per second:    2.11 [#/sec] (mean)

数値上は早くなったみたい.体感ではいまいちよくわからないですが….ベンチマークはとっていませんが,PHPをFastCGIで実行した結果は体感でも早くなったような気がします(気のせいかもしれませんが…).もうちょっといろいろさわってみて,問題なさそうならApacheからLighttpdに移行してみようかと思います.

つづき: 2006-03-21

about me

いろいろと興味を持ったことを書いてます.ちょっとしたことは hb(@smallstyle) on Twitter で書いてます.

Archive

2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|12|