1 概述
日常故障处理过程中,故障处理的任务和技巧与所面临的问题高度相关。WAS应用的故障诊断包括确定问题的有效性(是否真是问题)、确定问题的类型(是哪一类问题)、确定问题的解决方案(如何解决这个问题)等。
一般情况下,我们可以采用自顶向下和自底向上的方法进行,下面分别介绍这两种分析方法。
2 自顶向下分析(Top-Down Analysis)
所谓自顶向下分析是指将WAS应用系统划分为若干部分,采用排除法或归谬法。首先,确定问题出现的位置(是哪个部分的问题),然后,再在这个部分寻求问题的原因和解决方案。在对应用系统划分部分的时候,通常采取多级划分的办法,比如,首先可以把系统划分为应用服务器和数据库服务器,应用服务器又可划分为Web容器和EJB容器等。
自顶向下分析在确定问题属于哪一部分的时候,往往采取一种逐渐细分的方法,从比较粗的定位到非常细的功能模块划分,这就是自顶向下分析得名的由来。另外,自顶向下分析重视问题产生的条件,即出现问题之前和出现问题之后有什么不同,通过对产生问题条件的归谬,确定存在问题的部分。自顶向下分析方法如下图所示。
3 自底向上分析(Bottom-Up Analysis)
与自顶向下分析方法相反,自底向上分析方法注重问题的现象。通过考察性能问题现象的各种细节与以往出现问题的现象进行对比,确定性能问题的类型。自底向上分析方法往往直奔问题的日志或其他细节,比如报告的是内存泄漏问题,那就直接进行HeapDump分析,等等。自底向上分析方法如下图所示。
采用自底向上分析方法的一般是处理性能问题的专家,他们能够根据一些蛛丝马迹迅速找出问题的根源(RootCause)及解决方案。但是,这对进行问题诊断的人员的经验和判断能力要求非常高。如果一开始就出现了判断错误,则很可能浪费很大精力仍然与问题的正确解决偏离很远。
如果报告性能问题的信息不太充分,问题的现象不是很典型,或者进行问题诊断的人员缺乏处理相关问题的经验,则作者推荐采用自顶向下的分析方法。自顶向下分析方法相对比较系统而且容易掌握。尽管找到问題根源的速度相对比较慢,自顶向下分析的每一步都不会是无用功。
当然,在实际问题诊断过程中,这两种分析策略并不是相互矛盾的。读者完全可以采取一种中间汇聚的策略:先采取自顶向下的策略把问题出现的部分确定到一个比较小的范围,当确定问题属于读者熟悉的领域时,就可以采取自底向上分析方法快速找到问题的真正根源。
出处:除特别注明外,本站所有文章均为DevOps原创,转载请注明出处来自http://www.leexide.com/%e6%95%85%e9%9a%9c%e6%80%bb%e7%bb%93/1098.html