今天遇到了 X-Y PROBLEM
Posted zhangpengfei5945
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了今天遇到了 X-Y PROBLEM相关的知识,希望对你有一定的参考价值。
什么是X-Y 问题呢?
以下参考来自于耗子叔博客:
- 想解决问题X
- 他觉得Y可能是解决X的方法
- 但是他不知道Y应该怎么做
- 于是他去问别人Y应该怎么做?
X-Y Problem 最大的严重问题就是:在一个根本错误的方向上浪费了大量的时间和精力!
更多了解可以参考酷壳上的X-Y Pproblem https://coolshell.cn/articles/10804.html
- 上面介绍了X-Y问题,那么接下来说下我们今天遇到的问题:
问题描述:调用第三方接口线上签名错误,测试环境正常,初步怀疑是时间戳问题,签名参数信息中有时间戳参数
然后让我帮忙排查下,重点在上面最后一句话:初步怀疑是时间戳问题,然后我觉得是不是线上php.ini 中的默认时区没有配置,那么我们就可以在代码中加入log 信息,看时间戳是否正确
尝试解决1: 加日志,打印时间戳和构造加密请求参数信息
然后发现时间戳正常
那么如果时间戳正常,那么为什么测试环境正常,线上环境有问题呢?
排查了好久,最后同事发现是配置文件中配置第三方的key 密钥参数配置出错了。。。。。。
那么我们继续复盘:为什么一开始不检查配置文件呢,因为一上来同事就看了配置文件的配置,他说没有问题,这个地方以后自己也要检查下,我们就去关注业务逻辑了,然后还提了另一个同事帮忙更新掉了配置文件
本来问题是签名不正确,我们就从头开始排查签名涉及到的参数信息就可以了,因为初步定位时间戳问题,我们就去排查时间戳了,其实时间戳并没有问题。
所以真正的问题X是签名不正确,问的问题是Y: 时间戳有问题,所以在Y问题排查了半天,才发现在错误的方向上。
总结:
1. 整体性的排查问题,脑子里把流程理清楚,如果想不清楚就借助流程图等工具进行辅助
2. 排查问题前,多问几个为什么,了解到真正的问题所在
3. 细节之处往往容易出错,自己也要仔细检查下配置信息
以上是关于今天遇到了 X-Y PROBLEM的主要内容,如果未能解决你的问题,请参考以下文章