10

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

即我在 Stackoverflow 上发现在 Redis 中存储大文件或数据会使其变慢。有什么别的?

4

2 回答 2

28

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

我建议从阅读开始:

以下是潜在原因的非详尽列表:

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

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

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

于 2012-11-19T10:28:27.943 回答
0

如前所述new connections,> 200 每分钟可能会导致缓慢。一个可能的解决方案是添加一个保持恒定连接数的代理:

于 2021-01-29T12:02:44.430 回答