经常发现系统load值高,然后想去查找具体是哪个java线程导致的,一般会使用top jstack等等,但是每次都是人肉操作,故希望能将这个过程自动化,故这里写了个脚本用于dump出当前耗cpu的java线程堆栈。
分析下脚本处理过程:
1:利用top H列出当前线程的情况
2:grep出线程id
3:转换为jstack中的十六进制的线程id
4:利用jstack dump出线程
5:grep出所需要的线程上下文
直接上脚本代码
top -b -H -n 1 -p $1 | fgrep java -m $2 | awk '{print "obase=16;"$1}' | bc | awk '{printf"nid=0x%s|",$0}'| awk '{print substr($0,1,length()-1)}' > /tmp/nid.log 2>&1 &
/opt/sun/java/bin/jstack -l $1 > /tmp/js.log 2>&1 &
wait
cat /tmp/nid.log && cat /tmp/nid.log |xargs -i egrep {} /tmp/js.log -A 10 -i
本想借助管道一个命令完全实现的,发现grep如果接受2个动态参数行不通,故拆分开用2个进程来做的
说明下使用方式
sh topJava.sh pid threadNum
topJava.sh :是这个脚本的名字
pid :是要监控的java进程的id,其实如果只有一个java进程,那我可以用另外神奇的命令帮你获得,不过为了通用还是当成参数了。
threadNum :是要监控的java线程的个数,例如我想看最耗cpu的5个线程,则传递5
这里完全是用shell脚本来实现的,当然也可以完全用java的方式实现,不过java实现起来没这么简单要用MBean还有jvm tools相关的类,写一坨代码做shell的事情划不来。
分享到:
相关推荐
java 线程Dump 分析工具: Java的TDA线程转储分析器是一个用于分析Sun Java VM生成的线程转储和堆信息的小型Swing GUI(目前用1.4测试)。它从提供的日志文件中解析线程转储和类直方图。它提供关于发现的线程转储的...
java线程dump自动分析工具 java线程dump自动分析工具 java线程dump自动分析工具
IBM Thread and Monitor Dump Analyzer for Java(简称 jca)。它可以识别Java线程中的挂起,死锁,资源竞争,和瓶颈。 使用方法: java -Xmx1000m -jar jca456.jar
Linux Core Dump 权威书籍
教您如何分析JAVA的堆栈,浅显易懂,蛮不错的,极力推荐
IBM Thread and Monitor Dump Analyzer for Java(简称 jca)。它可以识别Java线程中的挂起,死锁,资源竞争,和瓶颈。 使用方法: java -Xmx1000m -jar jca456.jar
分析java线程日志的工具,使用jstack把java线程日志dump下来,然后上传到该工具,就可以查看线程阻塞情况等信息。
分析线程情况 JavaCore 或 ThreadDump文件,即线程的映像,用来分析线程资源锁等情况
java线上故障分析-线程dump,堆内存分析
主要介绍了Java线程Dump分析工具jstack解析及使用场景,具有一定借鉴价值,需要的朋友可以参考下
通过实例来分析linux中如何定位coredump问题。非常实用
Linux下如何生成core dump
好用的线程dump分析工具
IBM提供的分析javacore和dump的内存分析工具,非常...分析线程情况 JavaCore 或 ThreadDump文件,即线程的映像,用来分析线程资源锁等情况, 可参考:https://blog.csdn.net/weixin_34129696/article/details/85868951
linux下数据库dump的导入导出
java dump 堆栈 dumpAnalyzer 分析,在日常工作中,经常会遇到,系统跑着跑着就会出现性能问题,CPU居高不下。这个时候我们就需要对系统的堆栈信息进行分析。这里就介绍如何使用IBM内存检测工具(dumpAnalyzer)。
性能测试,线程的 dump 看到线程的 死锁,等待 运行状态
Linux Crash Dump的设计与实现.pdf
Thread and Monitor Dump Analyzer for Java
javacore.txt文件用jca打开,heapdump.phd文件用ha打开。 Heap dump 文件是一个二进制文件,它保存了某一时刻在 Java 堆中所有对象的状态。这个文件最重要的作用就是分析 Java 堆内存泄露问题,heap analyzer,MAT ...