`
jerome_wang
  • 浏览: 156983 次
  • 性别: Icon_minigender_1
  • 来自: 云南
社区版块
存档分类
最新评论

IBM Support Assistant

    博客分类:
  • WAS
阅读更多


使用 IBM Support Assistant 进行快速的问题诊断

 

隋 鹏飞 (suipf@cn.ibm.com ), 软件工程师, IBM 软件开发中心
隋鹏飞 :目前在 IBM 中国软件开发中心主要从事 WebSphere Serviceability 系统测试相关工作。您可以通过 suipf@cn.ibm.com 与他联系。
王 亮 (wanglcdl@cn.ibm.com ), 软件工程师, IBM 软件开发中心
王亮:目前在 IBM 中国软件开发中心主要从事 WebSphere Application Server 系统测试相关工作。您可以通过 wanglcdl@cn.ibm.com 与他联系。

简介:  本文介绍了IBM Support Assistant(ISA)及其功能,并且通过示例说明了如何利用这个工具来快速诊断WebSphere Application Server使用过程中所遇到的问题。

<!-- <p class="ibm-no-print"> <div id="dw-tag-this" class="ibm-no-print"></div> <div id="interestShow" class="ibm-no-print"></div> </p> -->

发布日期:  2007 年 12 月 15 日
级别:  中级
访问情况  500 次浏览
建议:   <!-- Rating_Area_Begin --> <!-- Ensure that div id is based on input id and ends with -widget -->

<script type="text/javascript"> // &lt;![CDATA[ // widget div id and article id as args window.artRating.init('art-rating-widget'); // ]]&gt; </script><!-- Rating_Area_End -->
<!-- dW_Summary_Area_END --> <!-- CONTENT_BODY --> <!-- MAIN_COLUMN_BEGIN --> <!-- Related_Searches_Area_And_Overlays_Begin --> <!-- MAIN_COLUMN_CONTAINER_BEGIN --> <!-- MAIN_COLUMN_CONTENT_BEGIN -->

引言

IBM Support Assistant (ISA)是IBM为客户提供支持的重要工具,它旨在通过更快地解决产品问题来帮助客户更有效地使用 IBM产品。作为一个IBM产品的用户,如果你经常为一些突如其来的问题感到无所适从或者已经厌倦了在浩如烟海的网络世界中查找问题解决方案的话,不妨尝 试一下ISA这个快捷方便的工具平台。对于那些需要IBM直接提供支持的用户,ISA也可以帮助你快速提交问题报告并且自动地收集相关的诊断数据,从而加 速解决问题的过程。

ISA简介

IBM Support Assistant 是一个公共的工作台,它所服务的对象包括多种 IBM 产品,用户可以通过选择安装相应产品的插件,来获得其对该产品的支持。到目前为止,各种资源和工具正在持续不断的整合到ISA中,ISA也逐渐成为对 IBM产品进行故障诊断和获取资源的统一入口点。


ISA的安装与更新

首先,从http://www-306.ibm.com/software/support/isa/下载ISA的最新版 本-IBM Support Assistant and Electronic Service Agent,从3.1版本开始,ISA开始与Electronic Service Agent(电子服务代理ESA)的安装文件一起打包,后者用来向ESR(电子服务请求)系统提交问题报告。用户可以选择两者同时安装,也可以单独安装其 中的一个。安装完成后,启动ISA,其界面如下图所示:


图1. ISA欢迎界面
ISA欢迎界面

正如我们前面所提到的,刚刚装好的ISA仅仅是一个框架,并不能提供我们想要的功能,这一点和eclipse有些类似,用 户需要安装相应的产品插件和工具插件来扩展工作台的功能。这些工具将作为由 ISA管理的 Web 应用程序运行。关闭 ISA时,正在运行的工具也将关闭。在ISA中安装插件的过程很简单,您只需要在程序界面上方的菜单条里单击 “更新程序”,然后选择“新插件”,如下图所示,ISA当前所支持的所有的产品和工具都会显示在左边的插件列表里。这里我们选择“WebSphere ” -> “WebSphere Application Server V6.1” 及其工具插件“IBM Guided Activity Assistant”。此外,大多数IBM产品在进行故障诊断时都会用到“公共组件工具”里面的工具插件,因此也应当一起安装。安装完所有的组件,重新启 动ISA,可以在 “工具” -> “WebSphere Application Server V6.1” 下面查看我们刚刚装好的工具组件。


图2. 安装插件
安装插件

图3. 查看工具列表
查看工具列表


ISA的主要功能介绍

作为一个工具平台,ISA的主要用途是进行资源的整合和工具的集成,其功能主要包括如下五个部分:

1. 快速链接到相关的产品页面

安装好插件以后,单击“产品信息”->“WebSphere Application Server 6.1”,就会看到与WAS61产品相关的一系列产品信息。 包括产品主页、支持页面、新闻组和论坛、技能提高和故障诊断等几部分内容。客户可以从这里了解产品的基本信息,查看最新技术说明,获取各种技术文档和进行 在线培训等等。随着各种文档资源的整合更新,其包含的内容也在不断的变化。

2.“透明搜索”

ISA的“搜索”组件 提供了联合查询功能,用户可以快速地查询多个与支持相关的信息源,客户化的定制各种查询条件,比如文档的来源,产品的版本号等。在扩大搜索范围的同时进行 精确的查找,可以帮助用户更快更好地定位到所需的产品信息。

3.“工具”集成

问题定位和故障分析是一项非常复杂的工作,通常需要借助各种分析工具。虽然IBM的支持网站中提供了许多常用的工具,但对于用户来说,自己去发现和收集这 些工具可能会有一定的困难。ISA的工具集成模块以插件的形式收集了许多常用的工具,不仅为用户管理和维护工具提供了平台,还为不同工具之间进行交互提供 了方便。在ISA中,不同的分析工具可以通过插件互相调用,从而处理一些更为复杂的分析过程,许多分析工具正是利用这一点来实现诊断过程自动化的。

4.自动的基于症状的数据收集工 具

当用户决定向 IBM 提交问题时,一个比较麻烦的工作是如何收集 IBM Support 所需的各种信息,包括系统的配置信息,日志文件和追踪文件等。之前我们通常根据MustGather 文档的要求收集各种信息,现在数据收集工具可以辅助您自动完成这一过程。

ISA帮助收集数据的方式有两种:一种是在本机上收集系统环境和产品数据。收集过程中,收集器会要求您提供本地的产品安装 目录,因此这种方式只适用于ISA与所支持的产品安装在同一台物理机器的情况;另一种方式是创建可移植的收集器。这种方式首先生成一个生成可执行jar文 件,然后将其传送到目标服务器上去执行相应的收集过程。

5.“更新程序

正如我们前面所提到的,用户可以通过添加所需的产品和工具插件来定制ISA,而“更新程序”不仅能帮助客户获得许多新的工 具,也能帮助维护现有工具的版本更新,这其中也包括ISA本身。用户可以通过“更新程序”中的“已安装的插件” 选项卡查看已经安装的工具插件,如下图所示。要卸载这些组件,首先选中相应的工具插件,然后点击“卸载”按钮。


图4 查看已安装插件
查看工具列表


案例分析

接下来让我们看看如何使用ISA解决产品使用过程中所遇到的问题吧。这里我们使用一个死锁的案例,首先创建一个动态Web项目,在servlet locker中添加如 下代码 ,根据经验我们知道,两个互相嵌套的锁在并发条件下,发生死锁的机率很大。 这里我们只要用11个客户端对这个servlet加压,就会发现应用程序长时间失去反应。


源码 1. 死锁案例servlet源码

                package test;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
 * Servlet implementation class for Servlet: locker
 *
 * @web.servlet
 *   name="locker"
 *   display-name="locker" 
 *
 * @web.servlet-mapping
 *   url-pattern="/locker"
 *  
 */
 public class locker extends javax.servlet.http.HttpServlet 
 implements javax.servlet.Servlet {
    /* (non-Java-doc)
	 * @see javax.servlet.http.HttpServlet#HttpServlet()
	 */
	 final static String locker1 = "Locker1";
	 final static String locker2 = "Locker2";
	public locker() {
		super();
	}   		
	/* (non-Java-doc)
	 * @see javax.servlet.http.HttpServlet#doGet(HttpServletRequest request,
	 * HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
	throws ServletException, IOException {
		response.getWriter().println("dead_lock_test_page_start ---- ");
		synchronized (locker1) {
			      System.out.println("lock1_start->");
				   try {
			            Thread.sleep(50);
			          } catch (InterruptedException e) {
			          } // 点[1] --> 第40行  
			   synchronized (locker2) {
				  System.out.println("lock1_end");
			   }
			  }

		synchronized (locker2) {
			       System.out.println("lock2_start->");
				   try {
			            Thread.sleep(50);
			          } catch (InterruptedException e) {
			          } // 点[2] --> 第51行 
			   synchronized (locker1) {
				   System.out.println("lock2_end");
			   }
			  }
		response.getWriter().println(" ---- dead_lock_test_page_end");

	}  	  	  	    
}
      

 


从何处入手?

当遇到类似这样的问题时,我们应该从何处入手呢?

首先,用户可以通过ISA的搜索 页面搜索相关信息

如下图所示,ISA的“搜索”组件可以透明地搜索多个知识库,并将结果组合到一起。用户不仅可以选择从哪些知识库中查找信 息,也可以指定文档的类型、产品的版本号等,这样搜索的范围就会更具针对性,更容易找到所我们需要的信息。

根据搜索结果,我们可以对可能发生的问题有一个大概的了解,但还是没有办法确定具体的问题,这时,我们还需要借助各种诊断 工具进行诊断。


图5. 搜索相关信息
图5 搜索相关信息

借助诊断工具进行诊断

诊断工具是以工具插件的形式添加到 IBM Support Assistant 中的,使用“更新程序”可以获得各种工具插件。前面我们已经安装了“WebSphere Application Server V6.1” 相关的产品插件和工具插件,在没找到一个具体的解决方案和分析工具以前,我们可以从IBM Guided Activity Assistant (Tech Preview)工具开始。IGAA是一个帮助用户进行问题诊断的工具,它可以通过向导的方式辅助我们进行故障诊断,并在适当的时候调用相应的分析工具来 帮助我们分析收集到的诊断数据。关于IGAA更详细的信息请参考权威支持专栏文章 IBM Guided Activity Assistant 介绍


分析过程

首先我们打开IBM Guided Activity Assistant工具,其初始界面如下图所示:


图6. IGAA 初始界面
图6 IGAA 初始界面

在右上角的第一个向导页面中,选中“Troubleshoot a problem”,单击“Next”按钮,进入正式的诊断过程。每一个问题的诊断过程都会被保存为一个session。 这里,我们必须输入一个字符串作为session的名字。


图7. 创建session
图7 创建session

图8. 进行高级故障诊断
图8 进行高级故障诊断

接下来,在“Select an action”面板中选择“Perform advanced troubleshooting”进行高级故障诊断。进入下一页后,需要在问题分类列表中选择问题的类型,由于我们要诊断的问题更像是应用程序阻塞的问 题,所以选择“Troubleshoot Java hang problems”。当然,如果最终我们无法定位问题的话,系统还会提示我们重新选择问题的类型。


图9. 选择诊断类型
图9 选择诊断类型

图10. 选择诊断症状断
图10 选择诊断症状

在“Identify Primary Java Hang Symptoms”面板中,选择“Client applications are timing out waiting for a response”作为问题的特征描述。点击“next”按钮,可以看到问题症状的详细说明:

                
      Client applications, such as a web browser or Java client, that are timing out
      waiting for a response may be indications of a backend server hanging. 
      This may be indicated by the following symptoms: 
?	a blank page is displayed and the brower continues to spin waiting for
the response from the server
?	a generic HTTP 400 or 500 error (when a server sending a response to
the HTTP server hangs)
?	a specific HTTP 504 Gateway Timeout error 
?	A Java client may see CORBA NO_RESPONSE or CORBA.TRANSIENT errors.



图11. 诊断方法提示
图11 诊断方法提示

按照面板上的提示,我们每隔两分钟生成一次线程转储。这里我们用通过wsadmin命令进行创建:

wsadmin>set jvm [$AdminControl completeObjectName type=JVM,process=server1,*]

wsadmin>$AdminControl invoke $jvm dumpThreads

在 WebSphere Application Server 概要文件目录中查找名称类似 javacore.date.time.id.txt 的输出文件。点击“next”,在收集故障诊断数据文件面板中将线程转储文件添加到session中。


图12. 添加诊断数据文件
图12 添加诊断数据文件

接下来的两步中,分别选择“I collected the diagnostic data files, help me analyze them”、“ThreadAnalyzer is installed, analyze the javacore files”,单击“next”


图13. 调用诊断工具
图13 调用诊断工具

在“Analyze the Javacore Files Using ThreadAnalyzer”,单击"Launch ThreadAnalyzer Tool" ,启动线程分析工具分析我们刚刚添加的javacore 文件。分析结果如下图所示:


图14. 分析诊断结果
图14 分析诊断结果


查看分析结果

1.“Overall monitor analysis”分析结果显示, 线程“WebContainer : 3” 和 "WebContainer : 0" 之间发生了死锁,两个监控锁对象分别是java/lang/String@04811AD8/04811AE4和java/lang /String@04811A98/04811AA4,并且从“Servlet engine monitor analysis”的结果中还可以可以看到其它9个servlet线程也都在等待这两个锁对象,因此,可以确认由于线程“WebContainer : 3” 和 "WebContainer : 0" 的死锁,导致所有其他servlet线程也都处于等待状态,无法继续运行。


“Overall monitor analysis”分析结果

                
 Overall monitor analysis


Deadlock detected !!!


 Thread "WebContainer : 3" (0x153A8000)

   is waiting for:

     sys_mon_t:0x14ADA0E8 infl_mon_t: 0x14ADA128:

     java/lang/String@04811AD8/04811AE4: 

   which is owned by:

 Thread "WebContainer : 0" (0x1466A900)

   which is waiting for:

     sys_mon_t:0x14BB3ED0 infl_mon_t: 0x14BB3F10:

     java/lang/String@04811A98/04811AA4: 

   which is owned by:

 Thread "WebContainer : 3" (0x153A8000)
 

 

2.展开监控对象树,查看两个锁对象的详细信息,这些信息包括监控锁对象所在的类文件、方法和行号等,对照源代码我们可以很容易的从 locker.java类文件的第40行和第51行找到发生死锁的“loker1” 和 “loker2”。这样,我们就确定了发生死锁的具体位置。接下来的工作就是要分析线程状态,从而找到解决问题的方法。


锁对象java/lang/String@04811A98 /04811AA4 详细信息

                
==Monitor dump==

      Waiters....... 10
      
      .......
      .......
      
      Thread information:

      Thread type..................... Servlet handler

      name............................ WebContainer : 0

      thread id....................... 0x1466A900

      priority........................ 5

      state........................... B

   	Waiting on monitor................ java.lang.String@04811A98/04811AA4

      Waiting for web work............. no

      Executing web or local EJB work.. yes

      Waiting for remote orb work...... no

      Stack: 

         test.locker.doGet(locker.java:51)

         javax.servlet.http.HttpServlet.service(HttpServlet.java:743)

         javax.servlet.http.HttpServlet.service(HttpServlet.java:856)

         com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:966)

        .......
        .......
      
 



锁对象java/lang/String@04811AD8 /04811AE4 详细信息

                     
==Monitor dump==

   java.lang.String@04811AD8/04811AE4

      Waiters....... 1

    Thread information:

      Thread type..................... Servlet handler

      name............................ WebContainer : 3

      thread id....................... 0x153A8000

      priority........................ 5

      state........................... B

   	Waiting on monitor................ java.lang.String@04811AD8/04811AE4

      Waiting for web work............. no

      Executing web or local EJB work.. yes

      Waiting for remote orb work...... no

      Stack: 

         test.locker.doGet(locker.java:40)

         javax.servlet.http.HttpServlet.service(HttpServlet.java:743)

         javax.servlet.http.HttpServlet.service(HttpServlet.java:856)

         com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:966)

        .......
        .......
        
 

 


分析线程状态

发生死锁时,线程 WebContainer : 3 处于程序中点[1]的位置(见源码注释第40行),因此它已经获得了 “lock1”的监控锁并且正在等待 “lock2” 的监控锁;与此同时,线程 WebContainer : 0正处于程序中点[2]的位置(见源码注释第51行) 因此它已经获得了 “lock2”的监控锁并且正在等待“lock1”的监控锁。 由于同一时间只能有一个servlet线程获得对静态对象lock1和lock2的监控锁,导致两者都处于无限的等待状态中,这正是我们的应用程序中最怕 见到的状况。 要解决这一问题需要开发人员修改应用程序,采用更加合理的逻辑结构,从而避免上述状态的发生。


总结

到现在为止,我们使用ISA的搜索和诊断功能,轻松找到了相关问题的各种文档,并在自我帮助模式中实现了问题的定位。随着 ISA功能的不断完善,相信它会为我们解决问题提供更多的便利。

<!-- CMA ID: 277410 --> <!-- Site ID: 10 --> <!-- XSLT stylesheet used to transform this file: dw-article-6.0-beta.xsl -->
分享到:
评论

相关推荐

    IBM之java性能诊断工具初探-IBM Support assitant的使用.docx

    ### IBM之Java性能诊断工具初探—IBM Support Assistant的使用 #### 一、引言 随着信息技术的飞速发展,企业级应用系统变得越来越复杂,性能优化成为了保证系统高效稳定运行的关键因素之一。Java作为跨平台的语言...

    ibm isaac 工作原理

    - **使用 IBM Support Assistant**: 用户可以通过 IBM Support Assistant 获取到及时的技术支持,解决使用过程中遇到的问题。 - **获取修复补丁**: IBM 定期发布修复补丁以解决已知问题,用户可以通过官方渠道获取...

    IBM_DUMP_wjfx

    - 分析工具:IBM可能提供了专门的dump分析工具,如DB2 Dump Analyzer或IBM Support Assistant,这些工具可以帮助解析dump文件,提取关键信息。 - 手动分析:对于开发人员来说,可能需要使用调试器(如IBM's ...

    WAS问题跟踪情况描述

    IBM提供了一个名为IBM Support Assistant的工具,可以帮助用户收集、组织和分析WAS的问题数据。它包括一个故障排除工作台,能够自动分析日志,推荐可能的解决方案。 五、检查服务器配置 WAS的配置错误也是常见问题...

    WebSphere Application Server V7 Administration and Configuration Guide

    - **系统管理工具**:介绍了多种用于管理和配置WebSphere Application Server的工具,如IBM Installation Manager、IBM Support Assistant以及基于Java Management Extensions (JMX)的管理接口。 #### 2. 站立...

    IBM WebSphere Application Server实用大全

    10. **故障排查**:学习日志分析技巧,使用TraceFacility进行问题诊断,以及如何利用IBM Support Assistant和其他工具进行故障排除。 11. **监控与管理工具**:熟悉Admin Console、wsadmin脚本和Tivoli Monitoring...

    IBM Thread and Monitor Dump Analyzer for Java

    7. **集成与扩展**:该工具可以与IBM其他性能分析工具如Tivoli Monitoring、IBM Support Assistant等集成,也可以通过API进行扩展,适应更复杂的企业级环境。 总的来说,IBM Thread and Monitor Dump Analyzer for ...

    经典:WebSphere应用服务器故障诊断上机实验

    3. **IBM Support Assistant 4.1 workbench 及其工具插件安装**:首先安装workbench,然后通过更新功能查找并安装适用于WebSphere Application Server v6.1 的工具插件; 4. **Problem Diagnostics Lab Toolkit 安装...

    IBM Thread and Monitor Dump Analyzer For Java (TMDA).zip

    8. **集成能力**:TMDA可能与其他IBM工具如IBM Rational Application Developer或IBM Support Assistant集成,提供更全面的开发和诊断环境。 `jca463.jar` 文件很可能是TMDA工具的一部分,包含必要的类库和资源,以...

    was 红宝书

    - **IBM支持助手**:介绍了如何使用IBM Support Assistant来提供技术支持和故障诊断。 ### WebSphere的安装和Profile管理 #### 1. WebSphere安装概述 - **IBM安装管理器总览**:介绍了IBM Installation Manager的...

    解读 WebSphere Application Server 跟踪文件

    IBM Support Assistant 的 fix pack 3.0.2 已经发布,极大地提高了用于查找和下载新产品插件和新工具的内置更新管理器功能的速度。 IBM Guided Activity Assistant 的新版本 V3.0.4 也刚刚发布,其中包含多个非常...

    WebSphere 7 Cluster

    - **运行IBM Support Assistant Lite**:指导如何运行IBM Support Assistant Lite以进行故障排除和支持。 #### 变更历史 文档最后还包含了一个变更历史记录部分,用于记录文档的所有修订版本及其更新日期和原因,...

    IFix 5.0 授权文件

    这可以通过检查IBM的支持网站、阅读已知问题列表或者通过IBM Support Assistant等工具来完成。 2. **查找和下载IFix**:一旦确定了所需的IFix,你可以从IBM官方支持网站上找到并下载。对于IFix 5.0,你需要确保它...

    WebSphere 7 Admin

    最后,文档提到了IBM Support Assistant V4,这是一个由IBM提供的故障诊断工具,它支持WebSphere管理员在遇到问题时进行快速的问题定位和解决。 文档的发布信息显示,这些知识适用于美国市场提供的产品和服务,且第...

    Websphere MQ v7 新特性.pdf

    - IBM 提供了一系列的支持工具和服务,如IBM Support Assistant,帮助用户更容易地获取产品信息并提交缺陷报告。 #### 五、结论 综上所述,Websphere MQ v7 不仅在性能调优方面提供了许多实用的方法,还在新功能上...

    webspher培训文档

    - **IBM Support Assistant (ISA)**:一个免费工具,用于收集、分析和诊断问题,提供IBM软件支持。 - **ISA工具**:包括日志分析工具、JVM垃圾回收分析工具和内存诊断工具等。 - **问题诊断流程**:涵盖问题预防...

    WebSphere快速入门.doc

    - 使用IBM Support Assistant或PDTool等工具进行问题诊断。 7. **集成开发环境(IDE)支持**: - 使用Eclipse或IntelliJ IDEA等IDE与WebSphere集成,实现应用的开发、测试和部署。 8. **持续集成和自动化**: -...

    查看WebSphere的javacore日志工具

    2. **打开Thread工具**:IBM提供了多种工具来解析javacore,例如Visual GC、IBM Support Assistant等。其中,"Thread"工具通常是指使用命令行工具,如`javacore.threads`解析器,或者在IBM Developer Kit中集成的...

Global site tag (gtag.js) - Google Analytics