私はDjangoアプリケーションを持っていて、メモリリークが頻繁に発生しています。
私はメモリを過負荷にする可能性のある大きなデータを使用していません。実際、アプリケーションはメモリを段階的に「食べます」(1週間でメモリは約70 MBから4GBになります)。そのため、ガベージコレクタに何かが不足していると思われます。でもわからない。また、この増分はリクエストの数に依存しないようです。
DEBUG=True
、開いているファイルを残すなどの明らかなことは、ここでは適用されません。
uWSGI 2.0.3
(+ nginx)とDjango 1.4.5
を使用しています
メモリが特定の制限を超えたときにサーバーを再起動するようにwsgi
を設定することもできますが、それは実際には解決策ではないため、そうしたくありません。
ガベージコレクターが「正しく機能しない」というよく知られた状況はありますか?それはいくつかのコード例を提供できますか?
これを引き起こす可能性のあるuWSGI + Djangoの構成はありますか?
探しているものが正確に見つかりませんでしたが(各プロジェクトは世界です!)、いくつかの手がかりとアドバイスに従って、問題を解決することができました。同様の問題に直面している場合に役立つ可能性のあるいくつかのリンクを共有します。
Djangoメモリリーク、パートI 、 Djangoメモリリーク、パートII 、 Pythonでのメモリリークの検索と修正 、 最適化されたスクリプトubuntu 12.04のnginxとuwsgi (これはWEB2PY用ですが、uWSGIを介していくつかの「クラック」を提供します)および WSGIアプリケーションでのメモリリークのデバッグ 。
いくつかの便利なSO回答/質問: どのPythonメモリプロファイラーが推奨されますか? 、 ワーキングメモリプロファイラーはありますか?) Python3の場合 、 Pythonメモリリーク および Python:メモリリークデバッグ