查看JAVA占用CPU高的线程日志

# 1. 查看主进程占用cpu高
top
#    1647 java

# 2. 按照线程占用cpu由高到低进行排查:
ps -mp 1647 -o THREAD,tid,time | sort -rn |head -6

# USER     %CPU PRI SCNT WCHAN  USER SYSTEM   TID     TIME
# root      1.6   -    - -         -      -     - 00:02:07
# root      0.1  19    - futex_    -      -  1767 00:00:11
# root      0.1  19    - futex_    -      -  1766 00:00:11
# root      0.1  19    - futex_    -      -  1765 00:00:10
# root      0.0  19    - skb_re    -      -  5048 00:00:00

# 3. 将线程号转化为16进制:
printf "%x\n" 1767
6e7

# 4. 通过主进程搜索所有的线程执行的内容
#    注意点:
#        项目运行的用户
#        使用的jdk版本下的jstack去查看
flag="0x"
sudo -u root /opt/jdk1.8.0_191/bin/jstack 1647 |grep ${flag}6e7 -A 30

### 将整个流程写成脚本,查找tomcat占用CPU高的线程日志
pid=$(ps -ef|grep tomcat|grep -v grep|awk ‘{print $2}‘|head -1)
flag="0x"
jstack="/opt/jdk1.8.0_191/bin/jstack"
for tpid in `ps -mp ${pid} -o THREAD,tid,time | sort -rn |head -6|awk ‘$8 ~ /[0-9]+/ {print $8}‘`
do
    tpid_16hex=$(printf "%x\n" ${tpid})
    echo "------------------------------------- tpid:[ ${tpid} ] -----------------------------------------------------"
    sudo -u root ${jstack} ${pid} |grep ${flag}${tpid_16hex} -A 40
done

原文地址:https://www.cnblogs.com/chenzechao/p/11811869.html

时间: 2024-10-08 03:02:46

查看JAVA占用CPU高的线程日志的相关文章

查看进程中占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

Java进程CPU高

Java进程CPU高1-1) 查看$PID进程里面的线程CPU占用状况    top -H -p $PID1-2) 显示线程列表,并按照CPU占用高的线程排序     ps -mp $PID -o THREAD,tid,time | sort -rn2) 找出CPU消耗较多的线程id, 并转换成16进制     printf "%x\n" $TID3) 查询出具体的线程状态     jstack $PID | grep -A 10 0x$TID

java进程CPU高分析

https://blog.csdn.net/moranzi1/article/details/89341480 JVM导致系统CPU高的常见场景内存不足,JVM gc频繁,一般会伴随OOMJVM某个线程死循环或者递归调用 定位和解决1.内存不足,gc频繁可参考我的这遍文章解决.https://blog.csdn.net/moranzi1/article/details/886702042.JVM某个线程死循环或者递归调用.这种情况关键是找到导致CPU高的线程.然后根据具体线程具体分析为什么该线程

关于csrss.exe和winlogon.exe进程多、占用CPU高的解决办法

原地址 http://blog.sina.com.cn/s/blog_912e77480101nuif.html 最近VPS的CPU一直处在100%左右,后台管理上去经常打不开,后来发现上远程都要好半天才反映过来,看到任务管理器有多个winlogon.exe进程和占用CPU高,百度查了下,说是有人在破解远程,最后按教程修改3389端口和改密码,重启后CPU直接降下来了,winlogon.exe进程也只有一个,一切恢复正常. 我太懒了,之前知道winlogon.exe进程多,但没这几天严重,今天查

linux如何获取占用CPU最高的线程id?(java项目)

1.可以登上机器,确认下是什么线程使 CPU 飙高.先ps查看 Java 进程的 PID: ps -ef | grep  xx项目 2.拿到进程 pid 后,可以使用 top 命令,来看是什么线程占用了 CPU.top -p 12309 -H -p 用于指定进程,-H 用于获取每个线程的信息,从 top 输出的内容,可以看到有四个线程占用了非常高的 CPU: 到这里可以拿到12313.12312.12311.12314这四个线程id.为了确定这些是什么线程,需要使用 jstack 命令来查看这几

【疑难问题】Java疑难CPU高定位

1   CPU高分析 1.1   说明(root执行) 建议使用root账号执行命令,使用其他账号登录可能会无法看到部分进程信息. 1.2   查看服务进程ID(ps) 命令格式:  ps –ef | grep XXXX 1.3   查看机器CPU占用情况(top) 命令格式:  top 执行结果如下,结果会动态刷新 %CPU取值说明:以347949为例,58.7%并不是类似Windows的整体CPU占用率.CPU通常是多核,命令执行机器是8核CPU,则CPU全部可用率为8*100%=800%:

转 JVM找出占用CPU最高的线程

这两天客户这边有一台服务器一到下午3点左右就开始卡住,页面无法访问,服务器CPU占用达到300%多开始以为只是可能只是意外事件,重启一下就好,但是发现重启之后没几分钟服务器马上又反应无法访问,我就开始检查自己写的代码是不是有什么非常消耗CPU资源的逻辑,但是找了一段时间之后还是一无所获,不过马上反应的就是先把最新提交发布的代码还原到上一个版本.但是没过多久还是反应服务器开始又开始无法访问了.于是就第一步: 通过 top命令查找到这个消耗CPU的进程号PID 8958 top第二步:使用 top

Windows下找到JVM占用资源高的线程

与linux下top命令直接显示进程下线程资源占用不同,Windows下默认任务管理器只能显示出进程的资源占用,jconsle等工具也只能显示出java进程资源占用,无法显示出进程能具体线程的资源占用,为此需要用到一个工具processExplorer. 1.用任务管理器或jconsle工具占用资源最高的java进程pid: 2.用processExplorer工具找到这个进程下线程的资源占用情况,找到占用资源最高的线程id,将其转换为16进制显示: 3.jconsle或jstack java进

「android」查看应用占用cpu和内存消耗情况

查看CPU 消耗 1.进入adb shell 2.输入top -m 10 -s cpu 可查看占用cpu最高的前10个程序(-t 显示进程名称,-s 按指定行排序,-n 在退出前刷新几次,-d 刷新间隔,-m 显示最大数量) 查看内存消耗 1.进入adb shell ; 2.输入dumpsys meminfo