2012-11-19 48 views
5

Redis緩慢工作/響應的原因是什麼?Redis減緩原因

即我在Stackoverflow上發現,在Redis中存儲大文件或數據會使其變慢。有什麼別的?

回答

9

這個問題沒有簡單的答案。使用所有基於NoSQL或SQL的存儲解決方案時,存在很多可能導致存儲引擎出現高延遲或緩慢的情況。 Redis也不例外。

我建議你通過閱讀來啓動:

這裏是一個潛在的原因非詳盡的列表:

  • 不足的硬件(網絡,內存,CPU)
  • 基於軟件的虛擬化(Xen的低端硬件例如)
  • 沒有足夠的內存,在OS級產生交換
  • 在單線程引擎執行
  • 太多O(n)的操作(如KEYS)
  • 存儲在Redis的
  • 的大型物體,導致通信緩衝區的不受控制的膨脹
  • 巨大數量的同時會話的(> 30000)每秒
  • 太多連接操作(Redis的是不是一個網絡服務器,連接被認爲是永久性的,不是暫時的)。由客戶端應用(無流水線或聚集的命令使用)通過bgsave或AOF重寫(特別是在虛擬機)
  • I/O相關的延遲產生
  • 大型叉的操作而生成
  • 太多往返時AOF使用
  • 許多的
  • 積累到期觸發同時在客戶機和主/從通信的緩衝器,或慢日誌數據
  • 積累的存儲器操作
  • TCP incast conditions當網絡帶寬的消耗是顯著
  • 使用分佈式存儲(尤其是陰天的如EC2,EBS)來存儲轉儲或AOF文件

可能有多方面的原因,涉及到您自己的應用所產生的工作量。

如果有人考慮其他一般原因,我們可以將它們添加到此列表中。

+0

謝謝!我認爲這對我來說是一個很好的回答。 – shalakhin