jmc线程转储_如何分析线程转储– IBM VM
jmc線程轉(zhuǎn)儲
本文是我們的線程轉(zhuǎn)儲分析系列的第4部分,它將為您提供什么是IBM VM的JVM線程轉(zhuǎn)儲以及您將找到的不同線程和數(shù)據(jù)點的概述。 您將看到和學(xué)習(xí)??到,IBM VM Thread Dump格式是不同的,但是提供了更多現(xiàn)成的故障排除數(shù)據(jù)。在這一點上,您應(yīng)該知道線程如何與Java EE容器交互以及什么是線程轉(zhuǎn)儲。 在深入探究分析模式之前,您還需要了解IBM VM Thread Dump格式,因為這是在IBM VM上使用IBM WAS時期望的典型Thread Dump數(shù)據(jù)。
IBM VM線程轉(zhuǎn)儲故障概述
為了使您更好地理解,請在下面的圖表中向您顯示IBM 1.6 VM線程轉(zhuǎn)儲及其常見數(shù)據(jù)點的可視分類:
您可以從HotSpot VM線程轉(zhuǎn)儲中找到其他多余的運行時數(shù)據(jù)。 請記住,您可能不需要檢查所有這些數(shù)據(jù)點,但是您仍然需要了解根據(jù)問題情況可用的數(shù)據(jù)。 本文的其余部分將更詳細(xì)地介紹每個線程轉(zhuǎn)儲部分。
#線程轉(zhuǎn)儲生成事件
第一部分為您提供有關(guān)如何生成此線程轉(zhuǎn)儲的詳細(xì)信息。 IBM Thread Dump可以由“信號3”或“用戶”生成,例如kill -3 <Java pid>,也可以由嚴(yán)重的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#硬件和操作系統(tǒng)環(huán)境詳細(xì)信息
下一部分為您提供了有關(guān)此IBM VM所運行的當(dāng)前硬件和操作系統(tǒng)的一些詳細(xì)信息:
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詳細(xì)信息和Java啟動參數(shù)
本節(jié)非常有用,因為它為您提供了有關(guān)JRE主版本和補丁程序級別以及所有JVM啟動參數(shù)的完整視圖。
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…………………………………………………………………………………………#用戶和環(huán)境變量
本節(jié)為您提供了當(dāng)前用戶和環(huán)境變量的列表,例如文件描述符限制。
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堆詳細(xì)信息和GC歷史記錄
與HotSpot VM 1.6+相似,IBM VM線程轉(zhuǎn)儲還包含有關(guān)Java堆容量和利用率的信息,以及為Java進(jìn)程的每個內(nèi)存空間分配的內(nèi)存段。
請記住,更深入的Java Heap分析將需要您按照以下教程分析Heap Dump二進(jìn)制快照。 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對象監(jiān)視器的鎖和死鎖詳細(xì)信息
此線程轉(zhuǎn)儲部分非常重要。 線程問題經(jīng)常涉及線程由于特定對象監(jiān)視器上的鎖而在彼此之間等待,例如線程B等待獲取線程A持有的對象監(jiān)視器上的鎖。死鎖條件還可以不時觸發(fā);例如, 特別是對于非線程安全的實現(xiàn)。
IBM VM線程轉(zhuǎn)儲提供了一個單獨的部分,您可以在其中分析每個線程持有的鎖,包括等待鏈,例如,許多線程正在等待獲取同一對象監(jiān)視器鎖。
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中間件,第三方和自定義應(yīng)用程序線程
與HotSpot VM線程轉(zhuǎn)儲格式相似,此部分是線程轉(zhuǎn)儲的核心,通常您將在其中花費大部分分析時間。 找到的線程數(shù)將取決于您使用的中間件軟件,第三方庫(可能具有自己的線程)和您的應(yīng)用程序( 如果創(chuàng)建任何自定義線程,通常不是最佳實踐 )。
在下面的示例中,以下線程處于BLOCK狀態(tài),這通常意味著它正在等待獲取對象監(jiān)視器上的鎖。 您將需要在前面的部分中進(jìn)行搜索,并確定哪個線程持有該鎖,以便您可以查明根本原因。
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的最后一部分為您提供了詳細(xì)的類加載器摘要。 在處理與Class Loader相關(guān)的問題和泄漏時,這是非常關(guān)鍵的數(shù)據(jù)。 您將在運行的JVM中找到每個活動Class loader的已加載Class的數(shù)量和類型。
我建議您閱讀以下案例研究,以獲取有關(guān)如何在使用IBM VM時查明此類問題的根本原因的完整教程。
http://javaeesupportpatterns.blogspot.com/2011/04/class-loader-memory-leak-debugging.html
我希望本文有助于理解IBM VM線程轉(zhuǎn)儲的基本視圖。 下一篇文章(第5部分)將通過一步一步的教程和我在過去十年中使用的技術(shù)為您提供有關(guān)如何分析JVM線程轉(zhuǎn)儲的教程。
參考: 如何分析線程轉(zhuǎn)儲–第4部分: Java EE支持模式和Java教程博客上的JCG合作伙伴 Pierre-Hugues Charbonneau提供的IBM VM 。
翻譯自: https://www.javacodegeeks.com/2012/06/how-to-analyze-thread-dump-ibm-vm.html
jmc線程轉(zhuǎn)儲
總結(jié)
以上是生活随笔為你收集整理的jmc线程转储_如何分析线程转储– IBM VM的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 移动级桌面级显卡对比分析
- 下一篇: 哪些电脑店可以修显卡(修显卡的店)