【问题标题】:Performance comparison of using django signed cookie session over django db + cache based session?在 django db + 基于缓存的会话上使用 django 签名的 cookie 会话的性能比较?
【发布时间】:2023-04-04 17:44:01
【问题描述】:

Django 1.4 提供了几种维护django sessions 的方法:

我对使用的看法:

i) 仅缓存:不太可取,用户会话可能会从内存缓存中清除。

ii) Db + 缓存 (cached_db):首选、简单且安全的解决方案。

iii) 签名的 cookie 会话:首选,没有数据库命中。

假设会话数据非常小,即在 cookie 中存储它没有问题。在数据库 + 内存缓存驱动的会话引擎上使用签名 cookie 是否有任何性能优势?对于 N 个并发新用户,将保存 N 个数据库命中的顺序。这将减少数据库服务器在单位时间内必须处理的总查询数。

更新:我们发现 redis 或 aerospike 是 django 真正强大且高吞吐量的会话后端。我们使用redis 作为会话 后台

【问题讨论】:

    标签: django session django-sessions


    【解决方案1】:

    您必须能够处理 N 个并发查询(N - 并发新 用户)。

    您只能在非常大的范围内看到差异。您必须是悲观主义者(服务器宕机、备份不良、amazon bancrupcy),并且您的数据库必须能够在高峰时段处理所有用户。

    • 使用 cookie 会话的 10 000 000 名用户将额外花费 0 美元,iframe 和手机问题
    • 10 000 000 个用户使用缓存会话每天将花费您数百或不到数百美元,如果重启会丢失会话
    • 使用 cache_db 会话的 10 000 000 个用户每天将花费您数千美元(任何能够一次处理 1000 000 次点击的持久存储,10% 的用户)

    我使用 redis 后端(定期保存到磁盘),可以切换到 memcached 服务集群。

    http://www.icis.com/blogs/icis-chemicals-confidential/files/2011/10/19/goodcheapfast.jpg

    【讨论】:

    • SESSION_ENGINE = 'django.contrib.sessions.backends.signed_cookies' 会话数据存储在哪里?
    猜你喜欢
    • 2014-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-14
    • 2019-07-16
    • 2013-08-16
    • 1970-01-01
    • 2012-04-15
    相关资源
    最近更新 更多