Railsでファイルディスクリプタが枯渇する問題

ShootingStarでcometなRailsアプリ(モテカワスリムで恋愛体質の愛されガール♪みたいだ)では、DBへの接続がGCされないことがあるかも?という話。

今comet(ShootingStar)なRailsアプリを書いているのですが、script/serverをしばらく動かしていると一定の期間で必ず500を返すようになるという問題に見舞われました。ログを見ると、まずDBに接続できなくなり(SQLite3の例外が出る)、次に"no such file to load: application.rb"等とある。怪しいなと思ってActivityMonitorでプロセスの状態を見ると、development.sqlite3を開きまくっていて、ファイルディスクリプタの上限に引っ掛かってる。

HTTPのKeep-Aliveが有効だと、サーバのプロセスに接続が溜まっていって、GCされないオブジェクトが増えるのかも、と予想したら、どうもやはりそういうことはあるらしい(http://www.debianhelp.co.uk/performancelighttpd.htm)ので、Keep-Aliveを切ってみたけども、やっぱりdevelopment.sqlite3を開きまくって落ちる。

Keep-Aliveじゃないとしたら、次に考えられるのはshooting_starとのDRb接続が有効なままなので、そこから参照されているDB接続がGCされないのでは?と予想した。←いまここ