6

我有一个具有搜索功能的应用程序。此功能在我缓存 24 小时的巨型对象(字典)中查找搜索词。该对象大约有 50,000 个键,重约 10MB。

当我分析主机上的内存使用情况时,我注意到经过几次查询后,内存使用量从大约 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 回答