- 浏览: 147599 次
- 性别:
- 来自: 云南
文章分类
最新评论
-
string2020:
我在安装的时候,一直提示:请输入标记为 Websphere A ...
Window下WebSphere Application Server 7的安装 -
yzqnow1234:
我升级的时候。报 Could not retrieve sy ...
Window下WebSphere Application Server 7的安装 -
jerome_wang:
jiehe ant
WAS 集群自动部署 -
小五儿:
您好!
我正在学习如何实现was集群自动部署,很多东西都 ...
WAS 集群自动部署 -
小五儿:
您好!
WAS 集群自动部署
转
使用 IBM Support Assistant 进行快速的问题诊断
简介: 本文介绍了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 -->
IBM Support Assistant (ISA)是IBM为客户提供支持的重要工具,它旨在通过更快地解决产品问题来帮助客户更有效地使用 IBM产品。作为一个IBM产品的用户,如果你经常为一些突如其来的问题感到无所适从或者已经厌倦了在浩如烟海的网络世界中查找问题解决方案的话,不妨尝 试一下ISA这个快捷方便的工具平台。对于那些需要IBM直接提供支持的用户,ISA也可以帮助你快速提交问题报告并且自动地收集相关的诊断数据,从而加 速解决问题的过程。
IBM Support Assistant 是一个公共的工作台,它所服务的对象包括多种 IBM 产品,用户可以通过选择安装相应产品的插件,来获得其对该产品的支持。到目前为止,各种资源和工具正在持续不断的整合到ISA中,ISA也逐渐成为对 IBM产品进行故障诊断和获取资源的统一入口点。
首先,从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,其界面如下图所示:
正如我们前面所提到的,刚刚装好的ISA仅仅是一个框架,并不能提供我们想要的功能,这一点和eclipse有些类似,用 户需要安装相应的产品插件和工具插件来扩展工作台的功能。这些工具将作为由 ISA管理的 Web 应用程序运行。关闭 ISA时,正在运行的工具也将关闭。在ISA中安装插件的过程很简单,您只需要在程序界面上方的菜单条里单击 “更新程序”,然后选择“新插件”,如下图所示,ISA当前所支持的所有的产品和工具都会显示在左边的插件列表里。这里我们选择“WebSphere ” -> “WebSphere Application Server V6.1” 及其工具插件“IBM Guided Activity Assistant”。此外,大多数IBM产品在进行故障诊断时都会用到“公共组件工具”里面的工具插件,因此也应当一起安装。安装完所有的组件,重新启 动ISA,可以在 “工具” -> “WebSphere Application Server V6.1” 下面查看我们刚刚装好的工具组件。
作为一个工具平台,ISA的主要用途是进行资源的整合和工具的集成,其功能主要包括如下五个部分:
安装好插件以后,单击“产品信息”->“WebSphere Application Server 6.1”,就会看到与WAS61产品相关的一系列产品信息。 包括产品主页、支持页面、新闻组和论坛、技能提高和故障诊断等几部分内容。客户可以从这里了解产品的基本信息,查看最新技术说明,获取各种技术文档和进行 在线培训等等。随着各种文档资源的整合更新,其包含的内容也在不断的变化。
ISA的“搜索”组件 提供了联合查询功能,用户可以快速地查询多个与支持相关的信息源,客户化的定制各种查询条件,比如文档的来源,产品的版本号等。在扩大搜索范围的同时进行 精确的查找,可以帮助用户更快更好地定位到所需的产品信息。
问题定位和故障分析是一项非常复杂的工作,通常需要借助各种分析工具。虽然IBM的支持网站中提供了许多常用的工具,但对于用户来说,自己去发现和收集这 些工具可能会有一定的困难。ISA的工具集成模块以插件的形式收集了许多常用的工具,不仅为用户管理和维护工具提供了平台,还为不同工具之间进行交互提供 了方便。在ISA中,不同的分析工具可以通过插件互相调用,从而处理一些更为复杂的分析过程,许多分析工具正是利用这一点来实现诊断过程自动化的。
当用户决定向 IBM 提交问题时,一个比较麻烦的工作是如何收集 IBM Support 所需的各种信息,包括系统的配置信息,日志文件和追踪文件等。之前我们通常根据MustGather 文档的要求收集各种信息,现在数据收集工具可以辅助您自动完成这一过程。
ISA帮助收集数据的方式有两种:一种是在本机上收集系统环境和产品数据。收集过程中,收集器会要求您提供本地的产品安装 目录,因此这种方式只适用于ISA与所支持的产品安装在同一台物理机器的情况;另一种方式是创建可移植的收集器。这种方式首先生成一个生成可执行jar文 件,然后将其传送到目标服务器上去执行相应的收集过程。
正如我们前面所提到的,用户可以通过添加所需的产品和工具插件来定制ISA,而“更新程序”不仅能帮助客户获得许多新的工 具,也能帮助维护现有工具的版本更新,这其中也包括ISA本身。用户可以通过“更新程序”中的“已安装的插件” 选项卡查看已经安装的工具插件,如下图所示。要卸载这些组件,首先选中相应的工具插件,然后点击“卸载”按钮。
接下来让我们看看如何使用ISA解决产品使用过程中所遇到的问题吧。这里我们使用一个死锁的案例,首先创建一个动态Web项目,在servlet locker中添加如 下代码 ,根据经验我们知道,两个互相嵌套的锁在并发条件下,发生死锁的机率很大。 这里我们只要用11个客户端对这个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的“搜索”组件可以透明地搜索多个知识库,并将结果组合到一起。用户不仅可以选择从哪些知识库中查找信 息,也可以指定文档的类型、产品的版本号等,这样搜索的范围就会更具针对性,更容易找到所我们需要的信息。
根据搜索结果,我们可以对可能发生的问题有一个大概的了解,但还是没有办法确定具体的问题,这时,我们还需要借助各种诊断 工具进行诊断。
诊断工具是以工具插件的形式添加到 IBM Support Assistant 中的,使用“更新程序”可以获得各种工具插件。前面我们已经安装了“WebSphere Application Server V6.1” 相关的产品插件和工具插件,在没找到一个具体的解决方案和分析工具以前,我们可以从IBM Guided Activity Assistant (Tech Preview)工具开始。IGAA是一个帮助用户进行问题诊断的工具,它可以通过向导的方式辅助我们进行故障诊断,并在适当的时候调用相应的分析工具来 帮助我们分析收集到的诊断数据。关于IGAA更详细的信息请参考权威支持专栏文章 IBM Guided Activity Assistant 介绍 。
首先我们打开IBM Guided Activity Assistant工具,其初始界面如下图所示:
在右上角的第一个向导页面中,选中“Troubleshoot a problem”,单击“Next”按钮,进入正式的诊断过程。每一个问题的诊断过程都会被保存为一个session。 这里,我们必须输入一个字符串作为session的名字。
接下来,在“Select an action”面板中选择“Perform advanced troubleshooting”进行高级故障诊断。进入下一页后,需要在问题分类列表中选择问题的类型,由于我们要诊断的问题更像是应用程序阻塞的问 题,所以选择“Troubleshoot Java hang problems”。当然,如果最终我们无法定位问题的话,系统还会提示我们重新选择问题的类型。
在“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. |
按照面板上的提示,我们每隔两分钟生成一次线程转储。这里我们用通过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中。
接下来的两步中,分别选择“I collected the diagnostic data files, help me analyze them”、“ThreadAnalyzer is installed, analyze the javacore files”,单击“next”
在“Analyze the Javacore Files Using ThreadAnalyzer”,单击"Launch ThreadAnalyzer Tool" ,启动线程分析工具分析我们刚刚添加的javacore 文件。分析结果如下图所示:
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 -->发表评论
-
Portlet deployment fails with 'A composition unit with name already exists'
2014-11-13 08:45 836http://www-01.ibm.com/support/ ... -
WAS 缓存
2011-09-09 14:15 1212在项目中经常遇见这 ... -
Window下WebSphere Application Server 7的安装
2011-08-17 23:05 4478Window 下 WebSphere App ... -
WebSphere6.1下DB2数据源配置
2011-08-03 09:43 1397转: http://julian ... -
websphere jvm参数修改
2011-07-19 10:50 2727eg: 如果修改jvm 中内存之类参数 (express 7. ... -
如何选择Rational测试工具
2011-03-29 16:13 923转 手把手教你如何选 ... -
使用 Log Analyzer 进行第 1 阶段问题确定
2011-03-08 17:15 1354转 使用 Log Analyzer 进行第 1 ... -
配置并使用 WebSphere Commerce 自动化数据收集器
2011-03-04 17:24 913转 WebSphere Commerce 自动化数据收集器已 ... -
WebSphere应用服务器内存泄漏探测与诊断工具选择最佳实践
2011-03-03 17:18 1134转 WebSphere应用服务器内存泄漏探测 ... -
WAS 集群自动部署
2011-02-12 10:51 2137<project name="wasant&q ... -
Unable to parse setupCmdLine: null\bin\setupCmdLine.bat 解决
2011-02-11 17:39 1456Unable to parse setupCmdLine: ... -
IBM WebSphere Business Events eXtreme Scale V7.0 for Windows
2011-01-28 09:19 1375The following table lists the d ... -
was 集群 启动节点错误
2011-01-17 09:58 3335错误信息: Error occurred during ... -
Websphere 入门基础 第一课 电子商务基础知识
2008-01-28 11:58 8071.1 电子商务理念 1.2 Inter ... -
Websphere 入门基础 第二课 电子商务应用框架
2008-01-28 12:36 7392.1 基本系 ... -
Websphere 入门基础 第三课 WebSphere Studio应用开发
2008-01-28 12:39 8493.1 Lotus ... -
Websphere 入门基础 第四课 Java Servlet技术
2008-01-28 12:40 8254.1 Servlet简介 ... -
Websphere 入门基础 第六课 WebSphere应用服务器
2008-01-28 12:53 10106.1 基本 ... -
Websphere 入门基础 第七课 WebSphere应用编程
2008-01-28 12:54 9427.1 数据库应用编程 ... -
Websphere 入门基础 第九课 IBM WebSphere Studio实验以及应用开发实验的设置指导
2008-01-28 12:55 792引言 第1部分 ...
相关推荐
IBM_Support接口服务器...........................................
IBM之java性能诊断工具初探-IBM Support assitant的使用.docx
正确配置相关参数 –日志文件。确保产品发生问题时相应的日志文件不会被覆盖。 –转储文件。确保发生问题时生成完整的专储文件。 日常数据收集 –WAS –操作系统 ...Must Gather 和IBM Support Assistant)
用于IBM Watson Assistant的Botium连接器 这是一个连接器,用于测试您的IBM Watson Assistant聊天。 您是否看过文章? 请注意,如果没有Botium的事先知识,您将无法正确使用该库! 这个怎么运作 ? Botium使用IBM...
It is shipped pre-configured with support for Oracle, Microsoft SQL Server, IBM DB2, MySQL, PostgreSQL, Amazon Redshift, SQLite, Sybase ASE and SQL Anywhere. The product also offers a full-featured ...
It is shipped pre-configured with support for Oracle, Microsoft SQL Server, IBM DB2, MySQL, PostgreSQL, Amazon Redshift, IBM Netezza, Teradata, Pivotal Greenplum, SQLite, SAP (Sybase) ASE and SQL ...
使用Watson Assistant插槽功能创建披萨订购聊天机器人 在此代码模式中,我们将使用Watson Assistant Slots功能... 所需的主要更改是您的应用程序将需要其他凭证才能访问托管Watson Assistant服务的IBM Cloud Pak for Da
第一章 Java语言概述.ppt 第二章 Java 编程基础.ppt 第三章 Java 核心 API的包.ppt 第四章 软件开发周期简介.ppt 第五章 Java语言的类和对象.ppt 第六章 面向对象程序设计基础.ppt 第七章 面向对象编程的高级概念....
watson-nao-robot:通过与IBM Watson Assistant服务和IBM Watson Studio集成使用机器人来回答对财务数据的查询
IBM V7000维护文档,有需要的可以下载 IBM官方服务文档内容...2) IBM 官方服务文档和微码下载地址: 下载地址:IBM System Support 门户网站(下载官方服务文档和微码) www.ibm.com/storage/support/storwize/v7000
带有发现功能的Watson Assistant(以前称为“对话”) 此应用程序演示了如何结合使用和服务,以使客户,员工或公众能够使用普通英语获得有关产品,服务或其他主题的广泛问题的答案。 首先,用户向Watson Assistant...
IBM_Cognos_Support_User_Guide
IBM Webpshere 8.5.0ND版自带的商业JDK,版本信息如下: java version "1.6.0" Java(TM) SE Runtime Environment (build pwa6460_26sr2ifix-20120419_02(SR2+IV19661)) IBM J9 VM (build 2.6, JRE 1.6.0 Windows ...
IBM-3D、IBM-iDataPlex、IBM-IO-Cards、IBM-Logos、IBM-Network-BNT、IBM-Network-B-Type、IBM-PDU、IBM-Racks、IBM-SAN、IBM-Server-BladeCenter、IBM-Server-FlexSystem、IBM-Server-Power、IBM-Server-Systemi、...
IBM红皮书IBM红皮书IBM红皮书IBM红皮书IBM红皮书IBM红皮书IBM红皮书
IAPX286.INC is used to generate the protected-mode 80286 opcodes which IBM MASM 2.0 did not support. FILL.ASM serves the same purpose as it does for the PC AT version 1 BIOS though in each case the ...
Java连接IBM WebSphere MQ 7处理队列信息所需jar包,从安装目录直接打的包。主要包括: /com.ibm.mq.commonservices.jar /com.ibm.mq.defaultconfig.jar /com.ibm.mq.fta.jar /com.ibm.mq.headers.jar /...
IBM5150说明图纸,(比说明书深一些)
A IBM MQ client is part of the product that can be installed on its own, on a separate machine from the base product and server. You can run an IBM MQ application on an IBM MQ client and it can ...
IBM SVC软件安装和配置指南-中文版