当前位置:首页 > 公众号精选 > 架构师社区
[导读]    7月2号10点后,刚好某个负责的服务发生大量的redis连接超时的异常(redis.clients.jedis.exceptions.JedisConnectionException),由于本身的数据库查询缓存在redis中2分钟,并且未做降级措施,而且本身不能做限流处理,而且随着午高峰的时间流量在飙升,并

7月2号10点后,刚好某个负责的服务发生大量的redis连接超时的异常(redis.clients.jedis.exceptions.JedisConnectionException),由于本身的数据库查询缓存在redis中2分钟,并且未做降级措施,而且本身不能做限流处理,而且随着午高峰的时间流量在飙升,并且从10点开始的2000的QPS,在11点达到高峰的13000QPS。


好在只是redis超时导致的某个查询的失效,并不会导致整个主链路的流程不可用,所以接下来是怎么快速发现和解决问题。


1、首先和负责redis同学排查,先排除redis本身的问题

2、服务自查


异常分布

如果监控可以看到单机维度的话,切换到单机维度查看异常是否均匀分布,如果分布不均匀,只是少量的host特别高,基本可以定位到出现问题的机器


Redis负载

查看redis集群是否有节点负载过高,比如以常规经验看来的80%。

    • 如果有一个或少量节点超过,则说明存在「热key」问题。

    • 如果大部分节点都超过,则说明存在「redis整体压力大」问题。


慢请求

查看监控,如果有慢请求的时间和发生问题的时间匹配,则可能存在「大key」问题


客户端原因

常见的几个问题原因有:

  • 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提供的其他手段来查询。


由于保密性的问题,问题的截图是不能放的,但是这个事情其实也是敲响一个警钟,熔断限流降级措施在关键性的链路一定要保证有,重要的事情说3遍,要有X3!


而且原来的历史代码本身也有一点小问题,这些缓存的数据其实大半年都不会变分担分的,完全不需要redis缓存,内存级别的缓存就足够了,或者说内存缓存+redis做级缓存也是一个比较合理的方案。平时开发中要充分考虑数据的时效性来做对应的设计。



免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

前言说到redis,可能大家的脑海中蹦出的关键词是:NoSQL、KV、高性能、缓存等。但今天的文章从另一个角度——微服务来展开。这篇文章的起因也是源自一次面试经历,在面试一位来自陌陌的候选人(就是那个交友的陌陌)时,他提...

关键字: redis

面试官:你们系统是怎么实现分布式锁的?我:我们使用了redis的分布式锁。具体做法是后端接收到请求后加入一个分布式锁,如果加锁成功,就执行业务,如果加锁失败就等待锁或者拒绝请求。业务执行完成后释放锁。面试官:能说一下具体...

关键字: 分布式 redis

进程请求分布式锁时一般包含三个阶段:1.进程请求获取锁;2.获取到锁的进程持有锁并执行业务逻辑;3.获取到锁的进程释放锁;下文会按照这个三个阶段进行分析。单机Redis获取锁从一开始的请求进程通过SETNX命令获取锁;1...

关键字: redis zookeeper 分布式锁

经过前面两篇文章《JSON Web Token - 在Web应用间安全地传递信息》《八幅漫画理解使用JSON Web Token设计单点登录系统》的科普,相信大家应该已经知道了 JWT 协议是什么了。

关键字: JWT redis session

我是Redis,一个叫Antirez的男人把我带到了这个世界上。 那天,Redis基友群里,许久未见的大白发来了一条消息……于是,大白拉了一个新的群 以后的日子中,咱们哥仨相互配合,日常工作中最多的就是数据同步了……

关键字: redis 嵌入式

作为一名服务端工程师,工作中你肯定和Redis打过交道。Redis为什么快,这点想必你也知道,至少为了面试也做过准备。很多人知道Redis快仅仅因为它是基于内存实现的,对于其它原因倒是模棱两可。那么,今天就和小莱一起看看...

关键字: redis 嵌入式

作为一名后端工程师,工作中你肯定和 Redis 打过交道。Redis 为什么快,这点想必你也知道,至少为了面试也做过准备。很多人知道 Redis 快仅仅因为它是基于内存实现的,对于其它原因倒是模棱两可。

关键字: redis 嵌入式

内存数据库Redis的相关知识,几乎是大厂的必考题,本文总结了设计Redis的11道面试题。

关键字: redis 嵌入式

最近,又重新学习了下Redis,深深被Redis的魅力所折服,Redis不仅能快还能慢,简直利器呀!

关键字: redis 嵌入式

本文介绍了Redis高可用相关的机制。

关键字: redis 架构
关闭
关闭