问题解决之方法论
方法论
确认问题
- 确认是不是一个问题,是什么性质的问题
- 评估严重程度和优先级别,按照重要紧急程度做妥善处理,重要且紧急时应当先恢复服务(回滚或规避)
- 尽量复现问题,复现问题对于定位问题很重要
定位问题
- 收集足够的信息,明确问题边界
- 收缩问题边界
- 采用二分法快速排除
- 竖向分层,逐层排查
- 横向分解为两个或多个子问题,各个击破
规避和解决问题
- 有时候不要直面解决问题,而是应该规避问题
- 务必评估修改对系统的影响
注意事项
- 对于复杂问题应当更严谨,如在收缩边界时一旦犯错会很致命会浪费大量时间
- 问题的原因往往不止一个,因此有时候解决完一个问题后整个问题并没有解决很正常,此时应该继续定位其他原因并解决
技巧
- 查看 Log
- Access log
- 代码 Log
- 其他日志
- 关注报错信息
- Chrome console log
- 编译错误和警告,区分编译时和运行时有时候很重要:什么是编译时和运行时?
- 控制台错误输出
- 善于搜索
- 善于使用恰当的关键字在代码里搜索,如在工程里找 axios 拦截器,我们可以搜索特征串 “interceptors.” 可以快速找到响应和请求拦截器
- 善于使用恰当的关键字在飞书云文档里搜索
- 善于使用恰当的关键字在合适的网站如 stackoverflow.com,github 的 issues 等搜索
- 回溯堆栈
本作品采用《CC 协议》,转载必须注明作者和本文链接