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做级缓存也是一个比较合理的方案。平时开发中要充分考虑数据的时效性来做对应的设计。

特别推荐一个分享架构+算法的优质内容,还没关注的小伙伴,可以长按关注一下:

长按订阅更多精彩▼如有收获,点个在看,诚挚感谢

QPS过万,redis大量连接超时怎么解决?相关推荐

  1. 修正版 | QPS过万,Redis大量连接超时怎么解决?

    之前负责的一个服务总是在高峰时刻和压测发生大量的redis连接超时的异常redis.clients.jedis.exceptions.JedisConnectionException,根据原有的业务规 ...

  2. 记一次线上环境 redis偶尔连接超时报错 解决

    记一次线上环境 redis偶尔连接超时报错 解决 贴出本地控制台日志 说实话,很痛苦,跟进很久了,一直认为的jvm程序所使用的配置的连接池框架问题 因为程序为 springboot 2 spring ...

  3. mysql导入sql文件过大或连接超时的解决办法

    原文:mysql导入sql文件过大或连接超时的解决办法 前段时间出差在现场开发的时候,导入数据库老是出问题.最后发现了一个神奇sql语句交给实施,只要导入出错就把如下语句执行就可以了.至今屡试不爽. ...

  4. ORCAL数据库远程连接是报:12170连接超时错误解决办法

    ORCAL数据库远程连接是报:12170连接超时错误解决办法 问题: 今天在进行数据库连接时发现报了12170错误,通过查找资料原来是服务器防火墙的问题 解决方法: 因为我是把数据库部署到虚拟机上的, ...

  5. 在windows 使用 git克隆出现连接超时如何解决

    1.检测是否能ping github 不能的话,应该是本地DNS 解析 然后修改 hosts 文件 此时需要打开C:\Windows\System32\drivers\etc下的hosts文件, 我们 ...

  6. 街头篮球手游服务器响应超时,街篮2打不开是怎么回事 网络连接超时的解决方法...

    街篮2是一款3v3王牌篮球手游,延续了前作的优秀操控手感,同时保留了核心竞技体验,一些小伙伴们在下载了这款游戏之后,却发现街篮2打不开是怎么回事,下面就来介绍一下游戏打不开.网络连接超时的解决方法. ...

  7. 如何修复dns服务器超时,与dns连接超时怎么解决

    大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答. 与dns连接超时的解决方法是: 1.出现"请求超时"现象,我们首要对硬件进排查,我们首先需要对线路进行排查,确 ...

  8. python3 redis 设置连接超时

    在Python中连接Redis 常规操作 import redis rs = redis.Redis(host='127.0.0.1', port=6379) rs.setname('test', ' ...

  9. redis远程连接超时

     今天在用jedis连接远程的redis时,抛出连接超时异常:connect timed out. 详细信息例如以下: Exception in thread "main" r ...

最新文章

  1. 针对“永恒之蓝(WannaCry)”攻击紧急处置手册
  2. python计算现场得分_浅谈用 Python 计算文本 BLEU 分数
  3. react-native 项目实战 -- 新闻客户端(6) -- 完善ListView头部视图
  4. 手机号码正则 中文姓名正则
  5. python里的拆包、引用、递归与匿名函数
  6. Canonical发布信息图:Ubuntu Linux连接一切
  7. ics计算机系统全称,ICS计算机系统实验--datalab实验
  8. 低延时极简RTMP播放器
  9. 一文详解自动驾驶技术与挑战
  10. 公司邮箱如何申请?如何申请公司邮箱?公司邮箱号码大全
  11. 漂亮特殊字体可复制_特殊字体生成器 漂亮特殊字体可复制
  12. 草料二维码提交数据自动通知企业微信
  13. Java Servlet 详解:(三)在 IDES 中开发 Servlet-多图警告
  14. 字符数组 字符插入(c语言)
  15. python下载谷歌地图瓦片_openLayers TMS加载谷歌地图瓦片
  16. 总结组合数的几种求法(模板)
  17. 今日头条信息流 - 创意设置详解
  18. SSL证书转换如何操作?
  19. MSC.SIMXPERT.V2016全集成多学科仿真解决方案
  20. ethtool命令手册

热门文章

  1. php的闭包函数bingto_PHP 闭包那点事儿
  2. 关于学习Python的一点学习总结(20->assert判断->while和for使用)
  3. 牛客练习赛84:牛客推荐系统开发之标签重复度(点分治+动态开点权值线段树)
  4. 图论 ---- CF1209F. Koala and Notebook(多位数字拆边+BFS)
  5. 图论 ---- B. Graph Subset Problem (图中找k阶完全子图 or 找一个子集里面的点的度数都打过k)
  6. 函数图像在图形计算机的应用,浅谈图形计算器在高中函数教学中的应用
  7. poj1466(二分图最大独立集)
  8. android layerlist bitmap,android – 在LayerListDrawable中更改Bitmap Drawable
  9. 发现的bug不能重现怎么办?
  10. 移动端适配之二:visual viewport、layout viewport和ideal viewport介绍