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最重要的几项工作主要如下

总要功能界面


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 工具的学习与整理的更多相关文章

  1. Git学习资料整理

    Git作为一个优秀的版本控制系统,是我们开发人员必须要学会使用的一个工具,接触git一年多以来,也看了不少相关资料,今天把我所看过的一些学习资源整理一下. Git入门当然首推廖雪峰廖老师的教程:Git ...

  2. 超全PHP学习资源整理:入门到进阶系列

    PHP是少数几门在语言层面饱受诟病,但在实际开发和应用上却又让人无法撒手的语言之一.就好比路边摊小吃,一遍骂人家不卫生,一遍却又说:真香.所谓接地气,不外如此,大道理不说,PHP光是轮子多.市场占有率 ...

  3. 第二弹:超全Python学习资源整理(进阶系列)

    造一个草原要一株三叶草加一只蜜蜂.一株三叶草,一只蜂,再加一个梦.要是蜜蜂少,光靠梦也行. - 狄金森 "成为编程大牛要一门好语言加一点点天分.一门好语言,一点点天分,再加一份坚持.要是天分 ...

  4. NPM 学习笔记整理

    NPM 学习笔记整理 阅读 550,2017年06月04日 发布,来源:blog.ihoey.com 什么是 NPM npm 之于 Node ,就像 pip 之于 Python , gem 之于 Ru ...

  5. Three入门学习笔记整理

    一.官方网站:https://threejs.org 二.关于Three.js 三.开始 四.实例 基本结构 结果 五.概念 坐标系 场景 相机 灯光 3D模型 六.简单动画 七.交互控制 结束 # ...

  6. UWP学习目录整理

    UWP学习目录整理 0x00 可以忽略的废话 10月6号靠着半听半猜和文字直播的补充看完了微软的秋季新品发布会,信仰充值成功,对UWP的开发十分感兴趣,打算后面找时间学习一下.谁想到学习的欲望越来越强 ...

  7. iOS 开发学习资料整理(持续更新)

      “如果说我看得比别人远些,那是因为我站在巨人们的肩膀上.” ---牛顿   iOS及Mac开源项目和学习资料[超级全面] http://www.kancloud.cn/digest/ios-mac ...

  8. DBN 入门学习资料整理

    建议按序阅读 1.Deep Learning 概述 Deep Learning(深度学习)学习笔记整理系列 : http://blog.csdn.net/zouxy09/article/details ...

  9. python学习笔记整理——字典

    python学习笔记整理 数据结构--字典 无序的 {键:值} 对集合 用于查询的方法 len(d) Return the number of items in the dictionary d. 返 ...

  10. SVN版本控制工具使用学习

    SVN版本控制工具使用学习 Subversion是优秀的版本控制工具. 1.下载和搭建SVN服务器 http://subversion.apache.org/packages.html 类型有5种,推 ...

随机推荐

  1. 终于肝完了!全网最全、最详细、最全面的 Hadoop大数据学习教程( 2023最新版 )

    大家好,我是民工哥! 前面给大家介绍了:关系型数据库 MySQL . NoSQL 数据库 Redis . MongoDB .搜索引擎 ElasticSearch 等知识体系学习的文章. 在当今这样的就 ...

  2. 【scikit-learn基础】--『监督学习』之 贝叶斯分类

    贝叶斯分类是一种统计学分类方法,基于贝叶斯定理,对给定的数据集进行分类.它的历史可以追溯到18世纪,当时英国统计学家托马斯·贝叶斯发展了贝叶斯定理,这个定理为统计决策提供了理论基础. 不过,贝叶斯分类 ...

  3. 主控FC1179 U盘量产修复

    当我们的U盘出现如下情况的话,可以做为参考修复 第一步:可以用Chip Genius工具,查看U盘主控(可得知主控厂商:一芯 ,主控型号:FC1179). 第二步:下载主控相对应的量产工具(笔者已经上 ...

  4. react路由权限v6

    方法 1.模拟vue的路由拦截(未尝试) 2.进入页面拦截(模拟后台管理系统) route v6常用属性 页面梳理 路由表 公共路由 权限路由 layout(+权限判定) 登录 页面布局 路由表 点击 ...

  5. 使用 C# 在Word中插入图表

    Word中的图表功能将数据可视化地呈现在文档中.这为展示数据和进行数据分析提供了一种方便且易于使用的工具,使作者能够以直观的方式传达信息.要通过C#代码来实现在Word中绘制图表,可以借助 Spire ...

  6. 全域Serverless+AI,华为云加速大模型应用开发

    日前,华为全联接大会2023在上海召开.华为云CTO张宇昕在大会上发布了基于Serverless技术的大模型应用开发框架,框架以面向AI领域全新升级的FunctionGraph 3.0为核心,将Baa ...

  7. 实战案例丨代码优化:如何去除context中的warning?

    在一个java语言群里面,有人抛了这么一段代码出来,问题是出现了下下图中的warning,问有什么好的方法消除 这种强转都是因为类型链条断掉了,写入的时候擦除了类型,读出来的时候也就只能强转了,那个i ...

  8. 共赴元宇宙新纪元,华为云VR开发应用大赛总决赛倒计时7天!

    摘要:"第三届华为云VR开发应用暨沈阳元宇宙开发应用大赛"总决赛即将于2月13日在沈阳市和平区揭幕. 由沈阳市和平区人民政府.华为技术有限公司共同主办的"第三届华为云VR ...

  9. 数字化转型鸿沟如何消除?ROMA Connect融合集成,联接企业应用现在与未来

    摘要:ROMA Connect平台正在以"联接和融合"的方式,重塑传统企业上云的路径--"条条大路"通向云端. 本文分享自华为云社区<[大厂内参]第13期 ...

  10. 讲透学烂二叉树(五):分支平衡—AVL树与红黑树伸展树自平衡

    简叙二叉树 二叉树的最大优点的就是查找效率高,在二叉排序树中查找一个结点的平均时间复杂度是O(log₂N): 在<讲透学烂二叉树(二):树与二叉/搜索/平衡等树的概念与特征>提到 二叉排序 ...