现状
使用jetcache连接阿里云redis服务,完成相关服务
现象
突然有一天,jetcache抛出了无法从连接池中获取链接资源
排查思路:
1.查看代码和配置更改记录,确定是否是因为发布更新导致
2.通过测试网络是否连通方式确定是出程序之外的配置问题(这一步往往需要相关人员有较强的软件架构和网络相关知识才可以,本次就重点记录这一步做了什么)
3.确定阿里云产品相关配置是否被人更改(这一步往往是耗时且没有结果的,这一步可以通过上一步推测出来)
排查过程
1.代码和配置更改对比:
通过分支代码对比可以查看出代码和配置是否有问题
2.网络是否通测试:
因为我的服务是k8s+docker容器部署,所以服务是运行在docker容器中的,所以要想测试网络是否通需要进入ecs实例中的docker容器中测试连接:
首先:通过线上跳板机进入到线上ECS实例(因为线上ECS实例是不能直接登录的,只能通过跳板机)
其次:查看ECS实例中的docker容器;
然后:进入docker容器
docker exec -it contenerId/contenerName /bin/bash
安装telnet命令:
yum install telnet
连接目标机器:本文以redis为例,测试网络是否连通
telnet 域名/ip 6379
用户名 密码
网络连通,证明不是网络的问题,是服务或者服务配置的问题;网络不通则是网络的问题。
3.产品相关的网络配置检查
结果定位到,redis网络配置中白名单配置有问题,添加上服务的ECS的ip地址到白名单就可以访问了。