当前位置: 首页 > news >正文

bug的常见排查和分析思路以及相关的原因分类

作为开发人员,经常会收到来自用户和QA,领导反馈的各种问题。 为了快速问题,我们有时需要站在更高的角度,更全面的看待问题。才能更快锁定问题。

具体的bug还需要结合企业实际业务情况,相关的框架,依赖库,依赖api等,发布环境,发布配置,发布流程等问题 。

一、先上一些干货(bug排查中的常见原因分类)

二、排查定位的常见方法和定位思路.

 2.1一般根据异常提示或日志快速定位.

1)确定相关的异常提示是否能直接定位问题.

2)确定是否存在相关的应用日志,错误日志,操作系统日志,网络iis,apache,数据库日志,云服务日志等以便可以排查.

3)条件允许的情况下确定相同业务场景,相同用户,相同环境是否能重现.

4)确定是否有缓存问题.

浏览器缓存,cdn缓存等.

2.2无法直接定位时进行排除推理法.

1)确定版本(尤其对客户端app,api等有版本管理的地方适用).

   版本确定了则可以排查本版本的代码,配置,依赖库,发布环境,发布流程出现什么变更,然后依次排查。

2)确定问题出现的范围(用户范围,业务数据范围,新老数据范围).

    范围确定了则寻找相关的规律,从用户的角色,权限,历史数据,业务数据的状态(是否人工修改,是否因为没有事务导致不一致),是否涉及新处理不兼容老数据。

3)确定输入的业务数据本身是否有问题.

    确定输入,待处理的数据本身是否合理: 长度超过字段限制,内容被截断,tirm(), 乱码,编码,content-type,状态,过期,风控,  关联主体被禁用等.

4)查询已存在的知识库,bug管理系统,FQA等.

   借鉴历史反馈,解决方案,推测相关的处理办法。 

5)根团队确认近期公司的基础设施是否有变更( 网络环境,云服务,域名,cdn等服务商,api供应商,代理IP,安全策略等)

   会经常涉及到网络访问不通,禁止访问,缓存,重复访问,api不兼容等问题。

2.3对于莫名其妙的非正常问题.

1) 对于数据不合理,不正常,不一致,看起来无法因为代码引起的问题.

    考虑修改该数据是否有多个入口( web请求,job服务,  人工脚本修改,非事务操作导致的部分失败,sql注入,权限漏洞导致不相关的修改)

2)对于开发者那边正常,发布后不正常的问题.

    考虑环境是否一致(系统,浏览器,依赖组件,服务,硬件或云资源),  考虑是否因为混淆加壳导致代码异常或被杀毒软件拦截等。

 3)内存溢出的常见问题。

几个对象初始化形成了循环,属性形成了循环,  递归形成了循环, 线程锁死锁,同步方法内调用async方法, Task死循环, 存在只申请而不释放资源的处理, 存在释放的比较慢但申请的比较快的问题。

 4)对于微服务环境.

 k8s的老节点在Running,新节点还处于Pending状态.  加上一个负载均衡机制,会造成一个请求成功,下一个请求失败,循环交替或随机成功失败的问题。

 5)对于知道资源占用大户的进程,却不知道代码具体位置的。

   使用一些dump技术去分析观察。

 6)对于数据库访问压力大,cpu/内存占用高的问题.

   通过数据库日志,云数据库的慢sql统计,推荐办法等快速定位。  再就是要查看下相关的数据库配置是否合理。

http://www.lryc.cn/news/424333.html

相关文章:

  • Nature:7个提升科研产出的实用建议
  • react-native从入门到实战系列教程-页面之间的跳转
  • HarmonyOS应用开发者高级认证(一)
  • 【网络】套接字(socket)编程——UDP版
  • 一篇文章让你彻底掌握 Shell
  • Java中的Collection集合:深入理解与应用
  • Kubernetes-K8S
  • 简化文本处理流程,通用文字识别助力提升信息采集效率
  • 【网络】TCP协议通信的重要策略——滑动窗口,快重传,流量控制,拥塞控制,延时应答
  • 极狐GitLab CI/CD 如何构建镜像并推送到 azure 镜像仓库?
  • Leetcode—1143. 最长公共子序列【中等】
  • ZBrush笔刷介绍
  • React+AntDesign做一个日历,展示节假日,节气,并且在某几个时间上添加活动备注
  • 排序算法之梳排序
  • ESP8266 创建TCP连接
  • OceanBase内存管理小窍门
  • 【问题解决】git status中文文件名乱码
  • 探索数据结构:AVL树的分析与实现
  • 使用 C++ 实现简单的插件系统
  • 使用Python创建省份城市地图选择器
  • 【Java 数据结构】Stack和Queue介绍
  • Docker基本语法
  • uniapp 对于scroll-view滑动和页面滑动的联动处理
  • opencv基础的图像操作
  • Java | Leetcode Java题解之第337题打家劫舍III
  • 本地查看的Git远程仓库分支与远程仓库分支数量不一致
  • opencv-python实战项目九:基于拉普拉斯金字塔的图像融合
  • 浅谈JDK
  • 爬虫案例3——爬取彩票双色球数据
  • C++ | Leetcode C++题解之第337题打家劫舍III