2007年11月6日火曜日

RonR: FastCGIを少しマジメに試す.

…なんか気分が悪いので解決までがんばろうといろいろ頭をひねる.が簡単だった.
#irbrcを理解しようなんて思わなければ…

(環境MacOS X 10.5 Leopard)
とりあえず先にあった/etc/irbrcというファイルを空っぽにしたら動いた.
#Leopard...
> sudo mv /etc/irbrc /etc/irbrc.original
> sudo touch /etc/irbrc


で,とりあえず速度を測ってみる.
> sudo /usr/sbin/apachectl restart
> ab -n 10 http://127.0.0.1/rails/bookmarks/

FastCGIなし 平均4494ms
FastCGIあり 平均3197ms

…あれ?あんまり変わらない?
/var/log/apache2/error_logをみるとプロセスが5つあがっていた.
プロセス起動が5回含まれたのか10回計測でやればそりゃ遅いよね.
で,はそのまま続けてもう一度abを実行
FastCGIあり 平均661ms

おお.効果があるのね.

FastCGIの最適化が必要ってことか…それっぽい設定についてWebで調べた.

pools.jp
Apache2.2+fastcgiで Ruby on Rails
http://pools.jp/2007/03/15/ruby-rails-apache-fastcgi-setup/


ふむ.
「httpd関連の設定ファイルをいじる」中の「fastcgi.conf」を参考に/etc/apache2/other/fastcgi.confを作成してみる.
(moduleの位置だけ直してみた.)
LoadModule fastcgi_module libexec/apache2/mod_fastcgi.so
FastCgiConfig -idle-timeout 30 -maxClassProcesses 1 -initial-env RAILS_ENV=development -startDelay 30
FastCgiIpcDir /var/run/fastcgi
AddHandler fastcgi-script .fcgi


先にいじったhttpd.conf中のfastcgiモジュールは再度コメントアウト(無効)にし直しておく.
#.htaccessはそのまま.fcgiを有効にしておいた.

で試す.
#maxClassProcessesが1ってことはプロセスは1つだけってことだろうね.
##Logを見る限りそうでした.

> sudo /usr/sbin/apachectl restart
> ab -n 10 http://127.0.0.1/rails/bookmarks/

FastCGIあり 1回目 平均1046ms

> ab -n 10 http://127.0.0.1/rails/bookmarks/

FastCGIあり 2回目 平均295ms


効果あるじゃん!.
もっと複雑なことをさせたらわからんがとりあえずこんな感じ.

誰かの役に立ったら幸いです.
#で/etc/irbrcの問題は…ううう.
##rubyもっと勉強しよう…

0 件のコメント: