1

我们正在使用:

  • Azure 上的标准 Redis
  • StackExchange.Redis
  • 红锁网

根据 Cloudflare 的数据,我们的网站在过去一两年中显着增长,现在每月服务约 250,000,000 个未缓存的请求。

偶尔,我们会看到数百个与 RedLock 由于处于Conflicted状态而无法获取锁有关的异常。

我们的 Redis 缓存通常:

  • 以 10% 的服务器负载运行(我相信这是关于 CPU)
  • 但运行时内存使用率接近 100%

我的问题是:

  • 是否推荐使用完全不同的 Redis 服务器进行锁定?
  • 创建锁时,在 Redis 服务器中使用 100% 内存会导致问题吗?
4

1 回答 1

1

当您查看缓存性能指标时,这些故障是否与 100% 的内存使用一致?如果是这样,我敢打赌这就是罪魁祸首。

当 Redis 达到 100% 内存时,可能会发生页面错误,从而减慢请求。有关该过程的说明,请参见此处。我可以设想当内存压力达到 100% 并且请求被延迟时,Redlock.net 获取锁的 5 毫秒时间限制将过期。

我会启动第二个 Redis 服务器来锁定,看看它是否能缓解问题,或者扩大你现有的缓存。看看你是否仍然遇到这个问题。扩大规模可能是最简单的实验,无需更改您的代码。

于 2020-03-13T20:29:41.877 回答