首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Redis请求延迟

Redis请求延迟
EN

Stack Overflow用户
提问于 2013-01-24 17:28:27
回答 2查看 2K关注 0票数 18

我将redis (2.6.8)与php-fpm和phpredis驱动程序一起使用,遇到了一些redis延迟问题。在一定的负载下,从我们的应用程序到redis的第一次请求大约需要1-1.5s,而redis-cli --latency显示出相同的延迟。

我已经查过the latency guide了。

  • 我们在与Unix相同的主机上使用redis不再有条目5ms
  • 我们不使用AOF
  • redis需要大约3.5 on内存16 on可用(我想这不是太多)
  • 我们的系统不是redis不是做磁盘I/O的其他进程

<代码>F215

我使用的是持久连接,连接的客户端数量从5到25不等(有时会达到60-80)。

Here is the graph

当有20个或更多同时连接的客户端时,问题看起来就开始了。

你能帮我找出问题出在哪里吗?

更新

我调查了这个问题,由于某些原因,redis似乎没有足够的处理器时间来正常运行。

我在网络嗅探器的帮助下彻底检查了php-fpm和redis之间的通信。Redis通过tcp收到请求,但在一秒半后才发回应答。这显然表明问题出在redis内部,在给定的条件下它无法处理如此多的请求(可能是处理器饥饿,因为整个系统的处理器负载只有50% )。

通过将redis移动到其他几乎空闲的服务器,解决了此问题。我想我们应该使用linux调度器来让它在同一台服务器上工作,但还没有做到这一点。

EN

回答 2

Stack Overflow用户

发布于 2013-11-05 09:45:06

请记住,Redis是单线程的。如果您正在执行的操作在处理器密集型一端出错,那么您的请求可能会相互阻塞。例如,如果您正在对具有非常大的值的散列执行HVALS,那么当您取出所有数据并将其复制到输出缓冲区时,您将让所有客户端等待。

在这里,您需要做的一部分(不管这是否是问题)是查看您正在使用的所有命令,并确定每个命令的复杂性。如果您正在对大量数据执行一堆O(N)命令,那么一次执行太多操作也不是不可能的。

在这里,没有人可以真正确定地调试这个问题,而不需要知道您正在使用哪些命令以及您的数据是什么样子的。但是你可以查看你正在使用的每种方法的时间复杂度,并确保它是合理的。

票数 2
EN

Stack Overflow用户

发布于 2013-10-22 09:15:26

我在研究我正在研究的一个问题时遇到了这个问题,但我认为它在这里可能会有所帮助:

https://groups.google.com/forum/#!topic/redis-db/uZaXHZUl0NA

如果你通读这个帖子,你会发现一些有趣的信息。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14497907

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档