Linux无头模式使用mat分析dump的方法
摘要
mat可以很好的进行jvm的内存dump的分析.
但是大部分服务器是没有GUI界面的.
而且就算是有GUI界面也很难直接使用.
但是随着jvm堆区越来越大. WindowsPC机器已经很难进行分析.
所以基于此. 想着能够使用Linux进行简要分析
然后使用Windows进行打开.
根据网上查到的资料进行了简单的测试验证. 准备进行一次处理.
学习来源
https://www.cnblogs.com/hellxz/p/use_mat_linux_command_line_generate_reports.html
感谢原作者
为了方便使用, 我这边进行了一下简单处理, 提高了一定的效率.
下载mat的介质
注意下载地址为:
https://www.eclipse.org/mat/downloads.php
需要注意,进入下载界面可以选择大陆的大学mirro镜像站点速度会快很多.
需要注意, 最新的1.13 的版本需要使用 jdk17以上的版本
建议可以下载最新的JDK进行处理. 我这边使用的OpenJDK19.0.1
自行下载tar包或者是zip包即可.
解压缩mat.并且手工添加jdk
解压缩好mat的文件后
建议将jdk解压缩到mat的目录下面.
这种方式最简单, 不需要使用linux或者是windows的环境变量内的java程序
能够方便快捷的进行部署.
比如linux的目录为:
需要注意:
1. dumpanalyze 是我手工编写的命令行脚本
2. jdk-19.0.1 是Openjdk的目录.
.
├── configuration
├── dumpanalyze
├── epl-2.0.html
├── features
├── jdk-19.0.1
├── MemoryAnalyzer
├── MemoryAnalyzer.ini
├── notice.html
├── p2
├── ParseHeapDump.sh
├── plugins
└── workspace
修改配置文件, 注意这一步需要根据linux机器的配置
比如我这边的文件修改为:
需要注意:
1. -vm 指定java的二进制地址,便于区分版本,jdk添加进来可以节约很多工作量.
2. -Xmx -Xms 注意不能大于操作系统剩余内存的 80%
3. -DhprofStrictnessWarning=true 出现错误时可以忽略.
4. 注意务必不能在正在生产的服务器上面进行此动作.
vim MemoryAnalyzer.ini
-vm
./jdk-19.0.1/bin/java
-startup
plugins/org.eclipse.equinox.launcher_1.6.400.v20210924-0641.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.gtk.linux.x86_64_1.2.400.v20211117-0650
-vmargs
-Xmx30G
-Xms30G
-DhprofStrictnessWarning=true
编写分析脚本
需要注意:
1. 我这边仅是简单read -p 读入文件路径, 最简单的进行处理.
2. 注意解析完成之后 会在dump同级目录生成很多index文件,以及三个zip文件
3. zip文件可以解压缩后通过浏览器打开. index文件可以使用windows的同版本mat进行打开
4. 理论上分析过了一遍的dump, 统计目录有index目录,再次就不需要分析,仅需要打开就可以了.
5. 因为比较晚上, 改天白天我验证一下, 然后提醒我删掉 第五条.
vim dumpanalyze
echo "请输入完整的 dump路径名进行分析: "
read -p "文件全路径+文件名: " dumpname
./ParseHeapDump.sh \
$dumpname \
org.eclipse.mat.api:suspects \
org.eclipse.mat.api:overview \
org.eclipse.mat.api:top_components
Windows版本的处理
Windows版本很类似 只需要修改配置文件就可以.
编辑 MemoryAnalyzer.ini
注意 -vm 使用当前路径下的jdk就可以 简单便捷.
-vm
jdk-19.0.1/bin/java
-startup
plugins/org.eclipse.equinox.launcher_1.6.400.v20210924-0641.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.2.400.v20211117-0650
-vmargs
-Xmx4G
其他优化
mat 有一个batch mode 模式
计划简单学习一下 用来完善这个文档.
需要完善的点
1. compare模式.
2. 大内存dump的验证
解析过的效果为:
[root@openeuler2203 ~]# ll
总用量 652M
-rw-r--r-- 1 root root 5.5M 11月 22 00:25 zhaobsh.a2s.index
-rw-r--r-- 1 root root 18M 11月 22 00:25 zhaobsh.domIn.index
-rw-r--r-- 1 root root 43M 11月 22 00:25 zhaobsh.domOut.index
-rw------- 1 root root 344M 11月 22 00:24 zhaobsh.dump
-rw-r--r-- 1 root root 142K 11月 22 00:25 zhaobsh.i2sv2.index
-rw-r--r-- 1 root root 46M 11月 22 00:25 zhaobsh.idx.index
-rw-r--r-- 1 root root 52M 11月 22 00:25 zhaobsh.inbound.index
-rw-r--r-- 1 root root 4.4M 11月 22 00:25 zhaobsh.index
-rw-r--r-- 1 root root 128K 11月 22 00:25 zhaobsh_Leak_Suspects.zip
-rw-r--r-- 1 root root 18M 11月 22 00:25 zhaobsh.o2c.index
-rw-r--r-- 1 root root 45M 11月 22 00:25 zhaobsh.o2hprof.index
-rw-r--r-- 1 root root 30M 11月 22 00:25 zhaobsh.o2ret.index
-rw-r--r-- 1 root root 52M 11月 22 00:25 zhaobsh.outbound.index
-rw-r--r-- 1 root root 83K 11月 22 00:25 zhaobsh_System_Overview.zip
-rw-r--r-- 1 root root 27K 11月 22 00:24 zhaobsh.threads
-rw-r--r-- 1 root root 482K 11月 22 00:25 zhaobsh_Top_Components.zip
Linux无头模式使用mat分析dump的方法的更多相关文章
- Linux字符模式下如何设置/删除环境变量
Linux字符模式下设置/删除环境变量方法: bash下 设置:export 变量名=变量值 删除:unset 变量名 csh下 设置:setenv 变量名 变量值 删除:unsetenv 变量名 h ...
- 使用MAT(Memory Analyzer Tool)工具分析dump文件--转
原文地址:http://gao-xianglong.iteye.com/blog/2173140?utm_source=tuicool&utm_medium=referral 前言 生产环境中 ...
- 【转载】linux环境下tcpdump源代码分析
linux环境下tcpdump源代码分析 原文时间 2013-10-11 13:13:02 CSDN博客 原文链接 http://blog.csdn.net/han_dawei/article/d ...
- linux环境下tcpdump源代码分析
Linux 环境下tcpdump 源代码分析 韩大卫@吉林师范大学 tcpdump.c 是tcpdump 工具的main.c, 本文旨对tcpdump的框架有简单了解,只展示linux平台使用的一部分 ...
- 使用MAT分析内存泄露
使用MAT分析内存泄露 对于大型服务端应用程序来说,有些内存泄露问题很难在测试阶段发现,此时就需要分析JVM Heap Dump文件来找出问题.随着单机内存越来越大,应用heap也开得越来越大,动辄十 ...
- 在Eclipse中使用MAT分析Android程序内存使用状况(转)
对于Android这种手持设备来说,通常不会带有太大的内存,而且一般用户都是长时间不重启手机,所以编写程序的时候必须要非常小心的使用内存,尽量避免有内存泄露的问题出现.通常分析程序中潜在内存泄露的问题 ...
- 使用Memory Analyzer tool(MAT)分析内存泄漏(二)
转载自:http://www.blogjava.net/rosen/archive/2010/06/13/323522.html 前言的前言 写blog就是好,在大前提下可以想说什么写什么,不像投稿那 ...
- 使用Memory Analyzer tool(MAT)分析内存泄漏
前言的前言 写blog就是好,在大前提下可以想说什么写什么,不像投稿那么字字斟酌.上周末回了趟成都办事,所以本文来迟了.K117从达州经由达成线往成都方向走的时候,发现铁路边有条河,尽管我现在也不知道 ...
- Linux信号(signal) 机制分析
Linux信号(signal) 机制分析 [摘要]本文分析了Linux内核对于信号的实现机制和应用层的相关处理.首先介绍了软中断信号的本质及信号的两种不同分类方法尤其是不可靠信号的原理.接着分析了内核 ...
- linux内核SPI总线驱动分析(一)(转)
linux内核SPI总线驱动分析(一)(转) 下面有两个大的模块: 一个是SPI总线驱动的分析 (研究了具体实现的过程) 另一个是SPI总线驱动的编写(不用研究具体的实现过程) ...
随机推荐
- 优化了MYSQL大量写入问题,老板奖励了1000块给我
摘要:大家提到Mysql的性能优化都是注重于优化sql以及索引来提升查询性能,大多数产品或者网站面临的更多的高并发数据读取问题.然而在大量写入数据场景该如何优化呢? 今天这里主要给大家介绍,在有大量写 ...
- 实践案例丨Pt-osc工具连接rds for mysql 数据库失败
[现象] 主机可以telent 通rds 端口,并且使用mysql-client 连接正常: 如下图所示:使用pt-osc工具连接时,一直没有响应,一直卡在哪里 等了4-5分钟左右后,会有响应,如下图 ...
- DTSE Tech Talk | 云原生架构下的数字身份治理实践
摘要:由华为技术大咖VS派拉软件CTO为大家详解云原生架构下的身份管理平台,构建云安全数字身份入口. 本文分享自华为云社区<DTSE Tech Talk | 第4期:云原生架构下的数字身份治理实 ...
- 拔掉电源会怎样?GaussDB(for Redis)双活让你有备无患
摘要:GaussDB(for Redis)推出双活方案,助力全球化业务部署,为您的数据资产保驾护航! 本文分享自华为云社区<华为云GaussDB(for Redis)揭秘第22期:拔掉电源会怎样 ...
- 云小课|3种常用Git工作流推荐
本文分享自华为云社区<[云小课]应用平台第44课 常用Git工作流推荐>,作者: 应用万花筒. . 1. Git工作流-动静有法 简单来说,工作流就是开发团队预置的开发流程和解决问题时使用 ...
- 探索开源工作流引擎Azkaban在MRS中的实践
摘要:本文主要介绍如何在华为云上从0-1搭建azkaban并指导用户如何提交作业至MRS. 本文分享自华为云社区<开源工作流引擎Azkaban在MRS中的实践>,作者:啊喔YeYe. 环境 ...
- webpack性能优化(2):splitChunks用法详解
之前写的<webpack性能优化(0):webpack性能优化概况-优化构建速度>.<webpack性能优化(1):分隔/分包/异步加载+组件与路由懒加载> 如果使用vue-c ...
- 乐高式扩展:在Seal软件供应链防火墙中轻松集成代码规范工具
上个月,Seal 软件供应链防火墙 v0.2(以下简称"Seal")正式发布,这一版本实现了可扩展架构,用户可以根据自身需求插件式集成原生或第三方解决方案,灵活扩展扫描能力. 在前 ...
- 开启一个 A/B 实验到底有多简单?
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 火山引擎 A/B 测试平台 DataTester 孵化于字节跳动业务内部,在字节跳动,"万事皆 A/B, ...
- 大数据-业务数据采集-FlinkCDC DebeziumSourceFunction via the 'serverTimezone' configuration property
Caused by: org.apache.kafka.connect.errors.ConnectException: Error reading MySQL variables: The serv ...