如何分析线程转储– IBM VM

本文是我们的线程转储分析系列的第4部分,它将为您概述什么是IBM VM的JVM线程转储以及您将找到的不同线程和数据点。 您将看到和学习​​到,IBM VM Thread Dump格式是不同的,但是提供了更多现成的故障排除数据。

在这一点上,您应该知道线程如何与Java EE容器交互以及什么是线程转储。 在深入探究分析模式之前,您还需要了解IBM VM Thread Dump格式,因为这是在IBM VM上使用IBM WAS时期望的典型Thread Dump数据。

IBM VM线程转储故障概览

为了使您更好地理解,请在下面的图表中向您展示IBM 1.6 VM线程转储及其常见数据点的可视分类:

您可以从HotSpot VM线程转储中找到其他多余的运行时数据。 请记住,您可能不需要检查所有这些数据点,但是您仍然需要了解根据问题情况可用的数据。 本文的其余部分将更详细地介绍每个线程转储部分。

#线程转储生成事件

第一部分为您提供有关如何生成此线程转储的详细信息。 IBM Thread Dump可以由“信号3”或“用户”生成,例如kill -3 <Java pid>,也可以由严重的JVM条件(例如OutOfMemoryError)自动生成。

0SECTION       TITLE subcomponent dump routineNULL           ===============================1TISIGINFO     Dump Event "user" (00004000) received 1TIDATETIME    Date:                 2012/03/12 at 20:52:131TIFILENAME    Javacore filename:    /apps/wl11g/domains/app/javacore.20120312.205205.1949928.0004.txt1TIREQFLAGS    Request Flags: 0x81 (exclusive+preempt)1TIPREPSTATE   Prep State: 0x4 (exclusive_vm_access)0SECTION       TITLE subcomponent dump routineNULL           ===============================1TISIGINFO     OUTOFMEMORY received 1TIDATETIME    Date:                 2012/06/01 at 09:52:121TIFILENAME    Javacore filename:    /usr/WebSphere/AppServer/javacore311328.1338524532.txt

#硬件和操作系统环境详细信息

下一部分为您提供了有关此IBM VM所运行的当前硬件和操作系统的一些详细信息:

0SECTION       GPINFO subcomponent dump routineNULL           ================================2XHOSLEVEL     OS Level         : AIX 5.32XHCPUS        Processors -3XHCPUARCH       Architecture   : ppc643XHNUMCPUS       How Many       : 63XHNUMASUP       NUMA is either not supported or has been disabled by user

#JRE详细信息和Java启动参数

本节非常有用,因为它为您提供了有关JRE主版本和补丁程序级别以及所有JVM启动参数的完整视图。

0SECTION       ENVINFO subcomponent dump routineNULL           =================================1CIJAVAVERSION JRE 1.6.0 IBM J9 2.4 AIX ppc64-64 build jvmap6460sr9-20101124_692951CIVMVERSION   VM build 20101124_0692951CIJITVERSION  JIT enabled, AOT enabled - r9_20101028_17488ifx21CIGCVERSION   GC - 20101027_AA1CIRUNNINGAS   Running as a standalone JVM…………………………………………………………………………………………

#用户和环境变量

本节为您提供了当前用户和环境变量的列表,例如文件描述符限制。

1CIUSERLIMITS  User Limits (in bytes except for NOFILE and NPROC)NULL           ------------------------------------------------------------------------NULL           type                            soft limit           hard limit2CIUSERLIMIT   RLIMIT_AS                        unlimited            unlimited2CIUSERLIMIT   RLIMIT_CORE                     1073741312            unlimited2CIUSERLIMIT   RLIMIT_CPU                       unlimited            unlimited2CIUSERLIMIT   RLIMIT_DATA                      unlimited            unlimited2CIUSERLIMIT   RLIMIT_FSIZE                     unlimited            unlimited2CIUSERLIMIT   RLIMIT_NOFILE                         4096                 40962CIUSERLIMIT   RLIMIT_RSS                        33554432            unlimited2CIUSERLIMIT   RLIMIT_STACK                      33554432           4294967296

#Java堆详细信息和GC历史记录

与HotSpot VM 1.6+相似,IBM VM线程转储还包含有关Java堆容量和利用率的信息,以及为Java进程的每个内存空间分配的内存段。

请记住,更深入的Java堆分析将需要您按照以下教程分析堆转储二进制快照。 http://javaeesupportpatterns.blogspot.com/2011/02/ibm-sdk-heap-dump-httpsession-footprint.html

最后,还介绍了垃圾回收过程的历史。

0SECTION       MEMINFO subcomponent dump routineNULL           =================================1STHEAPFREE    Bytes of Heap Space Free: 51104BC8 1STHEAPALLOC   Bytes of Heap Space Allocated: 800000001STSEGTYPE     Internal Memory…………………………………………………………………………………………1STSEGTYPE     Object Memory…………………………………………………………………………………………1STSEGTYPE     Class Memory…………………………………………………………………………………………1STSEGTYPE     JIT Code Cache…………………………………………………………………………………………1STSEGTYPE     JIT Data Cache…………………………………………………………………………………………STGCHTYPE     GC History  3STHSTTYPE     00:52:07:523048405 GMT j9mm.51 -   SystemGC end: 
newspace=466136480/483183616 oldspace=899251600/1610612736 loa=80530432/80530432 3STHSTTYPE     00:52:07:523046694 GMT j9mm.139 -   Reference count end: weak=40149 
soft=87504 phantom=33 threshold=17 maxThreshold=32 3STHSTTYPE     00:52:07:522164027 GMT j9mm.91 -   GlobalGC end: workstackoverflow=0 
overflowcount=0 weakrefs=40149 soft=87504 threshold=17 phantom=33 finalizers=4947 
newspace=466136480/483183616 oldspace=899251600/1610612736 loa=80530432/80530432 3STHSTTYPE     00:52:07:522152764 GMT j9mm.90 -   GlobalGC collect complete

#Java和JVM对象监视器的锁和死锁详细信息

此线程转储部分非常重要。 线程问题经常涉及线程由于特定对象监视器上的锁而在彼此之间等待,例如线程B等待获取线程A持有的对象监视器上的锁。死锁条件还可以不时触发;例如, 特别是对于非线程安全的实现。

IBM VM线程转储提供了一个单独的部分,您可以在其中分析每个线程持有的锁,包括等待链,例如,许多线程正在等待获取相同的对象监视器锁。

0SECTION       LOCKS subcomponent dump routineNULL           ===============================NULL           1LKPOOLINFO    Monitor pool info:2LKPOOLTOTAL     Current total number of monitors: 1034NULL           1LKMONPOOLDUMP Monitor Pool Dump (flat & inflated object-monitors):2LKMONINUSE      sys_mon_t:0x0000000115B53060 infl_mon_t: 0x0000000115B530A0:3LKMONOBJECT       java/util/Timer$TimerImpl@0x0700000000C92AA0/0x0700000000C92AB8: <unowned>3LKNOTIFYQ            Waiting to be notified:3LKWAITNOTIFY            "Thread-7" (0x0000000114CAB400)…………………………………………………………………………## Threads waiting chain2LKMONINUSE      sys_mon_t:0x000000012462FE00 infl_mon_t: 0x000000012462FE40:3LKMONOBJECT       com/inc/server/app/Request@0x07000000142ADF30/0x07000000142ADF48: owner "Thread-30" (0x000000012537F300), entry count 13LKNOTIFYQ            Waiting to be notified:3LKWAITNOTIFY            "Thread-26" (0x0000000125221F00)3LKWAITNOTIFY            "Thread-27" (0x0000000125252000)3LKWAITNOTIFY            "Thread-28" (0x000000012527B800)3LKWAITNOTIFY            "Thread-29" (0x00000001252DDA00)3LKWAITNOTIFY            "Thread-31" (0x0000000125386200)3LKWAITNOTIFY            "Thread-32" (0x0000000125423600)3LKWAITNOTIFY            "Thread-33" (0x000000012548C500)3LKWAITNOTIFY            "Thread-34" (0x00000001255D6000)3LKWAITNOTIFY            "Thread-35" (0x00000001255F7900)…………………………………………………………………………

#Java EE中间件,第三方和自定义应用程序线程

与HotSpot VM线程转储格式相似,此部分是线程转储的核心,通常您将在其中花费大部分分析时间。 找到的线程数将取决于您使用的中间件软件,第三方库(可能具有其自己的线程)和您的应用程序( 如果创建任何自定义线程,通常不是最佳实践 )。

在下面的示例中,以下线程处于BLOCK状态,这通常意味着它正在等待获取对象监视器上的锁。 您将需要在前面的部分中进行搜索,并确定哪个线程持有该锁,以便您可以查明根本原因。

3XMTHREADINFO      "[STUCK] ExecuteThread: '162' for queue: 'weblogic.kernel.Default 
(self-tuning)'" J9VMThread:0x000000013ACF0800, j9thread_t:0x000000013AC88B20, 
java/lang/Thread:0x070000001F945798, state:B, prio=13XMTHREADINFO1            (native thread ID:0x1AD0F3, native priority:0x1, native 
policy:UNKNOWN)3XMTHREADINFO3           Java callstack:4XESTACKTRACE                at org/springframework/jms/connection/SingleConnectionFactory.createConnection(SingleConnectionFactory.java:207(Compiled Code))4XESTACKTRACE                at org/springframework/jms/connection/SingleConnectionFactory.createQueueConnection(SingleConnectionFactory.java:222(Compiled Code))4XESTACKTRACE                at org/springframework/jms/core
/JmsTemplate102.createConnection(JmsTemplate102.java:169(Compiled Code))4XESTACKTRACE                at org/springframework/jms/core
/JmsTemplate.execute(JmsTemplate.java:418(Compiled Code))4XESTACKTRACE                at org/springframework/jms
/core/JmsTemplate.send(JmsTemplate.java:475(Compiled Code))4XESTACKTRACE                at org/springframework/jms
/core/JmsTemplate.send(JmsTemplate.java:467(Compiled Code))…………………………………………………………………………………………………………

#JVM类加载器摘要

最后,IBM VM Thread Dump的最后一部分为您提供了详细的类加载器摘要。 在处理与Class Loader相关的问题和泄漏时,这是非常关键的数据。 您将在运行的JVM中找到每个活动Class loader的已加载Class的数量和类型。

我建议您阅读以下案例研究,以获取有关如何在使用IBM VM时查明此类问题的根本原因的完整教程。
http://javaeesupportpatterns.blogspot.com/2011/04/class-loader-memory-leak-debugging.html

0SECTION       CLASSES subcomponent dump routineNULL           =================================1CLTEXTCLLOS        Classloader summaries1CLTEXTCLLSS               12345678: 1=primordial,2=extension,3=shareable
,4=middleware,5=system,6=trusted,7=application,8=delegating2CLTEXTCLLOADER            p---st-- Loader *System*(0x0700000000878898)3CLNMBRLOADEDLIB           Number of loaded libraries 63CLNMBRLOADEDCL                  Number of loaded classes 37212CLTEXTCLLOADER            -x--st-- Loader sun/misc
/Launcher$ExtClassLoader(0x0700000000AE8F40), Parent *none*(0x0000000000000000)3CLNMBRLOADEDLIB           Number of loaded libraries 03CLNMBRLOADEDCL                  Number of loaded classes 912CLTEXTCLLOADER            -----ta- Loader sun/misc/Launcher$AppClassLoader(0x07000000008786D0)
, Parent sun/misc/Launcher$ExtClassLoader(0x0700000000AE8F40)3CLNMBRLOADEDLIB           Number of loaded libraries 33CLNMBRLOADEDCL                  Number of loaded classes 15178……………………………………………………………………………………………

我希望本文有助于理解IBM VM线程转储的基本视图。 下一篇文章(第5部分)将通过一步一步的教程和我在过去十年中使用的技术为您提供有关如何分析JVM线程转储的教程。

参考: 如何分析线程转储–第4部分: Java EE支持模式和Java教程博客上的JCG合作伙伴 Pierre-Hugues Charbonneau提供的IBM VM 。


翻译自: https://www.javacodegeeks.com/2012/06/how-to-analyze-thread-dump-ibm-vm.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/372397.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VMware vSphere克隆虚拟机

参考资料&#xff1a;http://blog.csdn.net/shen_jz2012/article/details/484167711. 首先将你所要克隆的虚拟机关掉2. 选择你的ESXI服务器选中"配置"&#xff0c;然后选中存储器右键你的存储介质&#xff0c;比如我的是datastore1&#xff0c;选择“浏览数据存储”。…

将本地jar包倒入maven项目类库中

有两种方法&#xff1a;1.本地下载maven并配置环境变量&#xff0c;然后运行cmd控制台输入 mvn install:install-file -Dfile本地jar路径 -DgroupId -DartifactId -Dpackagingjar -Dversion -DgeneratePomtrue. 2.直接在pom.xml中对应的依赖下面添加<scope>system&l…

Spring和JSF集成:分页

处理大型数据集时&#xff0c;通常需要以分页格式显示数据。 分页是一个有趣的问题&#xff0c;因为它倾向于跨越应用程序的所有层&#xff0c;从视图层通过应用程序服务一直到对数据库的原始调用。 在获取分页数据时&#xff0c;有一些非常好的解决方案。 如果您使用的是JPA&a…

三重积分平均值_直角坐标系下的三重积分的几何可视化解释图解高等数学

12.4 直角坐标系下的三重积分三重积分假设 F(x,y,z) 为一个空间有界闭区域 D 上的函数. D 为下面立体椭球所占区域. 将空间区域分割成小长方块. 体积记为 ΔVk, 其长宽高分别为Δxk, Δyk, Δzk , 并有下列的求和式:观察下面动画, 当空间不断分割, 每个小方块的体积 ΔVk 不断变…

最短网络Agri-Net

【例4-11】、最短网络Agri-Net【问题描述】农民约翰被选为他们镇的镇长&#xff01;他其中一个竞选承诺就是在镇上建立起互联网&#xff0c;并连接到所有的农场。当然&#xff0c;他需要你的帮助。约翰已经给他的农场安排了一条高速的网络线路&#xff0c;他想把这条线路共享给…

cors-synchronous-requests-not-working-in-firefox

http://stackoverflow.com/questions/16668386/cors-synchronous-requests-not-working-in-firefox转载于:https://www.cnblogs.com/diyunpeng/p/5829594.html

硬盘接口协议

硬盘是电脑主要的存储媒介之一&#xff0c;由一个或者多个铝制或者玻璃制的碟片组成。碟片外覆盖有铁磁性材料。硬盘有固态硬盘&#xff08;SSD 盘&#xff0c;新式硬盘&#xff09;、机械硬盘&#xff08;HDD 传统硬盘&#xff09;、混合硬盘&#xff08;HHD 一块基于传统机械…

图的表示

Python 数据结构与算法——图&#xff08;Graph&#xff09; 1. 邻接矩阵 vs 邻接表&#xff08;压缩的邻接矩阵&#xff09; 邻接矩阵的缺点是&#xff1a; 空间占用与结点数的平方成正比&#xff0c;可能带来很大的浪费&#xff1b;邻接矩阵不容易增加新的结点&#xff0c;不…

在Java Web应用程序中阻止CSRF

跨站点请求伪造攻击&#xff08;CSRF&#xff09;在Web应用程序中非常常见&#xff0c;如果允许&#xff0c;可能会造成重大危害。 如果您从未听说过CSRF&#xff0c;建议您查看有关它的OWASP页面 。 幸运的是&#xff0c;阻止CSRF攻击非常简单&#xff0c;我将向您展示它们的工…

windows命令行无法启动redis_windows系统安装redis

1、下载最新redis https://github.com/MicrosoftArchive/redis/releases我选择下载msi版本的2.双击下载包安装3.设置redis环境变量&#xff0c;把redis路径配置到系统变量path值中4启动redis&#xff0c;cmd进入安装好redis文件夹 输入&#xff1a;如果redis启动出错Creating S…

SQL Server 筛选时间区间

一、SQL直接判断 select * from login where pass>2013/03/25 and pass < 2017/04/24 二、DATEDIFF() 函数返回两个日期之间的时间 --语法 DATEDIFF(datepart,startdate,enddate) --开始时间 startdate --结束时间 enddate --datepart datepart缩写年yy, yyyy季度qq, …

OpenShift Express Web管理控制台:入门

本周&#xff0c; 最新版本的OpenShift为已经很棒的PaaS Cloud提供商带来了两个非常好的功能。 首先&#xff0c;JBoss AS已从7.0升级到7.1&#xff0c;并且所有新的Express Web Management Console已作为预览发布。 在本文中&#xff0c;我们将研究如何使用此新控制台&#xf…

Linux-IP地址后边加个/8(16,24,32)是什么意思?

是掩码的位数 A类IP地址的默认子网掩码为255.0.0.0&#xff08;由于255相当于二进制的8位1&#xff0c;所以也缩写成“/8”&#xff0c;表示网络号占了8位&#xff09;; B类的为255.255.0.0&#xff08;/16&#xff09;; C类的为255.255.255.0(/24) /30就是255…

女士细线毛衣起多少针_从起针到缝合,教你织毛衣的各种要点(详细教程)

新手学织毛衣看过来&#xff0c;7大编织要点帮你解决织好一件毛衣的基础问题&#xff0c;满满的干货&#xff0c;每点都值得学习!一、起针二、棒针符号三、如何织小样四、依据小样推算针数收挂肩的推算五、斜肩针数的推算开前、后领的位置与针数六、袖山的推算七、如何上袖子一…

关于OPENSSL的使用

#import <Foundation/Foundation.h> interface RSAEncryptor : NSObject /** * 加密方法 * * param str 需要加密的字符串 * param path .der格式的公钥文件路径 */ (NSString *)encryptString:(NSString *)str publicKeyWithContentsOfFile:(NSString *)path; /*…

Jelastic Java云端平台

谁在Jelastic背后&#xff1f; 那是我的第一个问题&#xff0c;因此我浏览了Jelastic网站。 回答此问题的最佳方法是查看“ Jelastic团队”部分。 创始人&#xff0c;顾问&#xff0c;特殊合作伙伴构成了一支真正的专业团队。 作为特殊的合作伙伴&#xff0c;您会发现MySQL&am…

请先设置tkk_搅拌站水泥罐仓顶除尘器设置及调整

搅拌站水泥罐仓顶除尘器采用脉冲喷吹清灰系统&#xff0c;除尘器本体结构&#xff0c;采用标准模板焊接&#xff0c;整体结构&#xff0c;强度牢靠&#xff0c;组装维修方便&#xff0c;脉冲清灰采用时序控制器MCY系列 控制阀门KEK系列&#xff0c;喷吹清灰频率及喷吹间隔可手…

Eclipse Meaven Spring SpringMVC Mybaits整合

本示例是在&#xff1a;Ubuntu15上实现的&#xff1b;Windows上安装Maven将不太相同。 Maven Install Run command sudo apt-get install maven, to install the latest Apache Maven.Run command mvn -version to verify your installation.Where is Maven installed? The co…

抽象类和抽象函数

1.抽象函数的语法特征 什么是抽象函数&#xff1f; 只有函数的定义,没有函数体的函数被称为抽象函数&#xff1b; Abstract void fun(); 如果一个类拥有一个或一个以上的抽象函数&#xff0c;那么这个类必须被定义为抽象类 2.抽象类的语法特征 使用abstract定义的类被称之…

并发–执行程序和Spring集成

基于线程池/执行器的实现 比原始线程版本更好的方法是基于线程池的线程池&#xff0c;其中基于运行任务的系统定义了适当的线程池大小– CPU数量/&#xff08;任务的1-Blocking Coefficient&#xff09;。 Venkat Subramaniams书中有更多详细信息&#xff1a; 首先&#xff0c…