私は Ruby on Rails を使用して小さな Web アプリを作成しました。その主な目的は、xml (ファイルは最大数 MB になる場合があります) ファイルをアップロード、保存、および結果を表示することです。約 2 か月間実行した後、mongrel プロセスが約 4 GB のメモリを使用していることに気付きました。Ruby のメモリ リークのデバッグについて調査しましたが、あまり見つかりませんでした。そこで、2 つの質問があります。
- Ruby/rails でメモリリークを見つけるのに使用できる優れたツールはありますか?
- Ruby でメモリ リークを引き起こすコーディング パターンの種類は何ですか?
ベストアンサー1
Rails でメモリ リークを見つけるためのヒント:
- 使用荒涼館プラグイン
- 埋め込むスカウト監視具体的にはメモリ使用量プロファイラ
- 別のを試してみてくださいシンプルなメモリ使用量ロガー
1 つ目は、ObjectSpace 内のオブジェクトによるメモリ使用量をグラフィカルに調査することです。
最後の 2 つは、メモリ使用量を増加させている特定の使用パターンを識別するのに役立ち、そこから作業を進めることができます。
具体的なコーディング パターンに関しては、経験上、ファイル IO、画像処理、大量の文字列の操作などを扱うものはすべて注意する必要があります。
最も適切なXMLライブラリを使用しているかどうかを確認してください。ReXMLは遅く、リークしやすいと言われています(その証拠はありません!)。また、メモする高価な操作。