美文网首页
记一次调Bug经历

记一次调Bug经历

作者: longLiveData | 来源:发表于2020-03-09 11:00 被阅读0次

20190314
XX的保密项目XX软件运行卡慢,20190313-20190315前去维护

软件基本功能
接收并存储其他几个系统发来的大量数据,解析后刷新显示在界面上。

软件问题描述
1.软件运行后正常运行,但是过一段时间后软件会进入卡顿状态:正常每秒刷新的数据现在几秒甚至几十秒刷新一次,界面切换反应及其迟钝。
2.有时候软件开始运行后直接进入上述卡顿状态,及其影响软件使用。

问题排查过程
1.运行后查看【任务管理器】的进程,发现内存占用明显上升。应该是由于数据量过大导致的卡顿。
2.分析软件功能和逻辑,问题可能出现在【数据解析】或者【页面刷新】两部分上。【数据解析】时数据量过大,导致无法实时处理软件卡慢;【页面刷新】时要显示的数据量过大,不能及时刷新显示导致软件卡顿。
3.对数据解析的线程里面的全部解析函数添加调试输出,运行软件,发现这些输出的频率不论软件卡不卡顿基本保持不变。基本排除数据解析导致的软件卡顿。
4.对【刷新显示】的全部线程分批注释之后运行软件,发现有时卡顿有时正常。不断注释调试,发现【显示日志】的线程和软件卡顿有直接相关关系,问题应该出在日志显示这里。
5.进入日志显示的函数查看,发现函数的逻辑是读取当天的日志文件的全部内容并更新在页面上。每秒要写入好几条日志,每写入一条日志该函数就执行一次。由此分析,当文件较大时,每秒要读取几次全部内容,当然会进入卡顿。当当天的日志文件较少时,开始运行时一切正常,但是随着运行时间该文件变大,软件就会进入卡顿状态。当当天的日志文件较大时,开始运行时就会进入卡顿状态,分析结果和实际Bug表现完全一致。
6.软件当天的全部日志文件不至于那么大。但是软件可以设置当前运行时间,当同一天被多次运行时,当前的日志文件就会超出正常大小,导致软件卡顿。

问题解决
找到了原因,那么解决方法有多种。可以从文件读取部分内容显示,也可以减少该函数的调用次数等。
经过分析和与软件使用者沟通,我选择直接在该解析函数第一行return注释掉该函数。页面上有查看日志的按钮,点击即可读取全部的日志内容。那么该更新函数就有点鸡肋。为了避免问题直接选择了注释掉该函数。
注释后三次半小时不间断测试,bug没有再出现。

分析总结
排查问题要有自己的思路,在了解软件和技术的基础上进行步骤分析。
大胆质疑,小心求证。

相关文章

  • 记一次调Bug经历

    20190314XX的保密项目XX软件运行卡慢,20190313-20190315前去维护 软件基本功能接收并存储...

  • ThinkPHP 接入 SeasLog 日志组件

    【背景】 为实现开发前期联调bug 定位、线上bug快速定位、快速响应,遂暂为斐讯路由后台 Api 模块添加日志记...

  • 记一次处理bug的经历

    公司最近上线了一个新算法,暂且就叫算法1吧,在上线前我做过大量的测试,都是正常的,然后上线后,负责对接的开发跟我说...

  • 记一次isso调bug的过程

    我们最近写了一个cms系统,因为是公司内网使用,需要一个评论系统,所以在网上找了一个开源的叫isso,这货看起来是...

  • 05. getWriter()has already been

    记一次bug fixed: getWriter()has already been called for this...

  • 记一次 Google 面试经历

    记一次 Google 面试经历 记一次 Google 面试经历

  • 趣图:程序员正在找 Bug

    趣图:别急,我正在找bug 程序员调 Bug 的写照

  • 记一次 Vue 调试 Element 组件 bug 经历

    最近公司 iOS 项目不忙,我也就加入了一个前端 Vue 项目帮帮忙,顺便学习 js 和 Vue。 这里不得不说,...

  • 记一次BUG

    一、如何快速的给大量轨迹点打上区划代码?1、高德爬取街道中心点,行政区划中心点和边界。2、精度要求较高的,将边界加...

  • 记一次bug

    错误细节,用户名无法拖动,其他的栏都可以对应的长短拖动(表头和表格内容一起动) 代码: 错误原因,在第一栏这个fi...

网友评论

      本文标题:记一次调Bug经历

      本文链接:https://www.haomeiwen.com/subject/jbsudhtx.html