Search code examples
djangosessiondjango-sessions

Performance comparison of using django signed cookie session over django db + cache based session?


Django 1.4 offers several ways to maintain django sessions :

My viewpoint on using :

i) cache only : Not preferable, users sessions may get purged out of memcache.

ii) Db + cache (cached_db): Preferable , simple and secure solution.

iii) Signed cookie sessions : Preferable, no database hit .

Assuming that the session data is very small i.e. no problem in storing it in cookie. Is there any performance benefit of using signed cookie over a database + memcache driven session engine ? As for N concurrent new users, there would be order of N database hits saved. This will reduce total queries that the database server has to handle per unit time.

UPDATE : We found redis or aerospike as really robust and high throughput session backends for django. We are using redis as sessions backend


Solution

  • You must be able to handle N concurrent queries (N - concurrent new users).

    You see the difference at a very large scale only. You must be pessimist (server is down, bad buckup, amazon bancrupcy ) and your database must be able to handle all users in rush hours.

    • 10 000 000 users with cookie session will cost you 0$ extra, problems with iframes and mobiles
    • 10 000 000 users with cache session will cost you hundreds or less than hundred of dollars daily, lost sessions in case of restart
    • 10 000 000 users with cache_db session will cost you thousands of dollars daily (any persistent storage able to handle 1 000 000 hits in one time, 10% of users)

    I use redis backend (periodic save to disk) with the possibility of switching to a cluster of memcached services.

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