首页 > 系统相关 >Linux无头模式使用mat分析dump的方法

Linux无头模式使用mat分析dump的方法

时间:2022-11-22 01:44:22浏览次数:50  
标签:11 rw mat 22 -- zhaobsh Linux root 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

标签:11,rw,mat,22,--,zhaobsh,Linux,root,dump
From: https://www.cnblogs.com/jinanxiaolaohu/p/16913941.html

相关文章

  • Linux运维笔记[6]-备份和恢复
    备份[https://www.cnblogs.com/OneDirection/articles/9797833.html]因为服务器主要是通过docker容器运行微服务,所以主要备份docker镜像docker退出状态码[https://z......
  • linux服务器互信配置
    假设有A、B两台服务器目标:A可以通过命令sshB即可登录到B服务器进行操作B可以通过命令sshA即可登录到A服务器进行操作一、简介SecureShell(缩写为SSH),由IETF的网......
  • Linux保持SSH连接时间设置
    连接SSH服务器刚刚离开一会就断开,不得不需要反复连接服务器,为了使SSH服务器可以保持足够的连接时间,大家可以按以下方法设置:基于安全的理由,如果用户连线到SSHServer后闲......
  • linux .的用处
    相当于source命令,把文件当作脚本执行。准备一个文本文件:newtext文本内容ifconfigsource执行.执行两者的区别.执行的文件必须接相对完整的文件路径,source则没有......
  • Linux系列---【如何通过登录账号查看服务器是否被黑客入侵?】
    如何通过登录账号查看服务器是否被黑客入侵?1.问题redis最近不能用了,一看日志和定时任务有关系,第一反应就是服务器被黑了,下面是我的排查思路,记录一下。2.查看最近登......
  • 使用DocumentFormat.OpenXml 从Excel 导入数据
    publicList<DailyStock>ReadExcelFile(stringfileName){List<DailyStock>list=newList<DailyStock>();DataTabledt=ReadExcelFileToDataTable(fi......
  • php 在LINUX下创建目录失败的解决方法
    mkdir(APP_PATH.'tempinfo/getport/'.$config_name,0777,true);创建多级目录时使用参考https://jingyan.baidu.com/article/63acb44ac8ec5861fdc17e4d.html......
  • CNETOS LINUX 计划任务详解
    r.sh复制代码tamcdir=HOME/ora/userprojects/domains/tamccd{tamcdir}echorm-f​​​lsheapdump*.phd​​​rm-fheapdump*.phdechorm-f​​​lsjavacore*......
  • Linux下常用的软件安装方式
    Linux下常用的3种软件安装方式一:Linux源码安装  1、解压源码包文件  源码包通常会使用tar工具归档然后使用gunzip或bzip2进行压缩,后缀格式会分别为.tar.gz与.tar......
  • PHP 新特性 linux安装ssh2
    p7新特性p7新特性http://www.aichengxu.com/view/5446277 已经云http://www.lai18.com/content/2442224.html 已经云p7安装ssh2http://www.mobibrw.com/2016/4049//ssh2最......