Ruby on Rails アプリ (v2.3.8) でcollectiveidea のdelayed_jobを使用しており、8GB RAM の Slicehost マシン (Ubuntu 10.04 LTS、Apache 2) で約 40 のバックグラウンド ジョブを実行しています。
ワーカーが実行されていない状態でサーバーに ssh したとします。実行するとfree -m
、一般的に 8 GB のうち約 1 GB の RAM を使用していることがわかります。次に、ワーカーを開始し、コードがそれらを使用するのを約 1 分待った後、最大で約 4 GB になりました。1 時間か 2 時間後に戻ってくると、8 GB になっていてスワップ メモリが使用されており、Web サイトで 502 エラーが発生しています。
これまでのところ、ワーカーを殺して再起動するだけでしたが、問題の根本を修正したいと思います。何かご意見は?これはメモリリークですか?または、友人が提案したように、ガベージ コレクションを実行する方法を理解する必要がありますか?