记一次错误排查,http 网络请求相关

本文通过两个案例,探讨了HTTP请求超时与分布式系统中熔断机制引发的问题,以及HTTPS请求在不同环境下出现连接超时的原因及解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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 的原理了解的不透彻

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值