0

在过去的几天里,我们一直在摸索,试图理解为什么在我们的 Rails 项目中使用 redis/ohm 时有些事情看起来有点太慢了。

它的要点是对 ohm/redis 的一些请求大约需要 100-200 毫秒,考虑到我们对超快性能的高期望,这似乎相当高。

我们正在运行的命令如下所示:

Stats::TermStats.find(term_slug: 'term_slug', user_id: 123).to_a

在我们看来,我们并没有做任何极其复杂或疯狂的事情。到目前为止,我们对这个单一命令的分析(使用miniprofiler)揭示了以下内容:

  • 其中一些调用在大约 2-4 毫秒内完成(这是好的/好/坏的吗?)
  • 然而,有些需要 100-200 毫秒(这肯定感觉很糟糕)
  • 在 redis-client 上使用slowlog get不会在 redis 上显示任何特别慢的东西。大多数 redis 命令在不到 20微秒(0.02 毫秒)内完成
  • 使用 rails 控制台并在循环中使用完全相同的 slug/id 运行快速基准测试,观察到相同的行为,即其中一些(相同的)请求似乎比大多数其他请求花费的时间要长得多

我们的 redis 配置几乎是开箱即用的,基本上没有任何调整。在测试期间,服务器没有做太多其他事情。

有什么建议可以提高性能/测试什么会减慢redis和ohm/rails之间的速度?

4

1 回答 1

1

万一有人感兴趣,我们似乎找到了这个问题的原因,甚至找到了解决方案

TL;DR:使用hiredis + 调整ruby GC 参数

于 2012-11-01T11:47:14.687 回答