mongrel + MySQL で rails を安定動作させる
先週半ばに、いろんなところが不十分ながらも時間に追われるように本番運用に投入した rails アプリ。僕にとっては、お遊びじゃない初めての rails アプリ。企画段階でしばらくペンディングしていたものが正式に中止となった後で、契約が取れたおかげで(せいで?)急にやることに決まって、実質開発期間が一か月無かった。仕様とデザインがほぼ完璧に固まっていたのが唯一の救い。土日もGWもコーディングしていた。
<p>ようやく最低限の実装が終わってサービスを提供できるようになったものの、mongrel が数十分~数時間で落ちてしまう。仕方がないので Apache mod_balance + mongrel 3プロセス + monitで30秒毎に監視、という環境にしてみた。落ちてもカバーできるようにしたつもりなのに、平均して30分に一回程度、止まる。しかも3プロセス全部、一度に。monit が復旧してくれるから、致命傷にはならないものの、このままでいいはずがない。</p>
<p>MySQL のライブラリを ruby ベースのものから Cベースのものに入れ替えたら、落ちなくなった。
<blockquote>
WARNING: You’re using the Ruby-based MySQL library that ships with Rails.
This library is not suited for production. Please install the C-based MySQL
library instead (gem install mysql).
</blockquote>
とログに出ていたのは認識していたのだけど、こんなに効果があるとは。動作も少し速くなったし、いいことずくめ。</p>
<p>これで安心して残りの機能の実装に進める。</p>