さくらのVPS上のDebianが高負荷になる問題が解決できず、ダメ元でRedmineの実行をfastcgiからPassengerに切り替えてみた。rubyのプロセスが残りまくる状態があってそれが原因かどうか定かではないのだがfastcgiやredmineをデバッグする気にもならないので(そもそもLoad avarageが100とかになってログインもできず、ゲストOSを再起動して回避していたので調査自体が面倒)とりあえずPassengerで安定すれば結果オーライということで切り替え。
Debian/UbuntuでのPassengerのインストール
簡単に入れられるようになったものだ。
sudo apt-get install libapache2-mod-passenger
fastcgiからpassengerでの設定変更
まず前提としてパス/redmineで運用している。
VirtualHostで設定していたのでその中に
<Location /redmine>
Options Indexes -ExecCGI FollowSymLinks -MultiViews
RailsEnv production
RailsBaseURI /redmine
</Location>
をいれる。
Passengerの場合Aliasでは動かないらしいのでsymlinkを張る。
# 例
ln -s /path/to/redmine/public /path/to/docroot/redmine
で.htaccessは使わないのでリネームして退避。
最後にfastcgiを無効にする。
sudo a2dismod fastcgi
sudo a2enmod passenger
sudo /etc/init.d/apache2 restart
トラブル: ログファイルが書き込まれない
なぜかlog/production.logが出力されず、調べたところPassengerはデフォルトではconfig/environment.rbの所有者で実行させるようだ。
http://www.modrails.com/documentation/Users%20guide%20Apache.html#PassengerUserSwitching
というわけで所有者を変えておく。
# 例
sudo chown user:group -R log tmp files
パフォーマンスについては体感的にはあまり違いはなさそう。これで安定してくれればいいのだが・・・・しばらく様子を見よう。