5

我有一个在 Django 上运行的相当小的(每天大约 4.5k 页面浏览量)网站,使用 PostgreSQL 8.3 作为数据库。

我将数据库用作缓存和会话后端。我听说过很多关于为此目的使用 Memcached 的好消息,我肯定想试一试。但是,我想确切地知道这种更改的好处是什么:我想我的网站可能还不够大,无法让更好的缓存后端有所作为。关键是:安装和配置 memcached 的人不是我,我不想浪费任何人的时间或浪费很少的时间。

如何测量使用 db 作为缓存后端引入的开销?我查看了 django-debug-toolbar,但如果我理解正确的话,它不是你想放在生产站点上的东西(你必须设置DEBUG=True它才能工作)。不幸的是,我无法在我的笔记本电脑上完全重现生产设置(我有不同的操作系统、CPU 和更多的 RAM)。

有没有人对不同的 Django 缓存/会话后端进行基准测试?有谁知道如果我正在做的性能差异是什么,例如,对每个请求进行一次会话写入?

4

5 回答 5

5

在我之前的工作中,我们试图衡量缓存对我们正在开发的站点的影响。在同一台机器上,我们对最常用作起始页面(对象列表)的 10 个页面的集合进行了负载测试,以及从大约 200000 个池中随机抽取的一些对象详细信息页面。差异就像 150 个请求/秒到 30000 个请求/秒,并且数据库查询下降到每页 1-2 个。

缓存的内容:

  • 会话
  • 为对象列表中的每个单独页面检索的对象列表
  • 次要对象和公共内容(在每个页面上都可以找到)
  • 对象类别和其他分类属性的列表
  • 对象计数器(由 cron 作业离线计算)
  • 单个对象

一般来说,我们只使用低级粒度缓存,而不是高级缓存框架。它需要非常仔细的设计(缓存必须在每次数据库状态更改时正确失效,例如添加或修改任何对象)。

于 2009-05-06T12:08:36.810 回答
3

DiskCache项目发布了比较本地内存、Memcached、Redis、基于文件和diskcache.DjangoCacheDjango 缓存基准。DiskCache 的另一个好处是不需要单独的进程(与 Memcached 和 Redis 不同)。相反,缓存键和小值被内存映射到 Django 进程内存中。从缓存中检索值通常比本地主机上的 Memcached 更快。许多设置控制在内存中保留多少数据;其余的被分页到磁盘。

于 2016-03-19T03:22:06.443 回答
2

简短的回答:如果你有足够的内存,memcached 总是会更快。您无法真正对 memcached 与数据库缓存进行基准测试,请记住,服务器的最大瓶颈是磁盘访问,特别是写访问。

无论如何,如果您有很多对象要缓存并且过期时间很长,那么磁盘缓存会更好。但是对于这种情况,如果您想要演出表演,最好使用 python 脚本静态生成页面并使用 ligthtpd 或 nginx 交付它们。

对于 memcached,您可以调整专用于服务器的 ram 数量。

于 2009-05-06T09:32:27.293 回答
0

试试看。使用 firebug 或类似工具并在测试服务器上运行内存缓存并分配一点 RAM(例如 64mb)。

在没有 memcache 的情况下标记在 firebug 中看到的平均加载结果,然后打开缓存并标记新结果。就像它说的那样简单。

结果通常会让人震惊,因为性能提升得非常好。

于 2010-01-20T22:19:04.840 回答
0

使用django-debug-toolbarSQL查看查询节省了多少时间

于 2015-01-24T08:37:35.373 回答