对问题进行故障诊断

故障诊断是一种系统的解决问题的方法。故障诊断的目标是确定某功能不能按预期工作的原因以及如何解决该问题。

故障诊断过程的第一步是完整地描述问题。问题描述有助于技术支持代表了解从何处开始查找问题的原因。此步骤包含问一些需要“问自己”的基本问题:

  • 问题的症状是什么?
  • 问题在哪里发生?
  • 问题何时发生?
  • 问题发生的条件是什么?
  • 问题是否能重现?

这些提问的答案通常可以较好地描述问题,从而帮助您找到问题的解决方法。

问题的症状是什么?

此提问似乎很直接了当;但是,您可以将其分解为若干个更有针对性的询问,从而更好地描述该问题。这些问题包括:

  • 谁或什么报告了问题?
  • 错误代码和消息是什么?
  • 系统出现了怎样的故障?例如,是循环、挂起、崩溃、性能下降还是结果不正确?

问题在哪里发生?

确定问题来源并非总是很容易,但是这是解决问题最重要的一步。报告组件和故障组件之间可能存在许多技术层。调查问题时,网络、磁盘和驱动程序只是要注意的一小部分组件。

以下提问可帮助您关注问题发生在何处,以便隔离问题层:

  • 该问题是特定于某个平台或操作系统,还是普遍存在于多个平台或操作系统?
  • 是否支持当前环境和配置?

即使一个层报告了问题,该问题也不一定源于该层。要确认问题的产生位置,就要了解问题所在的环境。花一些时间完整描述问题环境,包括操作系统和版本、所有相应软件和版本以及硬件信息。确认运行所在的环境具有受支持的配置;许多问题的原因可追溯到不兼容的软件级别,即这些软件级别并不用于一起运行或尚未一起经过全面测试。

问题何时发生?

建立导致故障的事件的详细时间线,尤其是对于那些仅发生一次的情况。可通过反向工作来最方便地建立时间线:在报告错误时(尽可能精确,甚至直到毫秒)启动并通过可用的日志和信息反向工作。通常,只需要查看在诊断日志中找到的第一个可疑事件。

要制定详细的事件时间线,请回答以下问题:

  • 问题是否仅在白天或晚上的特定时间发生?
  • 问题发生的频率如何?
  • 什么顺序的一系列事件导致报告问题?
  • 问题是否在环境更改(如升级或安装软件/硬件)后发生?

回复这些类型的疑问可为您提供用于调查问题的参考框架。

问题发生的条件是什么?

了解问题发生时哪些系统和应用程序正在运行是故障诊断的一个重要部分。以下有关您环境的提问可帮助您确定问题的根本原因:

  • 此问题总是在执行同一任务时发生吗?
  • 是否需要发生特定顺序的一系列事件,问题才会出现?
  • 是否有其他应用程序同时也发生故障?

回答这些类型的问题可以帮助您说明问题发生时所处的环境并找出所有依赖关系。请记住,虽然多个问题可能同时发生,但这些问题不一定都有关联。

问题是否能重现?

从故障诊断角度来讲,理想的问题是可再现的问题。通常,当问题可重现时,您在处理问题时就具有更多的工具或过程可用于帮助调查。因此,可以重现的问题通常更容易诊断和解决。但是,会重复出现的问题可能具有以下缺点:如果此问题会严重影响业务,那么您会不希望它重现。如有可能,请在测试或开发环境中重现问题,此类环境通常会在调查期间提供更多灵活性和控制。

  • 可在测试系统上重现问题吗?
  • 有多个用户或应用程序遇到了相同类型的问题吗?
  • 可通过运行单个命令、一组命令或特定应用程序来再现问题吗?