首页 > 其他分享 >IBM jca 工具的学习与整理

IBM jca 工具的学习与整理

时间:2024-01-28 21:06:17浏览次数:27  
标签:java HashMap dump excel jca 整理 now IBM

IBM jca 工具的学习与整理


背景

发现自己最早看到IBM这个工具的时间是 2022年9月份.
但是一直没有进行过仔细的学习与论证. 

本周出现了一个问题. 虽然通过gclog明显看出来是一个oom
然后内存对象里面排第一的是 hashnode 相关内容
猜测出可能是excel导入/导出相关的内容

但是自己并没有快速的从jstack 里面找出来具体的线程
还是通过 mat 分析dump文件才找到的具体功能的操作.

感觉自己对jstack的分析一直比较怵头
感觉他的文档结果不好看, 自己的确也有点密集恐惧症,
对这种文档的分析总是不得要领. 
所以想经过这次事件,还是多学习一下jstack的分析
寄希望于dump 文件太大了. 速度太慢. 
有时候黄花菜都凉了.

工具下载

https://www.ibm.com/support/pages/ibm-thread-and-monitor-dump-analyzer-java-tmda
文件其实比较小. 
最新版本是 4.6.16.
文件名是:
jca4616.jar

快捷方式

可以将文件放到一个目录下面, 然后修改文件名
jca.jar
添加一个 bat 脚本

@echo off
java -jar jca.jar

双击就可以使用这个工具了.

抓取信息

pid=`ps -ef |grep java |grep $mainclassname|grep -v grep |awk '{print $2}'`
now=`date +%Y%m%d%H%M`
jcmd $pid VM.uptime >>trace_$now.log \;
jcmd $pid VM.flags >>trace_$now.log \;
jcmd $pid Thread.print >>trace_$now.log \;
jcmd $pid GC.class_histogram -all >>trace_$now.log \;
jcmd $pid GC.heap_info >>trace_$now.log \;

分析与查看

IBM其实是J9 jvm的开发商
他的mat和jca工具都非常不错.
mat可以分析dump文件
jca可以快速的分析 jstack等信息. 也可以分析 dump 文件. 

jca最重要的几项工作主要如下

总要功能界面

IBM jca 工具的学习与整理_堆栈


thread status analysis

  • 能够对 thread的状态进行分组. 界面化比较好看.

Methad analysis

  • 可以对主要的方法进行pie图的区分

Thread Detail

  • 查看线程的具体信息, 可以排序. 比看txt优雅很多
  • 注意线程名前面有一个console标签的说明有等待

Monitor Detail

  • 可以查看拥有锁以及被锁的线程明细信息

异常日志分析

其实 内存的histogram 信息能够看到一个很明显的增多的情况:
 num     #instances         #bytes  class name
----------------------------------------------
   1:     277303736     8873719552  java.util.HashMap$Node
   2:       2752253     1928937296  [Ljava.util.HashMap$Node;

发现极度怀疑是 hashmap 的一些处理导致问题. 
然后分析jstack的堆栈, 可以看到一个明显的进程信息:

"http-nio-5200-exec-134" #131057 daemon prio=5 os_prio=0 tid=0x00007f5a343e0000 nid=0x12fac7 runnable [0x00007f58257d2000]
   java.lang.Thread.State: RUNNABLE
	at java.util.HashMap.newNode(HashMap.java:1750)
	at java.util.HashMap.putVal(HashMap.java:631)
	at java.util.HashMap.put(HashMap.java:612)

所以极度怀疑是这个线程出现的问题 
然后可以通过堆栈的进一步分析, 去查看自己产品的堆栈信息来判断是哪个功能有问题. 

然后有条件的分析一下dump文件, 说补丁能够看到具体的功能. 有概率看到具体的文件.

excel的处理

其实处理excel 跟处理证券类似, 都有"胖手指" 的现象. 
本次事故的核心原因就是 excel 有一个快速的复制功能. 

在复制某一个单元格之后, 单机任意一栏的标题栏. ctrl + v 就可以将整个excel的当前栏替换掉

因为 2007版本的excel 已经完善了 excel的最大列数和行数
2003版最大行数是65536行,最大列数是256列。 
Excel2007及以后的版本最大行数是1048576行,最大列数是16384列

如果1M行数全部有数据进入 内存里面就会消耗非常多的内存信息.
所以还是应该提前使用poi的方式来检查行数和列数.  避免出现此类问题.

使用的内存量计算

通过mat 分析dump文件可以看到
空行excel 大概占用 13KB的内存. 
如果1M的excel 文件大概需要 13G的内存.
如果老年代大于20GB. 留下 7G左右给常规使用的环境
理论上可以支撑住这样的有异常的文件 只是大家都可能会卡一些. 

所以有时候 可以通过技术手段解决问题, 有时候也可以通过钱来解决问题.

IBM jca 工具的学习与整理_jar_02



标签:java,HashMap,dump,excel,jca,整理,now,IBM
From: https://blog.51cto.com/u_11529070/9454177

相关文章

  • 最全的国内chatGPT大模型企业及产品整理
    最全的国内chatGPT大模型企业及产品整理自从去年11月30日openAI发布chatGPT以来,chatGPT引爆了新一轮科技革命。最近很多年都没有哪一项科技进步如chatGPT这般吸引全球的目光。除了媒体的大肆报道,国内外各个科技公司、科研机构、高等院校都在跟进,不到半年时间,就跑出了非常多的......
  • Kubernetes 学习整理(四)
    ScaletheappScalingwillincreasethenumberofPodstothenewdesiredstate.Pre-config:exposetheapppubliclykubectlgetservicesNAMETYPECLUSTER-IPEXTERNAL-IPPORT(S)AGEkubernetesClusterIP10.43.0.1<none>......
  • Kubernetes 学习整理(三)
    k8skubelet(Kubernetesnodeagent):是运行在每个节点上的代理,负责管理该节点上的容器,它从KubernetesMaster接收Pod的描述,并确保节点上运行的容器与描述一致。不能跨节点。kubelet的主要作用是保证节点上的容器按照期望的状态运行。它监控容器的健康状态,执行生命周期......
  • 信息安全管理与评估整理-ipv6无状态地址自动配置
    无状态地址自动配置实验一1.接口下配置ipv6地址,关闭ra消息抑制,没有建立dhcp地址池只在接口下面将o位置一实验过程截图Wriershark抓包数据前缀信息A,O比特数据交换机配置Pc获取到的地址实验二2.接口下配置ipv6地址,关闭ra消息抑制,接口下未再进行其他配置Wireshark抓......
  • 信息安全管理与评估整理--ipv6有状态自动配置
    Ipv6地址池自动配置有状态以下是关闭ra消息抑制,配置前缀地址池方式,有状态自动配置l不自动获取网关,通过修改网卡—高级设置添加默认网关方式建立本地地址池调用l接口下调用通过wireshark抓包,需要将消息开启才能看到M,O为位比特前缀地址池信息A位与O位含义A比特位:f......
  • [整理参考] CMD/DOS下运算符号的作用
    因关于DOS符号的总结很少,所以根据[1],经过几次整理之后,写了下面这个《CMD/DOS符号参考》,推荐新手好好看看,老手温习。标题:[整理参考]CMD/DOS下符号的作用参考作者:lxmxn[at]bbs.cn-dos.net时间:2007-5-27邮箱:lxmxn520[at]163.com说明:1、转帖请注明原帖出处属于中国DOS联盟(www.cn-do......
  • libm.so.6: version `GLIBC_2.29' not found
    基础GLIBC是Linux系统中最底层的API,最主要的功能是对系统调用进行了封装,几乎其他任何的运行库都要依赖glibc。因此,切勿擅自通过编译的方式升级,容易将系统搞坏。升级glibc主要是对/lib库中的libc.so.6,libm.so.6,libpthread.so.0和librt.so.1这四个文件的修改[root@taishan-atlas......
  • IBM java的分析工具(ga和ha)学习和整理
    IBMjava的分析工具(ga和ha)学习和整理背景前几天学习了整理了jca工具今天继续学习一下ga工具ga工具主要是分析gclog相关.可以很直观的进行gclog的分析和展示.除了mat之外还有一个比较轻量级的内存dump分析工具ha.想着一起学习和分析一下.ga工具的相关学习下载......
  • IBM jca 工具的学习与整理
    IBMjca工具的学习与整理背景发现自己最早看到IBM这个工具的时间是2022年9月份.但是一直没有进行过仔细的学习与论证.本周出现了一个问题.虽然通过gclog明显看出来是一个oom然后内存对象里面排第一的是hashnode相关内容猜测出可能是excel导入/导出相关的内容但是......
  • Linux开发相关命令整理
    1.反转shell2.ldd3.objdump4.ldconfig5.telnet6.nc7.netstat8.ss9.tcpdump1.反转shell攻击者主机执行:nc-nlvp<port>被攻击者执行:bash-i>&/dev/tcp/<ip>/<port>0>&1也可以用于把局域网下主机终端暴露给公网下,这在特定场景下比较方便2.ldd用于查......