统一认证鉴权协议错误导致服务器假死大量报504和502错误
2023-03-15 23:28:23 时间
背景:生产环境功能测验证时大量报错504和502,准入网关假死
原因:
在压测过程中,使用了过期的cookie导致访问应用接口鉴权失败,访问接口走协议里约统一认证里面去了。里约统一认证压测多次,准入网关假死,报错504与502
排障过程:
1。通过产研初步定位,问题确认是网关配置问题,使用错误的cookie请求会去查询redis数据库,对接入网关配置文件进行修改,排查目前有出现接入请求到准入网关的时候没有负载均衡的情况,通过修改网关配置文件后复测重复压测依旧发现修改不成功,依旧会出现假死
2.拉通网关人员上会,排查出是认证过程中会走协议到wwlocal identity init onGo ,此函数会报错,经过分析排查此函数存在逻辑BUG,发现请求会重复执行wwlocal identity init规则onGo函数来res.writeHead.导致准入网关出现Crash后经产研人员修复BUG,定位到问题
切入点:RIO报错日志Cannot set headers after they are sent to the client,造成网关worker重启,回溯栈在认证规则函数onGo里,里面先执行res.writeHead(),后执行res.end(),其中res.end()即是“sent to the client”。
外围代码发现有一处if内调用onGo,if之后缺少else,再次调用onGo的,会产生先调用res.end(),再调用res.writeHead()的时序,加上else后压测情况恢复,不再遇到网关假死情况。
无else
有else
相关文章
- Linkerd SMI 扩展入门
- 【技术种草】体验腾讯云资源
- 提高你开发效率的十五个Visual Studio 2010使用技巧
- 机器人相关学术速递[11.8]
- 统计学学术速递[11.9]
- SpringBoot(mybatis :foreach标签)
- 设计模式6大原则:里氏置换原则
- 统计学学术速递[11.10]
- 《手把手教你》系列技巧篇(四十二)-java+ selenium自动化测试 - 处理iframe -下篇(详解教程)
- Android AsyncTask实现原理和使用技巧分享
- MySQL 8.0慢查询日志实验
- 金融/语音/音频处理学术速递[11.11]
- IProgress not found. Please update jupyter and ipywidgets.解决办法
- 金融/语音/音频处理学术速递[11.12]
- 机器人相关学术速递[11.12]
- Java Review - HashMap & HashSet 源码解读
- 和12岁小同志搞创客开发:手撕代码,做一款人体感应灯
- 和12岁小同志搞创客开发:手撕代码,做一款声控灯
- Java Review - LinkedHashMap & LinkedHashSet 源码解读
- Java 5线程池使用