6

検索機能のあるアプリがあります。この機能は、私が 24 時間キャッシュしている巨大なオブジェクト (辞書) で検索語を検索します。オブジェクトは約 50,000 個のキーで、重さは約 10 MB です。

ホスティングのメモリ使用量をプロファイリングすると、数回のクエリの後、メモリ使用量が約 50MB から 450MB を超えていることがわかり、ホスティング プロバイダーはアプリを終了するように求められます。

だから私はここで何が起こっているのだろうかと思っています。具体的には、キャッシュは各リクエストでメモリをどのように使用し、これを修正するにはどうすればよいですか?

4

2 に答える 2

1

Django FileBasedCache は、パフォーマンスの問題があることで知られています。次のリンクで全体像を把握できます。

Django 用のよりスマートなファイルベースのキャッシュ

バグ: キャッシュされたファイルが大量にある場合、ファイルベースのキャッシュはあまり効率的ではありません

バグは、議論を修正しないように設定されました:

ファイルシステム キャッシュは、本格的なキャッシング戦略としてではなく、キャッシングをテストする簡単な方法として意図されているという理由で、私は修正しません。デフォルトのキャッシュ サイズと、ファイル キャッシュによって実装されるカリング戦略から、それは明らかです。

于 2012-05-24T17:33:51.590 に答える
0

どちらも有効期限をサポートしているため、Memcache や Redis などの KVS をキャッシュ戦略として使用することを検討してください。また、より期待される機能が検索関連である場合は、ElasticSearch のような専用の検索を検討してください。

ツールとハウツーが利用可能です:

django プロジェクト用の memcached のインストール

http://code.google.com/p/memcached/wiki/NewStart

http://redis.io/commands/expire

https://github.com/bartTC/django-memcache-status

http://www.elasticsearch.org/guide/reference/index-modules/cache.html

于 2012-05-28T17:07:21.913 に答える