问题陈述法
明确问题如何陈述是支持人员开始反映问题时的例行工作。比如可以询问:
A.是什么让你认为存在性能问题?(用来明确用户对于表面性能问题的看法,为什么用户认为是性能问题)
B.系统之前运行得好吗?(对比以前来判断用户的判断是不是有足够的依据)
C.最近有什么改动?软件?硬件?负载?(导致问题产生的可能触发原因)
D.问题能用延时或者运行时间来表述么?(如何量化问题而不是概念)
E.问题影响其它的人和应用吗?(确定影响的范围)
F.环境是怎么样的?用了哪些软件和硬件?是什么版本?是怎么样的配置?(了解整个系统的情况)
当遇到问题的时候使用上面的这些问题可以非常快速的将问题指向到根源和解决方案,所以当遇到问题的时候就可以首先使用这个方法。
科学法
在跨专业的科学领域对于研究未知的问题都是通过假设和实验的,通常有下面几个步骤。
问题->假设->预测->实验->分析
示例(实验性)
1.问题:为什么HTTP请求从主机A到主机C比从主机B到主机C的时间长
2.假设:主机A和主机B在不同的数据中心
3.预测:把主机A移动到与主机B一样的数据中心将修复这个问题
4.实验:移动主机A并测试性能
5.分析:性能得到修复-与假设的一致。
如果问题没有解决,在开始新的假设之前,要恢复之前试验的变动!
示例2(观测性)
1.问题:什么导致了数据库查询慢
2.假设:扰声邻居(其它云计算租户)在执行磁盘IO,与数据库的磁盘IO在竞争资源
3.预测:如果得到数据库查询过程中的文件系统IO延时,可以看出文件系统对于查询很慢是有责任的。
4.试验:跟踪文件系统延时,发现文件系统上等待的时间在整个查询延时中的比例小于5%。
5.分析:文件系统和磁盘对查询速度慢没有责任。
虽然问题没有被解决,但是环境中的一些组件被排除了。执行调查人员可以回到步骤2重新做个新的假设。
诊断循环
诊断循环和科学法很相似:
假设->仪器检验->数据->假设
就像科学法一样,这个方法也通过收集数据来验证假设。该方法强调数据可以快速的引发新的假设,进而验证和改良。和医生看病是相似的,用一系列小检验来诊断病情,并基于每次检验的结果来修正假设。
科学法和诊断循环法理论和数据都有很好的平衡,从假设发展到数据的过程很快,不好的理论就可尽早的是被和遗弃,进而开发更好的理论。