解决问题的通用思路 - 关于线上运行的程序出错

-查找原因

正向分析法:

查看日志,包括正常日志和错误日志。对于日志里的异常内容,找到每个错误,如果是和自己写的程序逻辑相关,则定位到具体代码,进行相关程序代码分析。

对比分析法:

  • 对比日志
    参考最近一段时间正常运行时日志输出内容,对比现在出问题的日志内容。如果之前就有相同的异常日志并且程序运行正常,则可以认为该异常不是导致新问题的原因。
  • 对比数据
    如果能定位到相关数据库表,则可以对比数据最近一段时间和出问题的时间范围里是否有一些异常数据。异常数据指平时有规律的数据突然无规律,或者某字段一直有值但是出问题时候为空,平时是字符串但是出问题时候是数字等等。

假设分析法:

联想一下最近是否有任何相关改动。包括相关的程序代码,数据库表结构,服务器文件配置的改动,等等。如果程序一直运行好好的,突然出问题,80%都是做了新的改动。

发散分析法:

如果错误日志不是明显的业务逻辑代码报错,而是框架或者工具库相关错误,可以google,百度等搜索相关资料,看看是否有相关内容得到启示。

跟踪问题法:

如果已经能定位到相关的程序代码,但是不确定具体那种条件产生该错误,则可以在开发环境或者必要时在生成环境,加入一些日志输出代码,从而得到发生错误时候的更多数据信息。

重现问题法:

基于上面的分析结果,在开发环境进行测试。通过制造假数据或者写异常操作的代码,让服务器产生相同的错误信息使问题重现。

借用工具法:

如果是涉及一些性能问题分析,则需要使用相关工具。例如内存溢出要使用一些JVM内存监视分析工具,数据库查询慢要使用一些执行计划优化的分析命令。


-解决

在多种解决方案前提下,优选安全+有信心+快捷的方案。

  • 改数据 (IT同事在数据库后台修改或者业务同事在界面操作)
  • 改程序 (程序逻辑代码错误)
  • 重启服务器 (假如系统错误,非程序逻辑问题)

因为影响线上运行,所以要快速解决问题,使系统恢复正常。改动前必需做好相关数据备份和相关代码备份。在多种解决方案前提下,优选安全+有信心+快捷的方案。

什么是安全:就是改动小,范围可控的改动。
什么是有信心:除非万不得已,不要去写一些不确定能否解决问题的代码。解决问题的代码都必需在开发环境得到测试通过。
什么是快捷:就是如果可以仅仅改动某些数据或者表字段就能解决问题,就不要去改程序逻辑,从而避免潜在的代码新错误和由于重启服务器导致的线上停止运行服务。


-预防

解决问题后进行事后分析,防止将来问题重现。而且对于一些临时的线上解决方案,做好必要的跟进,彻底解决问题。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值