寒亭 阿里开发者 2023-06-21 09:02 发表于浙江
(相关资料图)
阿里妹导读
作者抽丝剥茧的记录了一次访问Redis延时高问题的排查和总结。
背景
20230308 在某地域进行了线上压测, 发现接口RT频繁超时, 性能下降严重, P50 400ms+, P90 1200ms+, P99 2000ms+。
细致排查发现其中重要的原因是, 访问缓存rt竟然飙到了左右 。
作为高性能爱好者, 榨干CPU的每一分价值是我们的宗旨, 是可忍孰不可忍, 怎么能光空转, 不干活呢? 那就仔细分析下问题。
为啥Redis访问延时如此高?
我们简化下Redis访问流程如下:
可能性1: 服务端问题?
我们Redis使用的是 redis_amber_master_4xlarge_multithread 16C32G+480G SSD 规格, 最大QPS参考值24w, 最大连接数3w, 配置还是非常豪华的。 如下, QPS以及Load在峰值请求阶段, 都仍然处于低位。可能性2: 物理网络问题?
如下, 请求远远没有达到机器带宽, 不是瓶颈. 另外单独看了网卡重传率等指标, 也都正常。
可能性3: 客户端问题?
那么很大概率就是客户端自身问题了. 我们把客户端详细放大如下:
根据当时ARMS监控结果如下, 虽然YGC次数与耗时有所上升, 但没有发生FGC:
把内存Dump出来, 分析JedisConnectionFactory几个相关重要指标, 发现问题有如下2个:
maxBorrowWaitTimeMills过大 : 即最大等待时间过久。在等待从连接池中获取连接, 最大等待了1200ms 。很大概率是因为block在连接池获取, 导致请求处理缓慢。 Redis连接创建销毁次数过多: createdCount 11555次; destroyedCount: 11553次。 说明max-idle参数设置不合理(on return的时候检查idle是否大于maxIdle, 如果大于则直接销毁该连接)。每个对象的创建就是一次TCP连接的创建, 开销较大。导致脉冲式请求过来时引发频繁创建/销毁, 也会影响整体性能。顺便说一句: maxBorrowWaitTimeMills, createdCount, destroyedCount 几个metrics信息是JedisPool对象持久维护的全局变量信息, 只要JVM不重启, 这个信息就会一直存在。 这也就是为啥不需要在压测峰值时获取内存dump, 而是事后dump也可以。
此外, 如果细致探索JedisPool参数工作机制, 就需要了解apache的ObjectPool2的机制。刚好笔者在之前研究过ObjectPool, 后续会出单独文章阐述&对比ObjectPool, ObjectPool2, JedisPool以及经常踩坑的DruidPool的实现原理与差异。
本文就不再赘述, 敬请期待~
至此, 定位问题是JedisPool行为异常导致。
如何解决问题?
线上JedisPool实际参数
部分参数是由 继承而来
======-=60000参数行为解析
max-active: 连接池的最大数量为100, 包括 idle + active. 注意, 这里被映射为了ObjectPool的maxTotal参数上。 连接池的最大空闲数量为16, 即如果return时, idleObject>=16, 则该对象直接被销毁。 启动后台线程, 每30s执行一次, 定时心跳保活与检测。 连接池最小空闲的连接数量为0. 即corePoolSize为0, 不会长期maintain一个固定的容量。脉冲式请求引发的问题
我们把问题简化为如下序列, 即可发现问题所在. 在T2~T3内, 84个对象创建, 84个对象销毁. 造成了极大的损耗。
期望的行为模式
由于线上环境, Redis服务器配置较高, 为了能充分压榨性能, 同时应对容器场景下典型的突发峰值, 因此如下行为:
连接池的最大数量=连接池的最小数量=连接池的稳定数量. 即不要临时去创建连接, 防止等待过久。 需要定时心跳保活与检测, 及时删除掉超时/无效的连接。 不要因为idle时间过久而重建连接(只因为连接失效而重建)。防止无意义的大规模连接重建。=500 // 线上稳定保有4台, 4*500=2000, 仍然远小于Redis规格支持的==30000 // 定时心跳保活与检测=500 // 连接池的稳定数量=true //定时心跳保活与检测=-1 // 每次保活检测, 都需要把500个连接都检测一遍. 如果设置为-2, 则每次检测1/2比例的的连接.=-1 // 不要因为idleTime大于某个阈值从而把连接给删除掉. 这样可以防止无意义的大规模连接重建。效果验证
终于在20230413重新迎来了一波压测, 流量模型与上次相同。结果如下:
maxBorrowWaitTimeMills 下降比例接近 80% createdCount 也从之前的 11555次 下降到了 500次(即池子初始化的size) 业务侧整体性能也大幅提升, P50与P90均下降了将近60%, P99更是夸张地下降了70%。简直是amazing, 完结撒花!~-
一次访问Redis延时高问题排查与总结 焦点热闻寒亭阿里开发者2023-06-2109:02发表于浙江阿里妹导读作者抽丝剥茧的记 -
观点:未来1天,四大生肖事业棒桃花旺,贵人多多,存款翻五番生肖鼠的人古怪精灵,,事业发展顺利,拥有一种与生俱来的精致感,在致 -
黄楚平主持召开省人大常委会主任会议 决定省十四届人大常委会第四次会议7月下旬召开|每日消息南方网讯(记者 王昊邓芳兰通讯员 任宣)6月21日,省十四届人大常委会 -
【世界时快讯】龙舟竞渡汉江上6月22日,第二十三届中国安康汉江龙舟节开幕,28支当地参赛队伍在汉江 -
势能和动能的区别 势能和动能的区别 公式区别在于动能是物体运动而具有的能量,其大小主要决定于速度,而势能是 -
天天热议:众望所归!马刺队用状元签选中文班亚马众望所归!马刺队用状元签选中文班亚马,法甲,马刺队,状元签,nba选秀,中 -
2023NBA状元出炉!马刺无悬念选中文班亚马,一个新时代开启?2023NBA状元出炉!马刺无悬念选中文班亚马,一个新时代开启?,篮球,马 -
新时代青年让世界听见中国_新资讯看到团十九大报告提到,“推进人类社会进步、创造世界美好未来,中国青 -
今日看点:智己LS7辅助驾驶 挑战上海高架晚高峰这次来到了上海体验了一次智己LS7的城市高架辅助驾驶能力,在拥堵的魔 -
迈巴赫_迈1、因为我国汽车工业起步晚,一直是外国车当道,它们大多是以英里每小 -
力王电影讲了什么_力王电影内容简述|天天微头条1、《力王》主要内容:2、鹤立王(樊少皇饰)从小就很厉害,在一个世交好 -
脾氨肽口服液的作用是什么意思_脾氨肽口服液的作用是什么1、脾氨肽口服液的有效成分是从普通牛、猪的脾脏中提取的,使用起来非 -
环球热议:新空间剧场《猫神在故宫》首演人气爆棚,演员与观众即兴互动擦出“火花”北京日报客户端|记者王广燕大朋友与小朋友一起头戴猫耳朵,钻进“猫洞 -
软糯的口感成为“抢手货”!浦江这个地方的小香薯上市了…来源:诗画浦江app版权归原作者所有,如有侵权请及时联系近日,花桥乡 -
体图:多特和莱比锡对哈维-西蒙斯感兴趣,球员不想回巴黎直播吧6月22日讯德媒《体育图片报》报道称,德甲球队多特蒙德和莱比锡 -
刮痧瘦腿最快最有效的方法_刮痧瘦腿法是怎样进行的解答:1、我们认为一个人美不美腿的比例很大,所以拥有一条美腿是很多 -
港商点赞湖南营商环境一流:“一件事一次办”三湘都市报·新湖南客户端6月22日讯(全媒体记者曾冠霖实习生曾澜)6月 -
【当前热闻】一枕黄粱梦太长是哪首歌的词(一枕黄粱梦)您好,现在蔡蔡来为大家解答以上的问题。一枕黄粱梦太长是哪首歌的词, -
【天天快播报】阿迪达斯数字化创新减碳“绿色低碳发展已成为全球可持续发展大趋势,对中国来说,加快工业绿色 -
天天快资讯:绚丽盛夏万物斑斓 勾勒出华夏大地锦绣画卷绚丽盛夏万物斑斓勾勒出华夏大地锦绣画卷---昨天(6月21日)我们刚刚迎 -
【天天快播报】桐庐县发改局拥江办赴富春绿道疏港公路段,实地踏勘绿道建设情况桐庐县发改局拥江办赴富春绿道疏港公路段,实地踏勘绿道建设情况4月18 -
财经股票|热议本文内容是由小编为大家搜集关于财经股票,以及的资料,整理后发布的内 -
关于乙肝,饮食注意什么孙南雄主任医师江苏省人民医院病情分析: 关于乙肝,饮食要注意 -
严查“缺斤短两”!郑州启动电子计价秤大排查大整治专项行动为进一步规范全市消费市场计量秩序,回应社会关切,营造诚信、放心的市 -
陕西省高陵县发布高温黄色预警 环球头条高陵区气象台2023年06月22日10时20分发布高温黄色预警信号:预计未来三 -
【环球报资讯】四月最穷新番,动画做成动漫《极主夫道》改编自大野康介创作的同名漫画,这部作品无论是口碑还是人 -
微速讯:宋广仁1、宋广仁,又名宋颖豪,一九三○年生。2、河南襄城人。文章到此就分享 -
我省上市公司科技创新成色更足(新时代 新征程 新伟业)-环球视讯万得数据显示,截至6月21日,河南省共有境内上市企业110家,其中创业板 -
阿里旺旺无法登录的解决方法|全球速看料阿里旺旺是一款用于商品沟通的聊天软件,拥有丰富的聊天方式,文字、语 -
excel查找功能在哪_excel查找功能1、操作方法如下:1 首先,打开一个有数据的Excel表格,右侧上方的工具





