如何追查线上问题

tags: #经验 #output

原则

止损优先

不能先追查问题根源, 首先应该止损,不让问题进一步扩大,代码回滚服务降级等都可以起到止损的效果。
对于止损有一个比较好的实践,新业务或者重构业务上线时,可以加一个 配置开关 控制是否启用逻辑,在发现有损时,可以及时关掉业务逻辑,比重新上线要快特别多

及时通告

在问题发生之后,要及时对处理问题的过程进行通告。特别是应对线上有损的问题时,更应该及时通告。在内部群中,简单描述一下问题与可能的原因,处理的进度。而在外部群里,可以只说一下处理的进度。如果有必要,可以将问题上诉到领导,如果还解决不了问题,可以逐级继续上诉。

追查问题的方法

逻辑方法:

  1. 先收集现象:业务报错、线上报错日志等
    对紧急的问题来说,需要对线上业务、服务器等非常熟悉,才能迅速收集到有用的报错信息。
  2. 针对现象假设原因
    1. 常见问题依据追查手册
    2. 其他问题保持思路开放,大胆假设
  3. 是否有损的判断:
    根据现象假设出可能的原因,判断是否是有损的,如果是有损的问题,参考 止损优先
  4. 质疑所有数据:
    各个数据、监控系统等的有效性也需要质疑,不能完全相信,需要小心求证

知识准备

  1. 对线上各种日志的熟悉,从日志中能看到具体的问题,比如 nginx 日志 php 日志等
  2. 对线上的各种配置更要做到心中有数
  3. 细节的追查,每次都更细一些,这样才能获得更多的信息
  4. 计算机基本功,有时问题追查不下去,不是没有线索,而是追查到了一个未知的领域,没有相关的知识,无法追查

总结经验

  1. 成熟的方法落地成工具
  2. 对问题的追查形成文档

问题解决之后

如果问题解决之后,我们就不再跟进了,那么我们就沦为了解决问题的工具,问题也随之越来越多,解决不完。
那么,我们可以通过思考以下几点来提升自己

  1. 线上是否恢复了正常?(最基本的
  2. 问题的原因是什么?(落到追查文档
  3. 通过什么手段恢复的?(解决方案
  4. 怎么可以避免下次再次出现问题?(防患未然
  5. 除了此次出现的问题,会不会有其他的问题出现(举一反三
  6. 出现此类问题是否是架构问题造成的?(根本原因
posted @ 2021-04-22 13:43  吴丹阳-V  阅读(102)  评论(0编辑  收藏  举报