定位JVM中占CPU较高的堆栈

疑问:

在linux中,使用top命令,发现某java进程占用CPU较高,如何定位到是那个线程,执行哪些代码导致的呢?

第一步:找到占用CPU较高的进程号,使用top命令查看。

从上图可以看到,java进程号为759的进程占用cpu特别高。

第二步:查看当前进程759所有线程占用cpu情况

使用top –Hp pid 来查看,shift + t命令展示或关闭线程情况。

从上图,可以看出760的java线程占用CPU较高。

第三步:查看760线程的堆栈信息。

使用命令 jstack 759 | grep –A 100x2f8

其中jstack是java命令,可以在JDK bin目录找到该命令。759为上述java进程号,-A表示查询到所在行后10行。0x2f8是java线程760转化为十六进制,注意全部转化为小写。

如上图,打印了java堆栈信息,可以根据堆栈信息,检查代码,查找并分析占用CPU过高原因。

定位JVM中占CPU较高的堆栈,布布扣,bubuko.com

时间: 2024-10-21 20:26:54

定位JVM中占CPU较高的堆栈的相关文章

如何快速定位JVM中消耗CPU最多的线程?

第一步.先找出Java的进程PID ps -ef | grep 进程名关键字 这里假设找到的PID是:12345 第二步.找出该进程内最消耗CPU的线程 top -Hp 12345 17183 log4x 20 0 4292820 529812 23040 R 94.7 0.8 1:11.79 java -server -Xms268435456 -Xmx268435456 17162 log4x 20 0 4292820 529812 23040 R 87.1 0.8 1:17.90 java

word与spoolsv.exe占CPU过高

今天一同事说office中word打不开了,excel打开没问题. 当时情况如下: word和spoolsv.exe两进程占CPU程序过高,明显是因为spoolsv.exeCPU占用率异常导致的word假死. 通过上述问题得出: 1.不是offic软件问题,所以重装也没用.(因为当时尝试关闭spoolsv.exe之后打开word正常,但是只要spoolsv.exe进程重新启动,word就假死) 2.没有中毒或者木马.(在网上查找这方面的时候都说是中了木马或者病毒,查找了msconfig开机启动项

【转载】SQL Server中查询CPU占用高的SQL语句

本文导读:触发器造成死锁.作业多且频繁.中间表的大量使用.游标的大量使用.索引的设计不合理.事务操作频繁.SQL语句设计不合理,都会造成查询效率低下.影响服务器性能的发挥.我们可以使用sql server自带的性能分析追踪工具sql profiler分析数据库设计所产生问题的来源,进行有针对性的处理:下面介绍SQL Server中如何查询CPU占用高的SQL语句 SQL Server中查询CPU占用高的情况,会用到sys.sysprocesses ,dm_exec_sessions ,dm_ex

查看进程中占cpu高的线程方法

当在任务管理器中发现有进程占用cpu过高的时候通过下面的指令将进程快照导出到c盘 jstack -l 进程PID> c:/进程PID.stack 查看进程PID的方法: 然后我们需要下载微软提供的process-explorer工具用来查看那个线程占cpu高 下载地址:https://docs.microsoft.com/zh-cn/sysinternals/downloads/process-explorer 下载后解压打开 然后找到threads下的占用cpu高的线程TID (注意:这里的T

[转]定位占用oracle数据库cpu过高的sql

今天在吃饭的时候我的朋友的数据库出现了问题,cpu占用率为97%,当我看到这个问题的时候我就想到了或许是sql导致的此问题,由于忍不住吃饭,暂时没有帮他看这个问题,这是我饭后自己模拟的故障,进行的分析: 1)查看一下cpu进程占用情况: 看到oracle进程为6331,6517等这几个进程占用cpu过高. 2)查看相关进程信息: [[email protected] ~]$ ps -ef | grep 6331 oracle 6331 1 23 20:24 ? 00:02:05 ora_vktm

mysql数据库配置优化(占cpu过高问题)

MySQL5.6的my.ini配置 注意:以下配置的服务器硬件是:8核16G内存 [client] port=3306 [mysql] default-character-set=utf8 [mysqld] port=3306 basedir=D:/mysql-5.6.21-winx64 datadir=D:/mysql-5.6.21-winx64/data character-set-server=utf8 default-storage-engine=INNODB sql-mode="STR

Microsoft Compatibility telemetry占cpu资源高

1.在Windows10系统卡的时候,打开任务管理器,发现Microsoft Compatibility telemetry占用了大量的系统资源,特别是CPU占用率非常高. 位置:控制面板->管理工具->任务计划程序 2.右键点开[这台电脑],点[管理],点[服务和应用程序]点[服务],在右边框里把[superfetch] 位置:运行->regedit [windows search][HomeGroupListener] [HomeGroupProvider]的启动类型设置成[禁用]

tomcat7+java压测过程中占用CPU过高排查故障和解决办法

环架构境: 前端haproxy做为反向代理,后端N+1台tomcat+java服务 出现问题: 环境是新搭建的,本周在做压测刚开始的时候正常,随着量的上涨,导致CPU一直暴涨. 解决办法和思路: 1.)先通过top命令查看占用cpu高的PID # 根据top命令查看发现PID为2195和975的的进程占用CPU高达%200+,明显出现故障 2.)通过top -H -p pid命令查看,发现2275 3302 3375这几个进程占用CPU时间8分钟 3.)把线程pid转换为16进制,例如:上面的p

java进程占CPU过高故障查询

早上看到服务器报警,系统负载过高,top看了一下大概情况,如下图所示: 根据