专栏首页艾小仙修正版 | QPS过万,Redis大量连接超时怎么解决?

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

之前负责的一个服务总是在高峰时刻和压测发生大量的redis连接超时的异常redis.clients.jedis.exceptions.JedisConnectionException,根据原有的业务规则,首先会从数据库查询,然后缓存到redis中,超时时间设置为3分钟。

并且由于业务的特性,本身未做降级、限流等处理措施,而在巅峰的QPS基本上快达到20000的样子,虽然这个现象只是单纯的一个异常,并不会导致整个主链路的流程不可用,但是我们还是要找出问题的原因并且解决。

首先我们找到负责Redis同学排查,他们告诉我Redis现在很稳定,没有问题,以前现在未来都不会出问题,出了问题肯定是你们自己的问题。

... ...

说的好有道理,我竟无力反驳,真是让人两个头一个大。

这样的话,我们就只能去找找自身的原因了。

排查思路

查看异常分布

首先根据经验,我们看看自己的服务器的情况,看下异常到底出现在哪些机器,通过监控切换到单机维度,看看异常是否均匀分布,如果分布不均匀,只是少量的host特别高,基本可以定位到出现问题的机器。

诶,这就很舒服了,这一下子就找到了问题,只有几台机器异常非常高。

不过不能这样,我们继续说排查思路......

Redis情况

再次按照经验,虽然负责redis的同学说redis贼稳定巴拉巴拉,但是我们本着怀疑的态度,不能太相信他们说的话,这点很重要,特别是工作中,同学们,不要别人说啥你就信啥,要本着柯南的精神,发生命案的时候每个人都是犯罪嫌疑人,当然你要排除自己,坚定不移的相信这肯定不是我的锅!

好了,我们看看redis集群是否有节点负载过高,比如以常规经验看来的80%可以作为一个临界值。

如果有一个或少量节点超过,则说明可能存在热key问题,如果大部分节点都超过,则说明存在redis整体压力大问题。

另外可以看看是否有慢请求的情况,如果有慢请求,并且时间发生问题的时间匹配,那么可能是存在大key的问题。

嗯... ...

redis同学说的没错,redis稳如老狗。

CPU

我们假设自己还是很无助,还是没发现问题在哪儿,别急,接着找找别人的原因,看看CPU咋样,可能运维偷偷滴给我们把机器配置给整差了。

我们看看CPU使用率多高,是不是超过80%了,还是根据经验,我们之前的服务一般高峰能达到60%就不错了。

再看看CPU是不是存在限流,或者存在密集的限流、长时间的限流。

如果存在这些现象,应该就是运维的锅,给我们机器资源不够啊

GC停顿

得嘞,运维这次没作死。

再看看GC咋样。

频繁的GC、GC耗时过长都会让线程无法及时读取redis响应。

这个数字怎么判断呢?

通常,我们可以这样计算,再次按照我们一塌糊涂的经验,每分钟GC总时长/60s/每分钟GC个数,如果达到ms级了,对redis读写延迟的影响就会很明显。

为了稳一手,我们也要对比下和历史监控级别是否差不多一致。

好了,打扰了,我们继续。

网络

网络这块我们主要看TCP重传率,这个基本在大点的公司都有这块监控。

TCP重传率=单位时间内TCP重传包数量/TCP发包总数

我们可以把TCP重传率视为网络质量和服务器稳定性的一个只要衡量指标。

还是根据我们的经验,这个TCP重传率越低越好,越低代表我们的网络越好,如果TCP重传率保持在0.02%(以自己的实际情况为准)以上,或者突增,就可以怀疑是不是网络问题了。

比如这张图一样,要是和心电图一样,基本上网络问题就没跑了。

容器宿主机

有一些机器有可能是虚拟机,CPU的监控指标可能不准确,特别是对于IO密集型的情况会有较大差异。可以通用其他手段来查询宿主机的情况。

最后

根据一系列的骚操作,我们根据定位到的机器然后排查了一堆情况,最终定位到是网络问题,有单独的几台机器在高峰时期TCP重传率贼高,最后根据运维提供的解决方案:【重启有问题的机器】,我们很顺利的就解决了这个问题。

但是,这毕竟是治标不治本的办法,最终怎么解决的?

在我的另外一篇文章我有写到了,没人告诉过你更复杂的缓存穿透怎么解决

本文分享自微信公众号 - 艾小仙(aixiaoxianren),作者:艾小仙

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2021-04-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • QPS过万,redis大量连接超时怎么解决?

    7月2号10点后,刚好某个负责的服务发生大量的redis连接超时的异常(redis.clients.jedis.exceptions.JedisConnec...

    用户1289394
  • Redis集群性能问题深度分析

    1,Redis集群3.0.7升级到3.2.9解决读从节点KEY过期不删除问题,集群有几千万KEY原来经核查3.0.7版本只有主上保存过期时间,所以需要主触发才能...

    三杯水Plus
  • 面试:第十七章:Java中高级开发

    说明:最近看到很多朋友喜欢我的java中级开发一章(快十万访问量啦),于是乎,我决定加推一章中高级开发篇,面试十一问,每个问题,你觉得自己可以讲半小时,就算你过...

    java_wxid
  • 【高并发】如何设计一个支撑高并发大流量的系统?这次我将设计思路分享给大家!

    作者个人研发的在高并发场景下,提供的简单、稳定、可扩展的延迟消息队列框架,具有精准的定时任务和延迟队列处理功能。自开源半年多以来,已成功为十几家中小型企业提供了...

    冰河
  • 没人告诉过你更复杂的缓存穿透怎么解决

    你应该从网上看过太多的文章说缓存穿透怎么解决?无非就是布隆过滤器,缓存空值什么的。

    艾小仙
  • 每秒100万请求,“12306”的架构到底有多牛?

    那些年熬夜刷的12306经过多年迭代,承受着这个世界上任何秒杀系统都无法超越的 QPS,上百万的并发再正常不过。那么,系统如何在 100 万人同时抢 1 万张火...

    养码场
  • 磊哥测评之数据库:腾讯云Redis vs 自建Redis

    上期我比较了腾讯云和阿里云的MySQL数据库,文章发布之后引起了一些反响,有质疑数据的,也有希望了解更多细节的同学。其实一个数据库产品的好坏,不光是QPS、TP...

    磊哥测评
  • 京东毫秒级热key探测框架设计与实践,已完美支撑618大促

    在拥有大量并发用户的系统中,热key一直以来都是一个不可避免的问题。或许是突然某些商品成了爆款,或许是海量用户突然涌入某个店铺,或许是秒杀时瞬间大量开启的爬虫用...

    天涯泪小武
  • 高并发服务遇 redis 瓶颈引发的事故

    元旦期间 订单业务线 告知 推送系统 无法正常收发消息,作为推送系统维护者的我正外面潇洒,无法第一时间回去,直接让 ops 帮忙重启服务,一切好了起来,重启果然...

    梦醒人间
  • 高并发服务遇 redis 瓶颈引发的事故

    元旦期间 订单业务线 告知 推送系统 无法正常收发消息,作为推送系统维护者的我正外面潇洒,无法第一时间回去,直接让 ops 帮忙重启服务,一切好了起来,重启果然...

    用户2781897
  • 记一次性能优化,单台4核8G机器支撑5万QPS

    这篇文章的主题是记录一次程序的性能优化,在优化的过程中遇到的问题,以及如何去解决的。

    肉眼品世界
  • 记一次性能优化,单台4核8G机器支撑5万QPS

    这篇文章的主题是记录一次程序的性能优化,在优化的过程中遇到的问题,以及如何去解决的。

    周辰晨
  • redis

    只要问到缓存,上来第一个问题,肯定能是先问问你项目哪里用了缓存?为啥要用?不用行不行?如果用了以后可能会有什么不良的后果?

    大学里的混子
  • 最高50万QPS! 腾讯云新发布Redis 4.0标准版突破性能极限

    Redis在缓存应用场景中拥有不可取代的地位,被广泛应用于数据缓存、游戏存储、分布式会话存储、实时分析和机器学习等场景。腾讯云在Redis数据库领域的不断突破,...

    用户6148407
  • 最高50万QPS,腾讯云新发布Redis 4.0标准版突破性能极限

    Redis在缓存应用场景中拥有不可取代的地位,被广泛应用于数据缓存、游戏存储、分布式会话存储、实时分析和机器学习等场景。腾讯云在Redis数据库领域的不断突破,...

    腾讯云数据库 TencentDB
  • 最高50万QPS,腾讯云新发布Redis 4.0标准版突破性能极限

    Redis在缓存应用场景中拥有不可取代的地位,被广泛应用于数据缓存、游戏存储、分布式会话存储、实时分析和机器学习等场景。腾讯云在Redis数据库领域的不断突破,...

    勤劳的小蜜蜂
  • 如何保证 redis 的高并发和高可用?(redis 主从架构)

    如果你用 redis 缓存技术的话,肯定要考虑如何用 redis 来加多台机器,保证 redis 是高并发的,还有就是如何让 redis 保证自己不是挂掉以后就...

    IT技术小咖
  • 趣谈dian'shan秒杀与抢购

    电商的秒杀和抢购,对我们来说,都不是一个陌生的东西。然而,从技术的角度来说,这对于Web系统是一个巨大的考验。当一个Web系统,在一秒钟内收到数以万计甚至更多请...

    后端技术探索
  • “12306”的架构到底有多牛逼?极限并发带来的思考

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

    week

扫码关注云+社区

领取腾讯云代金券