项目中常见BUG的排查方法汇总

1 前言
最近各项目组频繁出现技术问题,问题主要包括:测试不达标、生产事故两大类。常常有人问我寻求技术支持,其中包括排查办法、思路、有事直接参与技术排查过程中。怎奈我一人能力有限,无法满足整个DB部门的需求,痛定思痛,决定总结此文,以纪念过去十余年来踩过的坑。
2 需要的技术知识
计算机技术是一门系统的科学,任何一个点上出现的问题都有可能导致全局性的问题,我们有时需要从计算机硬件、网络硬件、数据库、各种中间件技术及工作原理、算法、编程语言技术特点、业务需求、架构设计等各个方面进行综合分析才能判断和定位问题。以上知识的学习过程有可能很漫长,不是一个人力所能及,所以排查复杂问题的过程需要各方面的专家综合会诊才可以解决。所以这也是个团队合作的过程。
3 需要的材料
问题排查的过程就像福尔摩斯探案一样,不能放过任何蛛丝马迹,并作科学的分析与论证才能定位问题的本源。虽然并不是我们面对的所有问题都很复杂,但是当我们有更多的信息时有助于我们更加快速准确的定位问题。更具上面我们提到的知识来说,我们定义复杂问题所需的资料一般包括但不仅限于:系统设计文档、业务流程、应用和各种组件的日志、Dump信息、硬件配置单、网络部署图等内容以及系统问题现象描述。
4 观察现象:
系统当前展现出的问题现象往往是我们确定系统问题的第一手资料。这些感官现象包括:系统慢、宕机、夯死等现象,同时监控系统也会伴随出现警告或者错误信息提示。但是这些信息仅仅是出于感观方面的,不能定位和发现问题起到指导作用,为了发现问题我们需要从以下几方面进一步观察细节。
4.1 硬件类:
事实上大部分的故障排除过程中,硬件问题往往具备以下几个特点:
**1、**最容易发现的;通过几个命令即可快速查看状态,并发现和定位问题;除非他是被间接影响的。
**2、**最容易被忽略的;往往由于硬件原理理解不够,或者是开发者的惯性思维将问题优先假设在代码层面上。
硬件类问题主要观察的指标包括CPU使用率、物理内存占用率、SWAP占用率、网络IO占用率、磁盘IO占用率等等;比较好用且全面的检查工具是nmon,如果没有安装的情况下可以使用其他命令进行综合排查。
一般情况下硬件类指标的影响都是伴随型出现的,但是我们通过单个特征的特点,进行综合性分析。一般情况下单纯的CPU占用率高主要是由于算法复杂,运算量大,逻辑判断多等情况导致;物理内存占用率高,如果是对于java程序由于其xmx参数的特点,可以不用过度关心,此时主要看SWAP内存占用率情况,如果这个值很高的话会导致系统运行缓慢;网络IO占用率高,分为读/写两种,这主要是数据交换频繁导致,;磁盘IO占用率分为读/写两种,要区分是哪个值高,然后通过程序设计的特点排查和定位问题。
4.1.1 虚拟机参数:
大部分程序员第一感觉是虚拟机跟物理机一样,但实际上受到虚拟化技术原理的限制,会有一些我们意想不到的问题。通常我们见到的硬件类常见问题以外,虚拟机环境也同时受到了所在物理机各种参数的限制,而出现各种各样的

  • 4
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值