从Node Redis迁移到Ioredis后CPU 使用率减少了 30% - Ably

21-11-26 banq

 Node Redis 作者试图在处理缓冲区时做正确的事情(即避免数据复制),但这实际上导致了性能相当糟糕的情况。这对我们来说不是最佳选择,因为我们调用的 Redis 函数具有许多小参数,因此执行了许多套接字写入。

我们对 Node Redis 与 Ioredis 进行了一些独立测试,Ioredis 展示了显着的性能改进,主要是因为它在发送批处理之前复制了缓冲区中的所有参数。这意味着更少的套接字写入和更多的副本。幸运的是,后者对我们来说无关紧要,因为我们的论点从未达到令人担忧的程度。此外,结果扩展到具有完整工作负载的生产性能改进。

我们在迁移过程中遇到了一些障碍,但这是(令人遗憾的)可以预料的。迁移代码后,我们执行了一些 CPU 使用率的真实负载测试。结果令人鼓舞。

对于 Node Redis,我们注意到大多数依赖项仍然是正在积极开发的实时代码,并且成熟度并不统一:一些特性被广泛采用并经过良好测试,但其他特性则不然。这是可行的,前提是:

  • 您预见到这些问题,并确保评估和测试您打算使用的特定功能或配置;和
  • 采用者回馈社区以帮助成熟和维护软件。

Ioredis将自己描述为“强大的、功能齐全的 Redis 客户端,被世界上最大的在线商务公司阿里巴巴和许多其他很棒的公司使用”。根据npmcompare 的说法,它自 2015 年以来一直存在,所以它比 Node Redis 年轻五岁,但似乎更积极地工作。

更多点击标题

猜你喜欢