如何分析線程轉儲– 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.pswp.cn/news/372397.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/372397.shtml
英文地址,請注明出處:http://en.pswp.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…