对问题进行故障诊断的方法
某些常用技术可以帮助完成故障诊断任务。 故障诊断过程的第一步是完整地描述问题。
问题描述有助于您和 IBM® 的技术支持代表找出问题原因。 此步骤包含问一些需要“问自己”的基本问题:
- 问题有些什么症状?
- 问题发生在什么地方?
- 问题发生在什么时候?
- 问题发生在什么条件下?
- 问题能否再现?
准确回答这些提问通常可以详细描述所发生的问题,从而使问题得以解决。
问题有些什么症状?
当您开始描述问题时,最明显的问题是问题是什么?
此提问可能看起来简单明了;但是,您可以将其分解为若干针对性更强的提问,以更好地描述问题。 这些疑问可能包括:
- 谁或哪个组件在报告问题?
- 错误代码和消息是什么?
- 系统是如何发生故障的? 例如,系统发生了循环、挂起、崩溃、性能下降还是结果不正确?
问题发生在什么地方?
确定问题的原始发生位置常常不容易,但这是解决问题最重要的步骤之一。 在报告组件和失败组件之间可能存在许多技术层。 在调查问题时,网络、磁盘以及驱动程序只是要考虑的一些组件。
以下疑问可帮助您着眼于问题发生地点,以便隔离问题层:
- 问题特定于某个操作系统还是在多个操作系统中普遍存在?
- 当前环境和配置是否受支持?
- 是否所有用户都遇到该问题?
- (对于多站点安装。) 是否所有站点都遇到该问题?
如果一个层报告了问题,该问题不一定就来源于该层。 识别问题发源地的一部分工作是了解问题所在的环境。 花一些时间来完整地描述问题环境,包括操作系统和版本、所有相应的软件和版本以及硬件信息。 请确认运行环境是受支持的配置。 很多问题可以追溯到不兼容的软件级别,这些软件级别不应一起运行或者没有在一起进行充分测试。
问题发生在什么时候?
请制定导致故障的事件的详细时间线,尤其是那些仅发生一次的情况。 通过倒推法最容易制定时间表:从报告错误时开始(时间要尽可能精确,甚至精确到毫秒),一直倒推到可用的日志和信息。 通常,您可以使用在诊断日志中找到的第一个可疑事件。
要绘制详细的事件时间线,请回答这些疑问:
- 问题是否只发生在白天或夜晚的特定时间?
- 问题的发生频率如何?
- 引导至报告问题时的事件序列是什么?
- 问题是否在环境更改之后发生,如升级或安装软件或硬件?
回复这些类型的疑问可为您提供用于调查问题的参考框架。
问题发生在什么条件下?
了解在问题发生时有哪些系统和应用程序正在运行,是故障诊断的一个重要部分。 关于环境的这些疑问可以帮助您识别问题的根源:
- 此问题总是在执行同一任务时发生吗?
- 是否需要特定的事件序列才能导致发生此问题?
- 是否有任何其他应用程序同时发生失败?
回答这类疑问可以帮助您解释问题发生时所处的环境,并且将任何依赖性相关起来。 请记住,可能在同一时间附近发生的多个问题并不一定相关。
问题能否再现?
从故障诊断的角度来说,理想的问题是可以重现的问题。 通常,当问题能够被复现时,您将拥有更多工具或方法来协助排查。 可以重现的问题通常更容易调试和解决。
不过,可以再现的问题也有缺点:如果该问题会对业务产生重大影响,则您不会希望它重现。 如果可能,请在测试或开发环境(它们通常可以在您进行调查时,为您提供更大的灵活性和更强大的控制能力)中再现问题。
- 是否可以在测试系统上重现此问题?
- 是否有多个用户或应用程序遇到了同一类型的问题?
- 是否可通过运行单个命令、一组命令或特定应用程序来再现问题?