回覆列表
  • 1 # 艾卡西亞

    你預計的訪問量是多大?脫離這個就開始談壓力,就是耍流氓。

    新增一個記憶體資料庫儲存session,可以加快速度,但伺服器宕機session就沒了。

    也可以自己寫個中介軟體處理,Django的文件裡寫有怎麼寫中介軟體,學習程式設計文件都不會看的話,那我真沒轍。

    做資料庫的ha也是可以的。

    使用memcached來儲存session 這種方式跟資料庫類似,不過因為是記憶體存取的,效能自然要比資料庫好多了。但存入memcached中的資料都需要序列化,效率較低; memcached伺服器一死,所有session全丟。

    也可以terracotta來儲存session 跟memcached類似,但是資料不需要序列化,並且是Find-Grained Changes,效能更好。配置對原來的應用完全透明,原有程式幾乎不用做任何修改。而且terracotta本身支援HA

  • 2 # 網路圈

    對於一般中小型應用而言,Session入庫是能滿足專案需要的,一旦應用訪問量上升,那頻繁讀寫資料庫中的Session也容易給系統帶來瓶頸。

    Session不是最優方案

    傳統的Session是儲存在應用伺服器中的,一般是以檔案形式儲存在伺服器硬碟中,這會導致過多Session帶來的磁碟I/O壓力,另一方面也不利於叢集部署。在這種背景下,有人就提出將Session存入資料庫來解決上述問題,事實上的確也解決了問題,但另一個問題也隨之而來,那就是:一旦網站併發過大,也很容易導致資料庫瓶頸,畢竟資料庫查詢也存在耗時的。

    建議將Session存入Redis

    在實際生產環境中,我們基本上都是基於Redis來實現Session會話保持,這樣做的好處有:

    易於分散式/叢集部署時實現Session互通;

    Redis讀寫效能極高,Session頻繁讀寫也不會帶來效能壓力;

    利用Redis Key的過期功能可輕鬆控制Session的過期;

    可以將每個使用者的session id記錄下來,這樣就可以查到某個註冊使用者所有session id, 輕鬆實現踢出登陸功能。

  • 中秋節和大豐收的關聯?
  • 薔薇夜騎士的結局是什麼?