1.http请求超时和分布式中的熔断同时,引起的bug
某天突然上线一个多月的项目,突然登录不了,且该项目代码也有一个多月没有改动了,该登录模块是我负责的,于是我就在本地运行测试,结果本地是正常的,怎么登录都没报错,我发现几个模块同时都登录不上,
过程分析:
一开始以为是内部调用feign 的问题,后来线上所有模块都重启,还是不行,基本判断了不是这个问题
然后发现数据库中的登录日志已经记录了,说明正常的登录逻辑已经走完了,日志记录完就会返回给前台,
最后仔细分析,发现代码中日志记录的地方,请求了阿里的根据ip获取地址的接口,这个接口已经废弃了,而且请求的http接口没有设置超时连接,所有最后登录很慢,前台请求超时直接返回错误,后台请求的时候,熔断处理也返回一个系统错误,
问题
http请求一定要设置超时时间,而且http请求的处理出错一定要把错误日志打印出来,这里问题查找了几个小时,就是因为没有打印出日志,直接被熔断处理了
登录的日志记录和登录流程两个最好异步处理
2.https请求的问题
同上面一样,也是某天项目突然支付系统,无法支付了,在本地运行正常,在测试环境和线上环境,一直报连接超时,而且内部的https接口请求处理也没有响应
过程分析:
内部的接口处理,由于ip请求能直接走通,所以我判断程序肯定没问题,但是域名通过https就访问不通,这个本来准备等支付请求三方通了在看看问题所在
请求三方的,本地接口能请求通,但其他环境不行,一开始是以为 https 在 windows 和 Linux 环境的要求不同,或者 是服务器配置的问题,所以一直在看 tls1.2 相关的文章,ping 域名也能访问得通,后台根据网上的文章,仔细查看后觉得配置没问题,就 telnet 域名 443 ,发现其他环境不通,原来是 端口被封(80,443,8080 等),需要备案
问题:
对https 的原理了解的不透彻