南京网站开发就业培训课程,云计算存储网站建设安全,美食网站建设合同范例,互联网营销师证书概述 最近不知道咋回事#xff0c;老是在线上遇到偶发的故障#xff0c;它突然出现#xff0c;又很快消失了。 在2023年3月11下午差不多六点左右#xff0c;我正在工位上喝着香味扑鼻的金骏眉红茶#xff0c;突然接到了一个电话#xff0c;拿起手机一看#xff0c;是阿里…概述 最近不知道咋回事老是在线上遇到偶发的故障它突然出现又很快消失了。 在2023年3月11下午差不多六点左右我正在工位上喝着香味扑鼻的金骏眉红茶突然接到了一个电话拿起手机一看是阿里云告警电话马上接通听到的是下面这么一句话 Dubbo调用超时故障。 噗已流入喉咙的红茶差点喷出来赶紧打开阿里云的SLS日志平台搜索了一下发现A服务的RPC接口部分超时了马上进入熟悉的线上定位套路。
看流量是否陡增看是否发版导致的
还是用SLS日志平台查看流量发现流量是平滑的这一步花了10秒钟然后再看最近A服务是否有发版发现也没有这一步花了我10秒。
20秒钟后正当我想让运维重启A服务的时候团队的一个同事过来跟说没有报错了。我重新查了一下日志确实没有继续报错了就让同事继续盯着我自己开始定位原因。 注意这里由于故障时间非常短且是一个A服务的读接口有问题可以暂时不用去考虑影响面肯定是非常小的。 然后就开始漫长且辛苦的定位之路了。通过查看错误日志发现是A服务获取Redis连接超时了。
redis.clients.jedis.exceptions.JedisConnectionException : Failed connecting to xxxxxx.redis.rds.aliyuncs.com:kkkk
Caused by: java.net.SocketTimeoutException : connect timed out而且报错的都是同一个业务接口细看一下代码后发现只是一个普通的get命令就报错了。 在流量没怎么变化的情况下只能从下面两个方面入手
当时A服务到底占用了Redis多少个连接A服务的Redis连接配置。
想看A服务的Redis连接情况可以在阿里云的Redis监控平台上看。 从上图可以看到A服务(包含所有的Pod实例)在56分左右最高占用了211个Redis连接并不多难道是A服务的Redis连接配置的不合理?
maxIdle:100
maxTotal:300从配置上看是正常的每一个A服务的Pod实例当有100个Redis连接正在处理请求的时候如果还忙不过来会继续创建新的Redis连接一直到300个。 才占用了211连接不可能导致A服务拿不到Redis连接的不会是211这个数字有什么玄乎的吧? 真的只能承受这么多? 于是去找了一下A服务在历史上最高占用了多少个Redis连接发现是 是390个这就有点搞不懂了占用390个连接没问题211个反而有问题? 没办法了只能让运维去看一下是否有网络抖动情况但是运维很快回复说 一切正常,且当时整个Redis实例运行状况是非常稳定的。 那到底啥情况? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
我有点想甩锅给阿里云了便让运维提了一个工单去问一下阿里云的售后但得到的回复是 当时无HA切换无闪断RT也没有异常变高的情况。 到此我也没啥的好的办法了只能跟老板说明一下情况然后把这个问题先放一放持续观察。
期间其实我还看了很多东西只是没什么收获大概看了如下几个方面
在56分的时候这个Redis实例上的所有操作命令是否有什么异常为什么当当是那个业务接口触发了这个问题对比了各个时间段A服务和Redis实例的状态