5

Rails 3.0.7、REE1.8.7を使用します。

応答がブラウザーに送信された後、Railsでコード(具体的にはガベージコレクション)を実行したいと思います。

応答がコントローラーからブラウザーに送信された直後にGC.startを呼び出すことができるように、Rails / Rack /何かにパッチを適用する方法はありますか?

*注:これは、delayed_jobまたはresqueを使用したい状況ではありません。私はこれらのツールをすでに知っており、このユースケースには適していません。*

4

2 に答える 2

1

乗客へのこの1行のパッチを使用すると、リクエスト間でGCを実行できます。それを実装した後、GCの実行時間(NewRelicによって報告された)が約40%減少したことがわかりました。個々の結果は異なる場合があります。:)

この投稿に感謝します。

于 2012-06-12T16:03:45.137 に答える
0

Merbでこれを行うことはできますが、Rails自体ではそれを行うことができません。必要なのがガベージコレクターを呼び出すことだけである場合は、要求が完了したら新しいスレッドを開始し、GCを呼び出します。このようにして、ユーザーへの応答を遅らせず、必要なものを取得できます。

Thread.new do 
  GC.start
end

本当にこれを行う必要がある場合は、おそらく2つのことを考える必要があります。オブジェクトの作成を減らすか、ガベージコレクターの実行がはるかに優れているJRubyで実行することです。

于 2012-06-07T22:05:37.353 に答える