質問に答えてくれたみんなに感謝し、注意を怠って申し訳ありませんが、質問を投稿してから 1 日後、Apache ログで次のようなエラーに気付き始めました (私は Passenger + Apache を使用しています)。
[ pid=21526, timestamp=1350608946 ] Process aborted! signo=SIGABRT(6), reason=SI_TKILL, signal sent by PID 21526 with UID 0, backtrace available.
--------------------------------------
[ pid=21526 ] Backtrace with 34 frames:
PassengerHelperAgent[0x525668]
/lib64/libpthread.so.0(+0xf4c0)[0x7fcabb2014c0]
/lib64/libc.so.6(gsignal+0x35)[0x7fcaba7059a5]
/lib64/libc.so.6(abort+0x175)[0x7fcaba707185]
big backtrace...
この問題について検索しましたが、同様の問題/バックトレースを持っている人を見つけることができませんでした。
それら、私は Passenger + Nginx に移行することにしました。
1 週間後、問題は解消されました。1 日に 1 回か 2 回発生していたことが、Nginx では 1 回も発生しませんでした。同じコード (まったく更新なし) と同じマシン。
この問題を再現することはできませんが、調査中に「File.close」メソッドを使用していくつかのテストを行いました。ファイルに書き込めない場合は常に例外がスローされます。
残念ながら、私はこの問題を掘り下げるのに十分な経験がなく、Nginx + Passenger にかなり満足しています。