python - 如何测量 Django 缓存性能?

标签 python django postgresql caching memcached

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

我正在使用数据库作为缓存和 session 后端。我听说过很多关于为此目的使用 Memcached 的好消息,我绝对想试一试。但是,我想知道这种更改的确切好处是什么:我想我的站点可能不够大,无法让更好的缓存后端发挥作用。重点是:安装和配置 memcached 的人不会是我,我不想无所事事地浪费别人的时间。

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

有没有人对不同的 Django 缓存/ session 后端进行基准测试?有人知道如果我对每个请求执行一次 session 写入,性能会有什么不同吗?

最佳答案

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

缓存的内容:

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

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

关于python - 如何测量 Django 缓存性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/828702/

相关文章:

python - Python 中的 HTTP 代理服务器(带身份验证)

python - 从 2D numpy 数组创建 COO 矩阵

python - Pandas 和 matplotlib : Different fonts between showfig and savefig (mac os x backend)

python - Django 和多图上传表单

python - FunkLoad 针对多个请求的一份报告

python - 为什么此方法在 Django 自定义管理器中不可见?

sql - 如何在 x 次后增加一行

python - multiprocessing.Queue deadlocks after "reader"进程死亡

php - 如何在准备好的语句中使用sql函数

postgresql - 从 JSON 数组连接列表