JStack分析cpu消耗过高问题

1. top找到目标进程,记下pid

2. top –p pid, 并用shift+h打开线程模式 
    这样可以看到这个进程中,到底哪个线程占用大量cpu 
    记下threadid,tid

3. jstack查看该线程实时的stack情况 
    jstack [pid]|grep -A 10 [tid(16进制)] , 10表示打印stack的长度,可以选择打印更多的stack信息
    比如,jstack 21125|grep -A 10 52f1

http://www.iteye.com/topic/1114219  --参考

时间: 2024-10-01 04:42:44

JStack分析cpu消耗过高问题的相关文章

使用jstack分析cpu消耗过高的问题

我们使用jdk自带的jstack来分析.当linux出现cpu被java程序消耗过高时,以下过程说不定可以帮上你的忙: 1.top查找出哪个进程消耗的cpu高 21125 co_ad2    18   0 1817m 776m 9712 S  3.3  4.9  12:03.24 java                                                                                           5284 co_ad    

linux查看某个进程CPU消耗较高的具体线程或程序的方法

目前我们的监控,可以发现消耗较高CPU的进程(阀值为3个CPU),通过监控我们可以找到消耗较高CPU的进程号: 通过进程号pid,我们在linux上可以通过top –H –p <pid>命令,显示该进程中每个线程的CPU资源消耗情况. 然后通过threadump命令,可以打印出某个应用JVM中某时刻所有线程的调用情况,通过线程号我们就可以对应找到线程调用的程序了. 另: 使用jrcmd命令也可以进行threadump和进程执行线程情况的查看,但该命令为jrockit 5.0 新带的命令,在wl

Linux jstack分析cpu占用100%

背景: 运行测试程序后,top命令发现某个进程(pid)占用cpu达到100%. 查看哪个线程占用最多资源: ps mp pid -o THREAD,tid,命令查看这个进程下面的所有线程占用情况. 发现线程324占用最多. 使用jstack进行跟踪: jstack pid 进行查看输出到临时文件 jstack 324> test 将刚刚发现占用cpu最多的线程id(324)换算成16进制,324==>144 查看jstack 生成的文件: 下面可以看出是哪行代码导致,查看那行代码发现有死循环

java程序CPU消耗分析之找出最耗CPU线程

java程序CPU消耗过高一般有两种情况: 1. us过高,应用占用CPU资源过高,需找出具体占用CPU的线程所执行的代码,分析定位问题原因. 分析步骤如下: (1) 使用top命令找出占用cpu最高的JAVA进程 (2) 找出占用cpu最高的线程  top -Hp 1781 (3) 占CPU最高线程17596换算成16进制对应线程44bc 用命令 printf "%x\n" 17596 (4) 打印占CPU最高JAVA进程1781的堆栈信息 jstack 1781> stack

Linux环境下的CPU消耗分析

在Linux系统中, CPU 主要用于中断,内核以及用户进程的任务处理,优先级为 中断 > 内核 > 用户进程.在CPU消耗分析中,我们还经常遇到下面几个概念. 上下文切换         每个CPU在同一时间只能执行一个线程, Linux 中线程是抢占式调度的. 也就是说每个线程分配一定的执行时间,当到达执行时间,线程中有IO阻塞或者高优先级线程要执行时,Linux将切换执行的线程,在切换时要存储目前线程的的执行状态,并恢复要执行的线程的状态,这个过程就称为上下文切换.在java 应用程序中

jstack来分析。当linux出现cpu被java程序消耗过高时

我们使用jdk自带的jstack来分析.当linux出现cpu被java程序消耗过高时,以下过程说不定可以帮上你的忙: 1.top查找出哪个进程消耗的cpu高 21125 co_ad2    18   0 1817m 776m 9712 S  3.3  4.9  12:03.24 java                                                                                           5284 co_ad    

Linux下java进程CPU占用率高分析方法

Linux下java进程CPU占用率高分析方法 在工作当中,肯定会遇到由代码所导致的高CPU耗用以及内存溢出的情况.这种情况发生时,我们怎么去找出原因并解决. 一般解决方法是通过top命令找出消耗资源高的线程id,利用strace命令查看该线程所有系统调用 1. 通过top命令找到可疑进程PID top - 09:37:18 up 70 days, 16:29, 2 users, load average: 1.13, 1.04, 0.97 Tasks: 105 total, 1 running

从cpu负载到jstack分析线程状态

示例代码: public class CPULockTest { private static Object lock1 = new Object(); private static Object lock2 = new Object(); public static void main(String[] args) { new Thread(()->{ synchronized (lock1){ try { System.out.println(Thread.currentThread().g

Linux下java进程CPU占用率高-分析方法

今天登陆同事的一台gateway 开始以为hive环境登陆不了了,仔细一看看了下是因为机器很卡,我每次等几秒没登陆就ctrl+c了,看了下是有个java进程cpu:340.4%  mem:14.6% 一般解决方法是通过top命令找出消耗资源高的线程id,利用strace命令查看该线程所有系统调用 1. 通过top命令找到可疑进程PID top 一下 可以看出java进程CPU利用率一直保持100%,稳居不下,找到PID 24138 2. 找出消耗资源最高的线程 top -H -p  29580