【效能提升】我们排查一个bug的过程是怎么样的?
背景
最近发现团队中一些同学对如何排查一个bug,思路不够清晰。本文随笔整理:常规情况下,我们是如何排查一个bug的。
1. 弄清楚问题
有些人看到“弄清楚问题”,可能会觉得好笑,这不是废话吗?
实际上,我遇到很多同学连问题都没搞清楚,就开始在排查问题,继续追问是如何排查的,回答更是模糊。
我们首先要弄清楚问题是什么,最起码的是“复现步骤”、“预期结果”、“实际结果”、“是否必现”。
当然问题描述越细致,越有助于问题的排查。
《【效能提升】测试人员提bug,应该提供哪些信息以便排查问题?》描述了理想情况下,我们想知道问题的哪些信息。
2. 复现问题
用户反馈的问题一般都发生在生产环境,我们需要在测试环境复现此问题,有助于我们排查问题,也有助于测试人员验证问题是否修复到位。
复现问题这个步骤一般由测试人员完成。
3. 排查问题
排查问题有许多排查手段,排查手段没有先后之分,我们会针对不同的问题优先选择某些手段以便快速解决问题。
3.1. 通过“日志”、“审计日志”、“堆栈”、“错误收集”等信息定位问题
如果系统有打印日志、记录审计日志、打印异常信息、异常收集,可以通过这些信息快速的定位问题发生在哪里,再结合对应的代码实现,很容易就能定位到问题。
(这看似理所当然的一个步骤为什么要列出来?实际我遇到太多同学连异常日志都不看,就匆匆跑去看代码实现了)
- 日志:应用日志、Web服务器日志
- 审计日志:关键操作审计日志、请求响应报文日志
- 异常信息:日志中应该包含异常信息(包括堆栈信息)
- 异常收集:如Sentry
- 等等
3.2. 阅读源码排查问题点
1、阅读发生问题的相关代码实现,理解功能的实现逻辑,分析问题有可能发生在实现的哪几个点。
2、然后,按照怀疑的这几个点,按照优先级排查验证。这个排查验证有很多种方式,最老实的可以通过“添加日志打印,然后查看日志”来验证你的怀疑点。
3.3. 经验主义
某些系统,经常出现某些问题(而此问题至今仍未修复),基于经验,你可以消除你怀疑的问题,观察问题是否还能复现。
比如,A系统,常出现消息队列阻塞,至今仍未修复,现在出现某个问题,你可观察该消息队列的消息都完成消费了,再观察问题是否还能复现。
后记
有些经验的小伙伴看到此文,可能会觉得很多步骤是理所当然的,不用特别说就应该这么做,实际上,我见过挺多入行不久的小伙伴还没掌握。
小弟不才,暂时只回忆起这些点,后续根据实战迭代起来哦!!
【效能提升】我们排查一个bug的过程是怎么样的?的更多相关文章
- 印象最深的一个bug——排查修复问题事件BEX引发的谷歌浏览器闪退崩溃异常
前言 最近,我们部门负责项目运维的小王频频接到甲方的反馈,运行的项目使用谷歌浏览器登录后,每次点击处理2秒后,浏览器自动闪退崩溃.小王同学折腾了一个星期,还没找到问题的原因.甲方客户都把问题反馈给项目 ...
- JS Foo.getName笔试题解析,杂谈静态属性与实例属性,变量提升,this指向,new一个函数的过程
壹 ❀ 引 Foo.getName算是一道比较老的面试题了,大致百度了一下在17年就有相关文章在介绍它,遗憾的是我在19年才遇到,比较奇妙的是现在仍有公司会使用这道题.相关解析网上是有的,这里我站在 ...
- 记录一个使用HttpClient过程中的一个bug
最近用HttpClient进行链接请求,开了多线程之后发现经常有线程hang住,查看线程dump java.lang.Thread.State: RUNNABLE at java.net.Socket ...
- 十倍效能提升——Web 基础研发体系的建立
1 导读 web 基础研发体系指的是, web 研发中一线工程师所直接操作的技术.工具,以及所属组织架构的总和.在过去提升企业研发效能的讨论中,围绕的主题基本都是——”通过云计算.云存储等方式将底层核 ...
- 我大抵是卷上瘾了,横竖睡不着!竟让一个Bug,搞我两次!
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言:一个Bug 没想到一个Bug,竟然搞我两次! 我大抵是卷上瘾了,横竖都睡不着,坐起来 ...
- Tomcat一个BUG造成CLOSE_WAIT
之前应该提过,我们线上架构整体重新架设了,应用层面使用的是Spring Boot,前段日子因为一些第三方的原因,略有些匆忙的提前开始线上的内测了.然后运维发现了个问题,服务器的HTTPS端口有大量的C ...
- sqlite在Android上的一个bug:SQLiteCantOpenDatabaseException when nativeExecuteForCursorWindow
更多内容在这里查看 https://ahangchen.gitbooks.io/windy-afternoon/content/ ::-/com.company.product W/System.er ...
- PostgreSQL的.NET驱动程序Npgsql中参数对象的一个Bug
最近将公司的项目从SqlServer移植到PostgreSQL数据库上来,在调用数据库的存储过程(自定义函数)的时候,发现一个奇怪的问题,老是报函数无法找到. 先看一个PgSQL存储过程: CREAT ...
- 由一个bug引发的SQLite缓存一致性探索
问题 我们在生产环境中使用SQLite时中发现建表报“table xxx already exists”错误,但DB文件中并没有该表.后面才发现这个是SQLite在实现过程中的一个bug,而这个bug ...
- 关于MySQL count(distinct) 逻辑的一个bug【转】
本文来自:http://dinglin.iteye.com/blog/1976026#comments 背景 客户报告了一个count(distinct)语句返回结果错误,实际结果存在值,但是用cou ...
随机推荐
- 了解URLSearchParams对象
URLSearchParams对象用于处理URL中查询字符串,即?之后的部分. 1.语法 其实例对象的用法和Set数据结构类似.实例对象本身是可遍历对象.但是不是遍历器. var paramsStri ...
- uni-app小程序(快手、抖音)getCurrentPages使用坑位记录2
前情 uni-app是我比较喜欢的跨平台框架,它能开发小程序/H5/APP(安卓/iOS),重要的是对前端开发友好,自带的IDE让开发体验也挺棒的,现公司项目就是主推uni-app,我主要负责抖音和快 ...
- FCM发送测试消息(控制台和postman)
方法1 在firebase控制台新建通知 点击cloud messaging后点击新建通知 输入标题和内容,点击右边的发送测试消息,注意要在真机接收,模拟器收不到 然后添加测试令牌,测试令牌可以在ap ...
- Python 潮流周刊#82:美国 CIA 如何使用 Python?(摘要)
本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你挑选最值得分享的文章.教程.开源项目.软件工具.播客和视频.热门话题等内容.愿景:帮助所有读者精进 Python 技术,并增长职 ...
- 【前端】白天/黑夜主题切换:JS读取XML预设主题实现黑白主题切换
上扩展实现多主题选择,切换主题) 先看一下XML文档 id值不能重复,一套主题的name要相同,亮色type1,暗色type0 <?xml version="1.0" enc ...
- 龙哥量化:通达信macd黄白线变色公式macd金叉怎么写macd死叉怎么写(需要继续优化,各种变色方式)
你提出的任何逻辑要求,只要是软件能实现的,我都能用通达信写出来,我レメLong622889通达信.大智慧.文华.博易的编程逻辑差不多,只是个别函数不一样.TB交易开拓者.金字塔和文华8,都是专业的期货 ...
- Qt编写视频监控系统73-不同视频流不同类型的判断和解析(http/m3u8/rtsp/rtmp等)
一.前言 这套视频监控系统大概从2018年起步整体框架,一步步积累到现在,中间经历了无数次的各种视频文件.视频流.视频设备的播放测试,比如光视频文件就有mp4/wmv/rmvb/mkv/avi等格式, ...
- Qt音视频开发41-文件推流(支持网页和播放器播放并切换进度)
一.前言 本功能最初也是有一些人提过类似的需求,就是能不能将本地的音视频文件,通过纯Qt程序推流出去,然后用户可以直接在网页上播放,也可以用各种播放器播放,然后还可以任意切换播放进度,其实说白了就是个 ...
- Qt音视频开发02-海康sdk解码(支持句柄/回调/gpu模式/支持win/linux)
一.前言 为何还要选用使用海康sdk,之前不是ffmpeg已经牛皮吹上天了吗?这个问题问得好,那是因为无论ffmpeg也好还是vlc/mpv之类的,都是实现的播放相关,不同的监控硬件厂家对应设备还有很 ...
- AutoCAD 2020中文版建筑设计从入门到精通下载链接
AutoCAD 2020中文版建筑设计从入门到精通下载链接 链接:https://pan.baidu.com/s/1EgFHOSKfPrr9Xdp3bNA-pA或https://pan.baidu.c ...