2012-01-03 25 views
0

私はherokuでイベントマシンプロセスを実行していますが、1時間ほど後にメモリの制限値が512MBに達しているようです。イベントマシンのメモリ管理

Error R14 (Memory quota exceeded) 
Process running mem=531M(103.8%) 

私が反応器を通って、イベントの多くを実行しているので、私は多分、原子炉が(私は大きなキューとしてそれを想像しています)バックアップなっていると思っています:私はこのようなメッセージを見始めますか?しかし、何か他の理由があるかもしれない、私はまだイベントマシンにかなり新しいです。

イベントマシンのプロファイルを作成して統計情報を得る良い方法はありますか?簡単な例として、キューにスケジュールされたイベントの数を確認して、バックアップが取れているかどうかを確認し、それらをすべてメモリに保持することを期待していました。しかし誰かが他の提案をしているなら、本当に感謝します。

ありがとうございます!

答えて

0

漏れはMongoidのidentity_map(EventMachineとは関係ありません)にあることが判明しました。イベントマシンプロセスの開始時にMongoid.identity_map_enabled = falseを設定すると、それが解決されました。

0

私はeventmachineを広範囲に使用しており、原子炉内のメモリリークは一度も起こりませんでしたので、あなたの賭けはルビーコードですが、実際の答えを知ることは難しいです。

私は現在考えることができる唯一のキューはスレッドプールです.deferメソッドを使用するたびに、ブロックが空きスレッドに割り当てられているか、空きスレッドを待っています。すべてのスレッドがブロックしているとします待ち行列が成長し、使用可能なすべてのメモリーを使用できるものを待っています。