跳转到主要内容

如果您还没有注册到 IBM 注册系统,我们为给您带来的不便表示道歉,并请您马上注册。 现在注册

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

当您初次登录到 developerWorks 时,将会为您创建一份概要信息。您在 developerWorks 概要信息中选择公开的信息将公开显示给其他人,但您可以随时修改这些信息的显示状态。您的姓名(除非选择隐藏)和昵称将和您在 developerWorks 发布的内容显示在一起。

所有提交的信息确保安全。

当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

所有提交的信息确保安全。

WebSphere Application Server V8 新特性之问题诊断新特性

李 明慧, 软件工程师, IBM
李明慧: 2007 年加入 IBM,先是在 IBM 中国软件开发中心 Data Studio 团队工作从事 InfoSphere Warehouse Administration Console 的功能测试工作。后转到 WebSphere 应用服务器系统测试部组工作,曾在 developerWorks 发表《将 DB2 DWE 9.1.X 迁移到 DB2 Warehouse 9.5 》、《 InfoSphere Warehouse SQL 仓储命令行接口》以及《 Linux 下利用 squid 反向代理提高网站性能》《 InfoSphere Warehouse Administration Console 的对比介绍》,《 SQL 语句性能调优 - 初级篇》。
张 冠楠, 软件工程师, IBM
张冠楠,2010 年加入 IBM,在 IBM 中国软件开发中心从事 WebSphere 应用服务器系统测试工作。感兴趣的技术领域包括 Java EE 6 , BIRT 等开源项目。

简介: 

问题诊断就是发现问题并排除问题的过程。IBM WebSphere Application Server V8(WAS V8)提供了很多在问题诊断方面的新特性,通过这些新特性可以自动的发现问题并从故障中恢复。WAS V8 在问题诊断方面的新特性包括三个个方面:

1. 可以使用管理控制台来收集 Java 转储文件和核心文件

2. 高性能可扩展记录(HPEL)

3. 基于请求的 RAS 粒度(适用于 z/OS)

本文将向您介绍,如何使用这两个新特性来对您的 WAS 问题进行诊断。

发布日期: 2011 年 9 月 05 日
级别: 初级
建议: 

WebSphere Application Server 是 IBM 旗舰应用服务器产品,在 2011 年 6 月 17 日正式发布了 V8 版本。在 WebSphere Application Server V8 中引入了很多新特性,例如,支持新的编程模型和新的标准,简化的安装过程,安全和性能方面的提高,以及服务器管理方面的新特性等等。

本文将主要向您介绍 WebSphere Application Server V8 在问题诊断方面的新特性。问题诊断就是发现问题并排除问题的过程。WebSpehre Application Server V8 提供了很多在问题诊断方面的新特性,通过这些新特性可以自动的发现问题并从故障中恢复。WebSpehre Application Server V8 (以下简称为 WAS)在问题诊断方面的新特性包括三个方面:

  1. 可以使用管理控制台来收集 Java 转储文件和核心文件
  2. 高性能可扩展记录(HPEL)
  3. 基于请求的 RAS 粒度(适用于 z/OS)

本文将向您介绍,如何使用这两个新特性来对您的 WAS 问题进行诊断。

使用管理控制台来收集 Java 转储文件和核心文件

Java Virtual Machine(JVM) 能够生成 Java 转储文件和核心文件,来辅助问题诊断。我们可以通过堆转储 (heap dump) 和系统转储 (system dump) 来分析内存相关的问题,例如,内存泄露。我们可以通过 Java 核心文件来诊断像 CPU 利用率 100%,线程挂起,或者线程死锁之类的问题。

在 WebSpehre Application Server V8 之前的版本要想获得 Java 转储文件和核心文件的话,只能命令行,或是一些工具,比如说 IBM Support Assistant。这些方式都很不方便。那么现在在 V8 中,我们可以通过管理控制台来方便的获取 Java 转储文件和核心文件了。

打开 ebSpehre Application Server V8 的管理控制台,访问的 URL: http:.//<hostname>:port/ibm/console。在左侧导航栏内单击 故障诊断 > Java 转储和核心


图 1. 管理控制台 Java 转储文件和核心页面
图 1. 管理控制台 Java 转储文件和核心页面

如果您的概要文件类型为应用 Application Server 类型的话,那么在这个页面,您将看到的唯一台服务器,正如上图所示。但是如果您的概要文件类型为 Deployment Manager 类型的话,那么您将看到在整个单元环境的所有服务器。

选择所列示的一个或多个服务器,然后单击下列其中的一个按钮来生成转储。

堆转储

堆转储是 JVM 内存的快照。它显示内存中的动态对象以及它们之间的引用。可以使用该选项来调试内存泄漏、堆分段存储之类的情况或调查哪些对象消息的内存最多。


图 2. 堆转储生成示例
图 2. 堆转储生成示例

当您点击 堆转储 后,会在页面上显示请求已发送,并且会指出堆转储生成的路径及文件名。

Java 核心

使用此按钮来诊断服务器挂起的原因或日志中指示线程未在期望时间段内完成工作的消息。


图 3. Java 核心生成示例
图 3. Java 核心生成示例

系统核心

使用些按钮来生成服务器进程的系统本机转储。这些转储可能会很大。


图 4. 系统核心生成示例
图 4. 系统核心生成示例

生成的 Java 转储文件和核心文件,可以使用 IBM Support Assistant 工具来进行分析和问题诊断。您可以从参考资源获得 IBM Support Assistant 工具的下载地址,也可以从参考资源中了解到如何使用 IBM Support Assistant 来分析 Java 转储文件和核心文件。


高性能可扩展记录

高性能可扩展记录(HPEL)是 WebSphere Application Server V8 的新特性。在此之前,应用服务器产生的日志需要登录到实际的物理机器上获得,使用编辑工具进行内容的查看。为了方便用户更加高效和方便的查看服务器产生的日志,WebSphere Application Server V8 提出并实现了高性能可扩展记录日志,使用户能在应用服务器的管理控制台上进行日志的查看及筛选,相比较于基本的日志存储和查看功能有着显著的进步。

HPEL 主要包括日志数据存储库、跟踪信息存储库和文本文件。它提供了一种方便的机制来存储和查看应用服务器产生的日志(SystemOut.log、SystemErr.log)、系统的跟踪信息,也可以查看 JVM 的日志、诊断信息以及服务器上的服务日志。

WebSphere Application Server V8 中兼容基本的日志功能和 HPEL。默认的配置是基本的日志方式,如若使用 HPEL 的方式,则需要进行手工配置。在 HPEL 方式下 WAS 将不再将日志写到传统的地方,而是以二进制的方式写进前面所提到的日志数据存储库,跟踪信息存储库或者文本文件。WAS 自带的日志查看工具 LogViewer 将用来提供查看、过滤、监控和格式化 HPEL 方式下的日志数据。

使用管理控制台从基本日志方式切换到 HPEL 方式

打开 WebSphere Application Server V8 管理控制台:http:.//<hostname>:port/ibm/console

在左侧导航栏内点击 故障诊断 > 日志和跟踪,如图 5 所示:


图 5. 管理控制台高性能可扩展记录核心页面
图 5. 管理控制台高性能可扩展记录核心页面

点击需要进行日志方式切换的应用服务器,如 server1,转到如图 6 所示界面:


图 6. 日志转换核心页面
图 6. 日志转换核心页面

点击“切换至 HPEL 方式”,则将日志方式由基本方式转换到 HPEL 方式,如图 7 所示:


图 7. 从基本日志方式切换为 HPEL 方式
图 7. 从基本日志方式切换为 HPEL 方式

使用命令行工具从基本日志方式切换到 HPEL 方式

使用 WebSphere Application Server V8 的命令行工具同样可以进行日志方式的切换。

进入到应用服务器的 WAS_HOME/bin 目录,运行 wsadmin 命令进入到 WAS 的命令行工具,按照如下步骤进行操作:

  1. 获得 HPEL 对象的引用

    HPELService =

    AdminConfig.getid("/Cell:myCell/Node:myNode/Server:myServer/HighPerformanceExtensibleLogging:/")

  2. 将 HPEL 的 enable 属性设置为 true

    AdminConfig.modify(HPELService, "[[enable true]]")

  3. 获得 RASLoggingService 对象的引用:

    RASLogging = AdminConfig.getid("/Cell:myCell/Node:myNode/Server:myServer/RASLoggingService:/")

  4. 将 RASLoggingService 的 enable 属性设置为 false

    AdminConfig.modify(RASLogging, "[[enable false]]")

  5. 保存配置

    AdminConfig.save()

上述命令中 myCell 代表单元的名字;myNode 代表节点所在主机的名字;myServer 代表服务器的名字。

使用管理控制台从 HPEL 方式切换到基本日志方式

从左侧导航栏进入到 故障诊断 > 日志和跟踪, 点击需要进行配置的应用服务器(这里为 server1),如图 8 所示:


图 8. HPEL 方式核心页面
图 8. HPEL 方式核心页面

点击 “更改记录和跟踪方式”> “切换至基本方式”,最终界面如图 9 所示,完成日志方式的切换。


图 9. 由 HPEL 方式切换为基本日志方式
图 9. 由 HPEL 方式切换为基本日志方式

使用命令行工具从 HPEL 方式切换到基本日志方式

使用命令行工具同样可完成应用服务器从 HPEL 方式切换为基本日志方式。

进入到应用服务器的 WAS_HOME/bin 目录,运行 wsadmin 命令进入到 WAS 的命令行工具,按照如下步骤进行操作:

  1. 获得 HighPerformanceExtensibleLogging 对象的引用:

    HPELService = AdminConfig.getid("/Cell:myCell/Node:myNode/Server:myServer/HighPerformanceExtensibleLogging:/")

  2. 将 HighPerformanceExtensibleLogging 的 enable 属性设置为 false

    AdminConfig.modify(HPELService, "[[enable false]]")

  3. 获得 RASLoggingService 对象的引用

    RASLogging = AdminConfig.getid("/Cell:myCell/Node:myNode/Server:myServer/RASLoggingService:/")

  4. 将 RASLoggingService 的 enable 属性设置为 true。

    AdminConfig.modify(RASLogging, "[[enable true]]")

  5. 保存配置

    AdminConfig.save()

上述命令中 myCell 代表单元的名字;myNode 代表节点所在主机的名字;myServer 代表服务器的名字。

使用命令行工具配置 HPEL

您可以使用 WebSphere Application Server V8 的命令行工具对 HPEL 进行配置,下面将给出几种常见的配置需求。其中 myCell 代表单元的名字,myNode 代表节点的主机名字,myServer 代表服务器的名字。

  1. 改变跟踪信息的设置。清单 1 中将默认设置改为 *=info:com.ibm.ws.classloader.*=all。

    清单 1. 改变跟踪信息示例
    				 
     
     HPELService = AdminConfig.getid("/Cell:myCell/Node:myNode/Server:myServer/
     HighPerformanceExtensibleLogging:/") 
     AdminConfig.modify(HPELService, "[[startupTraceSpec *=info:com.ibm.ws.
     classloader.*=all]]") 
     AdminConfig.save() 
    

  2. 改变日志存储库的大小。

    日志存储库提供多个选项供设置,您可以设置日志存储库的最大容量,日志的最长存活时间等。清单 2 给出了如何设置当前日志存储库的最大容量为 65 MB,如果超出则删除较老的日志。



    清单 2. 改变日志存储库大小示例
    				 
     
     HPELService = AdminConfig.getid("/Cell:myCell/Node:myNode/Server:myServer/
     HighPerformanceExtensibleLogging:/") 
     HPELLog = AdminConfig.list("HPELLog", HPELService) 
     AdminConfig.modify(HPELLog, "[[purgeMaxSize 65]]") 
     AdminConfig.save() 
    

  3. 改变日志存储库的位置。

    清单 3 中将日志存储库的默认存储位置改为 /tmp/myDirectory。



    清单 3. 改变日志存储库的位置示例
    				 
     
     HPELService = AdminConfig.getid("/Cell:myCell/Node:myNode/Server:myServer/
     HighPerformanceExtensibleLogging:/") 
     HPELLog = AdminConfig.list("HPELLog", HPELService) 
     AdminConfig.modify(HPELLog, "[[dataDirectory  /tmp/myDirectory]]") 
     AdminConfig.save() 
    

  4. 禁止日志记录缓存。

    HPEL 日志系统使用缓存来暂存一定数量的日志记录,当该缓存满的时候,其中的日志内容才会被写到日志存储库中。日志缓存会大大提高日志系统的性能,然而当服务器突然停止的时候,缓存中的数据将会丢失,因此您也可以禁止掉这项功能。清单 4 给出了如何禁止日志记录的缓存功能。



    清单 4. 禁止日志记录缓存示例
    				 
     
     HPELService = AdminConfig.getid("/Cell:myCell/Node:myNode/Server:myServer/
     HighPerformanceExtensibleLogging:/") 
     HPELLog = AdminConfig.list("HPELLog", HPELService) 
     AdminConfig.modify(HPELLog, "[[bufferingEnabled false]]") 
     AdminConfig.save() 
    

  5. 固定时间开始写新日志文件。

    HPEL 日志系统可以在每天的固定时刻关闭正在写的日志文件,打开新的文件进行日志写操作,这样可以方便对所有日志的收集和管理。清单 5 给出了如何设置日志系统在每天的下午 3 点打开新的日志文件进行写操作。



    清单 5. 固定时间开始写新日志文件示例
    				 
     
     HPELService = AdminConfig.getid("/Cell:myCell/Node:myNode/Server:myServer/
     HighPerformanceExtensibleLogging:/") 
     HPELLog = AdminConfig.list("HPELLog", HPELService) 
     AdminConfig.modify(HPELLog, "[[fileSwitchTime 15]]") 
     AdminConfig.modify(HPELLog, "[[fileSwitchEnabled true]]") 
     AdminConfig.save() 
    

  6. 日志存储区满的处理方法。

    当日志存储区满应用服务器无法向其写日志的时候,HPEL 日志系统提供多种选择对其进行操作。如可停止应用服务器,或者清理较老的日志记录,或者停止写日志等。清单 6 给出了当存储区满时进行较老日志的清除。



    清单 6. 日志存储区满的处理示例
    				 
     
     HPELService = AdminConfig.getid("/Cell:myCell/Node:myNode/Server:myServer
     /HighPerformanceExtensibleLogging:/") 
     HPELLog = AdminConfig.list("HPELLog", HPELService) 
     AdminConfig.modify(HPELLog, "[[outOfSpaceAction PurgeOld]]") 
     AdminConfig.save() 
    

通过管理控制台查看 HPEL 方式下的日志

将 WebSphere Application Server V8 配置为 HPEL 的日志方式后,可以在管理控制台通过 LogViewer 对所有的日志和跟踪信息进行查看。图为通过 LogViewer 进行日志的查看。


图 10. HPEL 方式下的日志查看器
图 10. HPEL 方式下的日志查看器

您也可以通过 LogViewer 的内容和过滤详细信息功能对日志进行过滤,方便您查看你所需要和关注的日志信息。目前内容和过滤详细信息包括如下 4 个方面:(图 11 显示了如何在管理控制台上进行相关过滤功能的设置)

  1. 可对服务器的系统输出、系统错误、日志和跟踪信息进行分类显示。
  2. 定义输出日志的级别,只显示属于最小级别和最大级别之间的日志信息。
  3. 定义事件定时,输出属于某一时间段的日志信息。
  4. 定义日志内容的过滤器,使用通配符进行信息的过滤,分别有包括记录器、排除记录器和针对消息内容的过滤功能。

图 11. 日志查看器的内容和过滤信息功能
图 11. 日志查看器的内容和过滤信息功能

如何查看当前使用的日志方式

WAS 提供了一些步骤供用户去检测目前应用服务器使用的是哪种日志方式。

  1. 使用命令行工具检测 HPELControlService 对象

    运行 WAS 命令行工具 wsadmin 连接到正在运行的应用服务器上,检测 HPELControlService

    对象是否存在(如清单 7 所示)。如果存在,则证明使用的是 HPEL 的日志方式,反之则使用

    的是基本的日志方式。



    清单 7. 检测当前服务器的日志方式示例 1
    				 
     
     HPELMBean = AdminControl.queryNames('cell=myCell,node=myNode,
     type=HPELControlService,process=myServer,*') 
     if (HPELMBean == ''): 
        print "HPEL is not enabled"
     else: 
     print "HPEL is enabled"
    

    其中 myNode 代表节点所在的主机的名字,myServer 代表应用服务器的名字。

  2. 使用命令行工具检测 RASLoggingService 对象

    运行 WAS 命令行工具 wsadmin 连接到正在运行的应用服务器上(该应用服务器也可以是停止状态),检测 RASLoggingService 对象的 enable 属性(如清单 8 所示),如果是 true 则证明使用的是基本的日志方式;否则需要检查 HighPerformanceExtensibleLogging 对象的 enable 属性,如果是 true,则使用的 HPEL 的日志方式。

    注意:如果 RASLoggingService 和 HighPerformanceExtensibleLogging 对象都 enabled,可以推断该应用服务器配置到基本的日志方式。



    清单 8. 检测当前服务器的日志方式示例 2
    				 
     
     RASLogging = AdminConfig.getid("/Cell:myCell/Node:myNode/Server:myServer/
     RASLoggingService:/") 
     basicEnabled = AdminConfig.showAttribute(RASLogging, "enable") 
     if (basicEnabled == "true"): 
        print "Basic mode logging in effect"
     else: 
     HPELSvc = AdminConfig.getid("/Cell:myCell/Node:myNode/Server:myServer/
     HighPerformanceExtensibleLogging:/") 
     HpelEnabled = AdminConfig.showAttribute(HPELSvc, "enable") 
     if (HpelEnabled == "true"): 
        print "HPEL is enabled"
     else: 
     print "No logging is enabled" 
    

    其中 myCell 代表单元的名字;myNode 代表节点所在主机的名字;myServer 代表服务器的名字。

  3. 使用管理控制台

    用户登陆到管理控制台后,打开如图 5 所示管理控制台高性能可扩展记录核心页面,点击应用服务器,如果显示的是图 6 所示页面,则证明正在使用基本的日志方式,否则使用的是 HPEL 的日志方式。


基于请求的 RAS(Reliability Availability and Serviceability)粒度

RAS 是 Reliability, Availability 和 Serviceability 三种属性的缩写。基于请求的 RAS 是指在同一个应用服务器内可以将不同的 RAS 属性值赋值给不同的请求的集合,这样用户可以提高应用服务器的可靠性,可用性和服务能力,并同时提高应用服务器处理的请求数量。这里的请求可以是 HTTP, IIOP, 优化的本地适配器(OLA)或者 MDB,在 WAS 中实现 RAS 粒度只需要定义合适的负载分类文档,针对不同的请求,定义不同的 RAS 属性值,然后在管理控制台声明该负载分类文档的位置,重启应用服务器或者重新加载该文档即可。该新特性只适用于 z/OS 上的 WAS。

实现基于请求的 RAS 的具体流程如下:

  1. 开发负载分类文档。

    负载分类文档是一种普通的 XML 文件,该文件中不同的节点代表不同类型的请求的属性。您可以在本文的附件中下载该负载分类文档的示例。

  2. 如果负载分类文档的字符集合是 IBM-1047,需要在使用之前将其转化为 ASCII 编码方式。将负载分类文档转化为可以在应用服务器上使用的文档主要使用命令

    native2ascii,该命令存在于 Java SDK 中,可以将文件转化为 ASCII 的编码方式。具体使用方式为:

    如把 x5sr02.classification.ebcdic.xml 转化为 x5sr02.classification.xml:

    /u/userid $ native2ascii

    x5sr02.classification.ebcdic.xml > x5sr02.classification.xml

    z/OS 支持另一种命令 iconv,起到同样的作用:

    /u/userid $ iconv -f IBM-1047 -t UTF-8

    x5sr02.classification.ebcdic.xml > x5sr02.classification.xml

  3. 在管理控制台中指定负载分类文档的位置。使用 wlm_classification_file 来指明包含分类信息的 XML 文件。在管理控制台,点击 环境 > WebSphere 变量 > 新建(如图 12 所示),用户可以将该变量设置成单元,节点或者服务器范围内有效。如果设置成单元或者节点级别,需要保证该文件对所有的同一范围内的服务器是可见并且可存取的。

    图 12. 在管理控制台声明负载分类文档(1)
    图 12. 在管理控制台声明负载分类文档(1)

    点击新建之后,输入变量的名称和值,变量名称为 wlm_classification_file,值为存放该文档的路径。如图 13 所示。



    图 13. 在管理控制台声明负载分类文档(2)
    图 13. 在管理控制台声明负载分类文档(2)

  4. 功能的生效:重启服务器或者重新加载负载分类文档都可以使文件生效。

    重新加载该文档的命令:

    MODIFY|F <servername>,RECLASSIFY,FILE='/path/to/newfile.xml'

    如果负载分类文档不是一个有效的 XML 文件,服务器会忽略它并给出如下信息:

    BBOJ0085E PROBLEMS ENCOUNTERED PARSING WLM CLASSIFICATION XML FILE (0)

  5. 使用 DISPLAY WORK 命令来显示所有的负载分类信息,检查分类规则是否在按需工作。该命令可显示 IIOP, HTTP, INTERNEAL, SIP, MDBA 和优化的本地适配器等各类负载的分类信息。

    清单 9. 命令 DISPLAY WORK 的使用示例
    				 
     
    命令为:
     MODIFY|F <servername>,DISPLAY,WORK,CLINFO 
    该命令的输出为:
    
     0- SY1  f bbos001,display,work,clinfo                                      
     SY1  BBOJ0129I: The /tmp/wlm4.class.xml workload classification file was loaded at 
      2009/07/14 19:33:35.297 (GMT).                                           
     SY1  BBOO0281I CLASSIFICATION COUNTERS FOR IIOP WORK                    
     SY1  BBOO0282I CHECKED 0, MATCHED 0, USED 0, COST 2, DESC: IIOP root    
     SY1  BBOO0282I CHECKED 0, MATCHED 0, USED 0, COST 4, DESC: leotag       
     SY1  BBOO0282I CHECKED 0, MATCHED 0, USED 0, COST 3, DESC: byetag       
     SY1  BBOO0282I CHECKED 0, MATCHED 0, USED 0, COST 4, DESC: hellotag     
     SY1  BBOO0283I FOR IIOP WORK: TOTAL CLASSIFIED 0, WEIGHTED TOTAL COST 0 
     SY1  BBOO0281I CLASSIFICATION COUNTERS FOR HTTP WORK                    
     SY1  BBOO0282I CHECKED 2, MATCHED 2, USED 0, COST 2, DESC: HTTP root    
     SY1  BBOO0282I CHECKED 2, MATCHED 2, USED 0, COST 4, DESC: plantta4     
     SY1  BBOO0282I CHECKED 2, MATCHED 1, USED 1, COST 3, DESC: giftag4      
     SY1  BBOO0282I CHECKED 1, MATCHED 1, USED 1, COST 4, DESC: jpgtag4      
     SY1  BBOO0283I FOR HTTP WORK: TOTAL CLASSIFIED 2, WEIGHTED TOTAL COST 7 
     SY1  BBOO0188I END OF OUTPUT FOR COMMAND DISPLAY,WORK,CLINFO         
    

    对该输出的解释为:

    “BBOJ0129I: The file workload classification file was loaded at time”指出该负载分类文档现在是活动状态,并指出其被加载的时间。

    “BBOO0281I CLASSIFICATION COUNTERS FOR type WORK” 指出该负载分类文档规则的使用,类型可以是 HTTP, IIOP, INTERNAL,SIP,OLA,MDB.

    “BBOO0282I CHECKED n1, MATCHED n2, USED n3, COST n4, DESC: text”指出在一个负载分类中的特殊规则:其中 N1 代表该规则被检查的次数;N2 代表该规则和请求匹配的次数;N3 代表该规则被使用的次数;N4 代表使用该规则的消耗;Text 为分类规则的描述性文档,这样方便用户了解该分类规则。

    “BBOO0283I FOR type WORK: TOTAL CLASSIFIED n1, WEIGHTED TOTAL COST n2”给出了概述信息,包括 IIOP, HTTP, INTERNAL, SIP, MDB 或者优化的本地适配器的负载分类。其中 Type 显示负载类型,可以是 IIOP, HTTP, INTERNAL, SIP, MDB 或者 OLA;N1 代表使用该规则进行分类的请求的数量;N2 代表整体开销的权重。

  6. 用户可以反复重复上述步骤直到得到满意的 RAS 粒度
  7. 具体解析负载分类文档的工作机制。

    使用如下的 HTTP 请求来测试。本示例的负载分类文档包含 RAS 属性。

    http://my.server.com:8080/PlantsByWebSphere/plants/newOrder.html

    因为是 HTTP 请求,应用服务器只扫描 http_classification_info 元素,并按照其定义在负载分类文档中的顺序进行扫描。

    应用服务器在负载分类文档中找到如下 RAS 属性:

     <http_classification_info 
        host="my.server.com"
        port="8080"
        transaction_class="HTC8080" 
        dispatch_timeout="100"
        queue_timeout_percent="98"
        timeout_recovery="session"
     stalled_thread_dump_action="javacore"> 
    

    这个元素包含输入属性和值“host="my.server.com" and port="8080"”,因为这些值和请求相匹配,应用服务器会继续扫描孩子元素。如下所示:

     <http_classification_info 	
          uri="/PlantsByWebSphere/*"
          message_tag="plantsbw"> 
    

    孩子元素定义了输入属性和值为“uri="/PlantsByWebSphere/*"”,和我们的 HTTP 请求相匹配,应用服务器会继续扫描孩子元素,第一个孩子元素如下所示:

     <http_classification_info 	
            uri="*.jpg"
            transaction_class="HTCPjpg"
            dispatch_timeout="10"
     /> 
    

    孩子元素包含“uri=“*.jpg””, 这个属性值对和输入的 URI 不匹配,因此应用服务器继续扫描下一个孩子元素,如下所示:

     <http_classification_info 	
            uri="*.html" 
            transaction_class="HTChtml" 
     /> 
    

    这项元素和输入的 URI 相匹配。

    如果没有更多的孩子元素,扫描将停止,该请求将被分类。应用服务器将这个请求的所有输出属性赋值为负载分类元素中的值。如下的属性值对就是该请求的一个完整的输出属性值对。

     dispatch_timeout="100"
      queue_timeout_percent="98"
      timeout_recovery="session"
      stalled_thread_dump_action="javacore"
      message_tag="plantsbw"
      transaction_class="HTChtml"
    

    同时应用服务器会从服务器端的配置属性文件中读取没有在负载分类文档中定义的

    RAS 属性,并赋值给请求。任何在负载分类文档中没有定义的属性,请求都会去适

    配服务器端的配置属性文件并输出相应的值。


参考资料

学习

获得产品和技术

讨论

作者简介

李明慧: 2007 年加入 IBM,先是在 IBM 中国软件开发中心 Data Studio 团队工作从事 InfoSphere Warehouse Administration Console 的功能测试工作。后转到 WebSphere 应用服务器系统测试部组工作,曾在 developerWorks 发表《将 DB2 DWE 9.1.X 迁移到 DB2 Warehouse 9.5 》、《 InfoSphere Warehouse SQL 仓储命令行接口》以及《 Linux 下利用 squid 反向代理提高网站性能》《 InfoSphere Warehouse Administration Console 的对比介绍》,《 SQL 语句性能调优 - 初级篇》。

张冠楠,2010 年加入 IBM,在 IBM 中国软件开发中心从事 WebSphere 应用服务器系统测试工作。感兴趣的技术领域包括 Java EE 6 , BIRT 等开源项目。

建议



static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=WebSphere
ArticleID=755722
ArticleTitle=WebSphere Application Server V8 新特性之问题诊断新特性
publish-date=09052011
author1-email=limhui_cnnew1@cn.ibm.com
author1-email-cc=
author2-email=zguannan@cn.ibm.com
author2-email-cc=

标签

Help
使用 搜索 文本框在 My developerWorks 中查找包含该标签的所有内容。

使用 滑动条 调节标签的数量。

热门标签 显示了特定专区最受欢迎的标签(例如 Java technology,Linux,WebSphere)。

我的标签 显示了特定专区您标记的标签(例如 Java technology,Linux,WebSphere)。

使用搜索文本框在 My developerWorks 中查找包含该标签的所有内容。热门标签 显示了特定专区最受欢迎的标签(例如 Java technology,Linux,WebSphere)。我的标签 显示了特定专区您标记的标签(例如 Java technology,Linux,WebSphere)。