SCGIでrailsが速くなった!

コメントで教えていただいたSCGIを導入したら、劇的に速くなりました!
ありがとうございます!>ささださん、id:zhestoさん
#ささださんのコメント日時に正直びびりますた。


やはりCGI呼び出しの負荷が大きすぎたようです。
ていうか、性能低すぎ。玄箱(無印)。


id:zhestoさんのblogからたどって
http://bohnsack.com/2005/12/20/scgi-and-rails-on-apache-13x/
を見ながら設定しました。

ウチの玄箱Debian/sargeを入れてるので、最初SCGIだけは

apt-get install libapache-mod-scgi

とインストールしたんです。

で、httpd.confを設定してから

/etc/init.d/apache restart

したら

Configuration syntax error detected. Not reloading.

Syntax error on line 1105 of /etc/apache/httpd.conf:
Invalid command 'SCGIMount', perhaps mis-spelled or defined by a module not included in the server configuration

となってなぜか失敗するんです。
色々不毛な調査時間の後、mod_scgiのバージョンを確認してみたらversion1.2.1でした。古っ。

power-pc版のDebianパッケージって結構こういうことあるんですよね...。orz


というわけで、きちんと前述のサイトのリンクから最新(1.9)ソースを持ってきてapxsコマンドでインストールしたところ、無事に動作したというわけです。

メモ

なお、実際の設定として
/etc/apache/modules.confに

LoadModule scgi_module /usr/lib/apache/1.3/mod_scgi.so

の1行を追加して、/etc/apache/conf.d/scgi.confという新規ファイルに

<VirtualHost xxx.xxx.xxx.xxx>
ServerAlias YYYYYYYY
DocumentRoot /XXX/YYY/XZZZ

SCGIMount / 127.0.0.1:9999

<locationmatch \..+$>
  SCGIHandler Off
</locationmatch>

<directory "/XXX/YYY/ZZZ">
  Options +FollowSymLinks
  Order allow,deny
  allow from all
</directory>
</VirtualHost>

と設定しました。


rails側は前述のサイト通りの方法でセットアップしました。
↓というコマンドでSCGIをコントロールするわけですね。

$ scgi_ctrl start
$ scgi_ctrl status
$ scgi_ctrl stop