興味深い方法で誤動作している Pyramid ビューがあります。ビューが行うことは、(pickle を使用して) ファイルから非常に複雑なオブジェクト階層を取得し、少し処理を行ってから、html フォームをレンダリングすることです。素敵でシンプル。
セットアップ:
Ubuntu 12.04 64 ビット、Python3.2、Pyramid 1.3.3、SQLAlchemy 0.7.8 を実行しており、標準のウェイトレス サーバーを使用しています。
症状
私はいくつかの効率の問題を抱えていたので、システム モニターを使用して何が起きているかを確認しようとしたところ、ピラミッドがその処理を行っている間など、私が説明したビューの RAM 使用量が着実に増加していることがわかりました。HTML フォームがブラウザに表示されると、RAM の使用量は横ばいになりましたが、低下しませんでした。ビューをリロードすると、RAM の使用量が中断したところから着実に増加しました。これを続けていると、すべての RAM が使い果たされ、すべてが停止します。
サーバーを強制終了すると、RAM の使用量がすぐに低下します。
質問
どうしたの?ビューのレンダリング間でメモリが解放されていないことは明らかですが、なぜこれが起こっているのでしょうか? そして、どうすればそれを止めることができますか?ビューから戻る前に del を呼び出してみましたが、何も変わりませんでした。