Redis减速的原因

时间:2012-11-19 09:23:05

标签: database nosql redis

Redis工作/响应缓慢的原因是什么?

即。我在Stackoverflow上发现,在Redis中存储大文件或数据会使速度变慢。还有什么?

2 个答案:

答案 0 :(得分:12)

这个问题没有简单的答案。对于所有基于NoSQL或SQL的存储解决方案,有很多条件可能导致存储引擎的高延迟或缓慢。 Redis也不例外。

我建议先阅读:

以下是潜在原因的非详尽清单:

  • 硬件不足(网络,内存,CPU)
  • 基于软件的虚拟化(例如,在低端硬件上使用Xen)
  • 内存不足,在操作系统级别生成交换
  • 在单线程引擎中执行的O(n)操作太多(如KEYS)
  • 存储在Redis中的大对象,导致通信缓冲区不受控制地扩展
  • 大量同时会话(> 30000)
  • 每秒连接操作太多(Redis不是网络服务器,连接应该是永久性的,而不是瞬态连接)。
  • 客户端应用程序生成的往返次数过多(无管道传输或聚合命令使用)
  • 由bgsave或AOF重写生成的大型fork操作(特别是在VM上)
  • 使用AOF时与I / O相关的延迟
  • 同时触发的许多过期操作的累积
  • 客户端和主/从通信缓冲区中的内存累积,或慢速日志数据
  • 当网络带宽消耗显着时,
  • TCP incast conditions
  • 使用分布式存储(尤其是云端的存储,如EC2 EBS)来存储转储或AOF文件

可能还有很多其他原因,与您自己的应用程序生成的工作负载有关。

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

答案 1 :(得分:0)

正如前面提到的 new connections,每分钟 > 200 次可能会导致速度变慢。一个可能的解决方案是添加一个保持恒定连接数的代理:

相关问题