QPS超过10,000,如何解决大量Redis连接超时问题?

7月2日晚上10点之后,负责的服务(redis.clients.jedis.exceptions.JedisConnectionException)中发生了大量Redis连接超时异常,因为数据库查询在Redis中缓存了2分钟,并且没有降级已经完成。

采取措施后,并不能做限流处理,并且随着中午高峰时间的流量猛增,并且QPS从10点开始达到2000,在11点时达到了13000 QPS的峰值。

幸运的是,redis超时导致的某些查询失败不会导致整个主链接过程不可用,因此下一步就是如何快速查找和解决问题。

1.首先与负责redis的同学核对,首先消除redis本身的问题。

2.如果在独立维度上可以看到服务自检的异常分布,请切换到独立维度以检查异常是否均匀分布。

如果分布不均匀,则只有少量主机非常高,您基本上可以找到发生问题的计算机的Redis负载。

根据传统经验,检查redis集群的节点负载是否过高,例如80%。

如果超过一个或少量节点,则表明存在“热键”。

问题。

如果大多数节点超过它,则意味着存在“降低总体压力”的问题。

检查监视慢请求。

如果慢速请求的时间与问题发生的时间匹配,则可能存在“大键”。

问题。

客户端的几个常见原因是:CPU进程,GC,网络容器,主机,CPU,观察机器或容器的CPU:CPU(100%)是否接近或超过80%CPU电流限制。

是否有密集电流限制或长期电流限制。

如果存在这些现象,则应该是“计算资源不足”的问题。

处理GC频繁使用GC或GC消耗时间太长将导致无法安排线程及时读取redis响应。

通常是每分钟的总GC持续时间/ 60s /每分钟的GC数量。

如果达到ms级别,则对redis的读写延迟的影响将很明显。

然后,比较与以前的正常时间相比是否有明显增加。

通常可以通过监视TCP重传速率来测量网络质量。

比率越低越好。

如果TCP重传率保持在0.02%以上(基于您的实际情况),或者其突然增加,则可以确定这是否是“网络问题”。

我的问题在这里,我实际上发现该容器的TCP重传率非常高,有的甚至达到了0.6%。

向容器咨询的同事建议重新启动容器,并在重新启动后立即解决问题。

继续谈论疑难解答的想法。

容器主机监视容器主机的CPU状况。

在某些情况下,该计算机是虚拟机,并且CPU的监视指示器可能不准确,尤其是在io密集型情况下。

可以通过OPS提供的其他方式查询。

由于机密性问题,无法放置该问题的屏幕截图,但这实际上是一个警钟。

关键链路中必须确保保险丝电流限制和降级措施。

重要的事情说了三遍,需要X3。

!而且原始的历史代码本身也有一些问题。

一年中的大部分时间都不会共享缓存的数据。

根本不需要Redis缓存。

内存级别的缓存就足够了,或者内存缓存+ redis也用作级别缓存一个更合理的计划。

在正常开发中,我们必须充分考虑数据的及时性,以进行相应的设计。

联系方式

ARF系列片式电阻器设计为低内部电抗。薄膜技术应用于电阻器是适当的,以减少寄生电感和电容。 低内部电抗允许这些器件在高频下保持非常好的电阻器行为。

查看详情

在线咨询