生产问题排查记录

问题背景

XX项目已经上线一两个月了,前期非常顺利,用户访问量也日益增长;但是在上一周开始,陆陆续续有用户开始出现初始请求列表为空的状态;重复刷新没有数据显示,大部分用户是正常显示的,当时只有6个用户异常,而且这些用户之前都是正常访问,用户的版本都是最新的,同时引导用户清理缓存、重装 App 都未生效。

分析排查过程

  • 后端开始排查:1、搜索这些用户相关的接口请求日志,发现完全没有请求痕迹;2、使用这些用户的请求参数模拟访问,发现接口返回正常;开始怀疑是前端和原生这块的问题,由于这个页面是原生重构为 H5,走的是原生的容器,很大可能是因为这块转发或者缓存异常的问题。
  • 由于前端没有错误日志上报,只能通过加错误提示放到页面中,但是由于没有上报日志,只有错误提示,还是定位不到任何问题;此时异常的用户陆陆续续开始增多,达到10个了;最后前端增加了异常 Sentry 上报,开始收集错误日志。
  • 顺利拿到了上报日志,接口参数正常,报的是 Network error;也就是网络异常,请求发送直接被返回 null,接口还是没有任何日志收到,最后团队的大佬开始分析网络层的问题------域名解析,开始核对 Nginx 配置,发现内地的 Nginx 并没有配置转发,所有请求都解析到 HK,内地的一些用户访问不到,直接报网络异常;

总结分析

当时自己根本没有想到是网络层的问题,只怀疑是前端或者后端出现问题,自己的思维还是太死板了,客户端------>网络层------>后端服务;都可能有问题,而且变量有很多,网络层就是一个充满变化的变量;当所有变量都排查完之后,要把视野放在未排查的地方,这是自然的逻辑,自己由于缺少经验,没有往这方面去想,也就被问题蒙蔽了双眼,问题是最好的老师,网络层这块也真的要补补了,公司有运维,他们是负责这块配置,但是出了问题,只有开发自己排查,如果不熟悉整个请求链路,是没办法查明白真相的,学无止境,也警醒自己!

相关推荐
何以解忧,唯有..13 天前
Go语言循环语句详解:for、range与循环控制
开发语言·算法·golang
踏着七彩祥云的小丑13 天前
Go学习第9天:并发编程 + 文件操作 + 正则表达式
学习·golang·正则表达式·go
JCGKS13 天前
Go `init` 函数:包初始化顺序到底是怎样的
golang·init·init执行顺序
何以解忧,唯有..13 天前
Go语言中的const:常量声明与iota枚举详解
java·开发语言·golang
geovindu13 天前
go: Reactor Pattern
开发语言·后端·设计模式·golang·反应器模式
CoderYanger13 天前
A.每日一题:234. 回文链表
数据结构·程序人生·leetcode·链表·面试·职场和发展·学习方法
CoderYanger13 天前
A.每日一题:3612. 用特殊操作处理字符串 I
java·程序人生·leetcode·面试·职场和发展·学习方法·改行学it
CoderYanger13 天前
A.每日一题:144题+145题 二叉树的前序遍历+后序遍历
java·程序人生·leetcode·面试·职场和发展·学习方法·改行学it
記億揺晃着的那天13 天前
Java 调用外部 Go 程序的实践:ProcessBuilder 在生产环境中的应用
java·golang·processbuilder
jingling55514 天前
go | 环境安装和快速入门
开发语言·后端·golang