`

top命令找到占用CPU最高的java线程

阅读更多

上次分析系统中占用CPU高的问题,得到一些使用Java自身调试工具的经验,与大家分享。
(1)使用top命令找出占用cpu最高的JAVA进程PID:28174

(2)如下命令找出占用cpu最高的线程

top -Hp 28174 -d 1 -n 1
32694 root      20   0 3249m 2.0g  11m S    2  6.4   3:31.12 java           
       
28175 root      20   0 3249m 2.0g  11m S    0  6.4   0:00.06 java               
28176 root      20   0 3249m 2.0g  11m S    0  6.4   1:40.79 java               
28177 root      20   0 3249m 2.0g  11m S    0  6.4   1:41.12 java               
28178 root      20   0 3249m 2.0g  11m S    0  6.4   1:41.11 java               
28179 root      20   0 3249m 2.0g  11m S    0  6.4   1:41.33 java               
28180 root      20   0 3249m 2.0g  11m S    0  6.4   1:41.58 java               
28181 root      20   0 3249m 2.0g  11m S    0  6.4   1:40.36 java               
28182 root      20   0 3249m 2.0g  11m S    0  6.4   1:41.02 java               
28183 root      20   0 3249m 2.0g  11m S    0  6.4   1:40.96 java               
28184 root      20   0 3249m 2.0g  11m S    0  6.4   4:38.30 java               
28185 root      20   0 3249m 2.0g  11m S    0  6.4   0:00.46 java               
28186 root      20   0 3249m 2.0g  11m S    0  6.4   0:01.83 java               
28187 root      20   0 3249m 2.0g  11m S    0  6.4   0:00.00 java               
28189 root      20   0 3249m 2.0g  11m S    0  6.4   0:00.01 java               
28190 root      20   0 3249m 2.0g  11m S    0  6.4   0:49.01 java  

 

(3)打印占CPU最高JAVA进程28174的堆栈信息

/usr/java/jdk1.6.0_21/bin/jstack 28174 > /root/mss/41-100javathreaddump.txt

 

(4)占CPU最高线程32694换算成16进制到文档中寻找对应线程7fb6

"MSXMLProcessorThread" prio=10 tid=0x00002b469923a800 [color=darkred]nid=0x7fb6[/color] sleeping[0x00002b46b0200000]
   java.lang.Thread.State: TIMED_WAITING (sleeping)
        at java.lang.Thread.sleep(Native Method)
        at com.adventnet.management.xml.MSXmlProcessor.listen(MSXmlProcessor.java:279)
        at com.adventnet.management.xml.MSXmlProcessor.run(MSXmlProcessor.java:264)
        at java.lang.Thread.run(Thread.java:619)

       

        以上过程手工进行,虽然不如Jprofiler和java自带的可视化工具那么直观,但是能够解决问题!尤其是在不能使用远程调试工具的时候,能够提供最大的帮助。

 

文章来源:http://lxiaodao.iteye.com/blog/1413774

分享到:
评论

相关推荐

    可以查看多线程cpu占用率的工具

    用在嵌入式linux平台上,通常busybox的top无法看到多线程应用的每个线程的cpu占用率,特地编写了这个小工具.

    jvm排查cpu占用过高的线程

    java进程占用CPU过高常见的两种情况: 代码中有死循环或者接近死循环的操作 快速创建大量临时变量,导致频繁触发gc回收 问题解决: 1、用top命令找到cpu占用率最高的进程号是8958 top 2、top -Hp pid 命令找到该...

    70-Java程序CPU占用1001

    Java程序 CPU占用100%问题排查通过top确认问题进程,获得pid。根据pid查出问题线程,获得线程id,tid。通过jstack把pid的信息导出文件

    Java进程CPU使用率高排查

     3.top -H -p PID 查看对应进程的哪个线程占用CPU过高。  4.echo “obase=16; PID” | bc 将线程的PID转换为16进制。  5.在第二步导出的Java.txt中查找转换成为16进制的线程PID。找到对应的线程栈。  6.分析...

    linux java top分析

    获取当前jvm占用CPU的线程, 分析性能问题利器。

    按内存占用排序和按CPU占用排序的Linux TOP命令

    Linux TOP命令默认是CPU占用排序,按M可以切换到按内存占用排序。这是系统维护和电脑内存维护。可以切换的。不同的用法,达到不同的效果。

    线上占用CPU过高问题排查

    表象:服务挂了,CPU占用比较高,一直在百分之九十多。肯定有小伙伴会说常规操作 ,reboot一下完事儿了。其实这样吧没毛病,但是解决不了根本问题。啥也不多说。咱们先说下线上排查三板斧。就算不能解决问题也能猜个...

    JAVA 多线程

    Java源程序和字节码文件被称为“程序” (Program),是一个静态的概念。 进程 执行中的程序叫做进程(Process),是一个动态的概念。  进程是程序的一次动态执行过程, 占用特定的地址空间.  每个进程由3部分组成...

    记一次tomcat进程cpu占用过高的问题排查记录

    linux系统下,一个tomcat web服务的cpu占用率非常高,top显示结果超过200%。请求无法响应。反复重启依然同一个现象。 问题排查 1、获取进程信息 通过jdk提供的jps命令可以快速查出jvm进程, jps pid 2、查看...

    Linux命令Top系统变慢处理

    先查看 cpu 和mem(内存):看哪个线程占用多大内存 再看:load average(系统的负载均衡):1.36 0.81 0.37 3个值, 平均代表的是系统一分钟 五分钟 十五分钟系统的平均负载值, 如果((1.36 +0.81 +0.37)/3 *100...

    Linux系统中CPU占用率较高问题排查思路与解决方法

    前言 作为 Linux 运维工程师,在...找到占用CPU过高的进程的pid 第二步:使用 top -H -p [进程id] 找到进程中消耗资源最高的线程的id 第三步:使用 echo ‘obase=16;[线程id]’ | bc或者printf “%x\n” [线程id

    【MySQL面试第二弹】MySQL 服务占用cpu 100%,如何排查问题?

    推荐阅读学习:MySQL最全整理(面试题+笔记+导图),面试大厂不再被MySql难倒! 一、引子 对于互联网公司,线上CPU飙升的问题很常见(例如某个活动...执行top命令:查看所有进程占系统CPU的排序。极大可能排第一个的就

    mysql数据库CPU高,实时抓住数据库执行中的SQL语句,shell工具(支持mysql5.7)

    #适用于实时查询mysql占用CPU高的语句,循环监控mysql进程情况,当CPU大于一定的前执行中的SQL情况. #执行前,修改ENV认证部分 #编写:Chaoren #2022年3月4日18:38:53 # #对于执行时间非常短的SQL可能监控到的语句...

    【bugfix】记一次CPU飙高的排查经历

    找到最高的线程id:29230、29156、29151、29197、29240、29284、29291 转换成hex十六进制:722e、71e4、71df、720d、7238、7264、726b 3.线程虚拟机栈分析 jstack pid | grep threadId jstack生成线程快照

    JavaWeb在线系统问题核查

    WEB Server确认: 服务CPU高并不一定一定是Server导致,也可能是其他辅助服务,需要根据top命令确认 单线程问题定位: 根据进程PID列线程列表top -Hp PID; jstack 打印占用资源较多线程代码位置 多线程问题...

    Linux下高CPU解决方案

    用top命令查看哪个进程占用CPU高  gateway网关进程14094占用CPU高达891%,这个数值是进程内各个线程占用CPU的累加值。 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 14094 root 15 0 315m...

    Linux shell脚本实现CPU预警

    如果CPU占用率持续达到80以上则调用打印java线程占用率堆栈的脚本,见https://github.com/oldratlee/useful-shells/blob/master/show-busy-java-threads.sh,具体用法见他的github wiki! #!/bin/bash #cpu idle ...

    linux vps服务器进程kswapd0与events/0消耗大量CPU的问题

    重启服务器后,使用 top 命令看看是哪些进程消耗那么大的 CPU 使用。盯了有好十几分钟,主要消耗 CPU 的进程有两个,一个是 mysql,另一个是 apache。下面的图可以看到,mysql 占用了很大部分的 CPU 使用。apache ...

    release-2.x.zip

    说明:用于快速排查Java的CPU性能问题(top us值过高),自动查出运行的Java进程中消耗CPU多的线程,并打印出其线程栈,从而确定导致性能问题的方法调用。

Global site tag (gtag.js) - Google Analytics