`
hbxflihua
  • 浏览: 660338 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

java进程CPU过高问题定位

    博客分类:
  • java
阅读更多

 

1、top命令查看过高CPU的pid,命令:top

[root@test-v3 bin]# top
top - 16:44:22 up 173 days,  7:05,  2 users,  load average: 0.74, 0.71, 0.61
Tasks: 150 total,   1 running, 149 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.8%us,  0.4%sy,  0.0%ni, 98.1%id,  0.0%wa,  0.0%hi,  0.0%si,  0.7%st
Mem:   8061116k total,  7924856k used,   136260k free,   234996k buffers
Swap:  4194300k total,   383972k used,  3810328k free,  1191756k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                         
  949 root      20   0 3576m 622m 9852 S  3.3  7.9   1194:48 java                                                                             
 5485 root      20   0 3327m 688m 9804 S  3.3  8.8   1769:07 java                                                                             
  980 root      20   0 3460m 692m  10m S  3.0  8.8   1834:53 java                                                                             
 1012 root      20   0 3393m 668m  10m S  3.0  8.5   1824:38 java                                                                             
14017 root      20   0 2841m 393m 9564 S  2.7  5.0   2079:06 java                                                                             
 1042 root      20   0 3522m 725m   9m S  0.7  9.2 366:09.83 java

 

 

2、定位线程,命令:ps -mp pid -o THREAD,tid,time | sort -rn

[root@test-v3 bin]# ps -mp 949 -o THREAD,tid,time | sort -rn
USER     %CPU PRI SCNT WCHAN  USER SYSTEM   TID     TIME
root      3.2  19    - futex_    -      - 31587 13:37:04
root      2.5   -    - -         -      -     - 19:55:11
root      0.1  19    - futex_    -      -  1849 01:14:46

 

 

3、将线程ID转为 16进制格式,命令:printf "%x\n" tid

[root@test-v3 bin]# printf "%x\n" 31587
7b63

 

 

4、打印堆栈信息 ,命令:jstack pid |grep 十六进制格式tid -A 10

其中-A 10表示查找到所在行的后10行。

[root@test-v3 bin]# cd /usr/java/jdk1.7.0_80/bin
[root@test-v3 bin]# ./jstack 949 |grep 7b63 -A 30
"System Clock" daemon prio=10 tid=0x00007f42904b0800 nid=0x7b63 runnable [0x00007f41f6084000]
   java.lang.Thread.State: TIMED_WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x00000000eca553a8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
	at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:226)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2082)
	at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1090)
	at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:807)
	at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1068)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
	at java.lang.Thread.run(Thread.java:745)

"http-bio-8084-exec-10" daemon prio=10 tid=0x00007f422c011000 nid=0x210 waiting on condition [0x00007f41f6684000]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x00000000ec542870> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)
	at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
	at org.apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:104)
	at org.apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:32)
	at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1068)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	at java.lang.Thread.run(Thread.java:745)

"http-bio-8084-exec-9" daemon prio=10 tid=0x00007f422c00f800 nid=0x7229 waiting on condition [0x00007f41f6785000]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)

 

 

分享到:
评论

相关推荐

    如何快速定位线上Doris FE内存使用过高问题.pdf

    因此对于Doris来说其实主要的内存和CPU的使用主要集中在BE,但是实际运行环境中偶尔也会出现有的同学线上FE环境出现内存使用过高的问题。并且这种情况可能只出现在线上特点的环境上,想要线下复现难度很大,这个是时候...

    如何快速定位线上Doris FE内存使用过高问题? (1).pdf

    因此对于Doris来说其实主要的内存和CPU的使用主要集中在BE,但是实际运行环境中偶尔也会出现有的同学线上FE环境出现内存使用过高的问题。并且这种情况可能只出现在线上特点的环境上,想要线下复现难度很大,这个是时候...

    Cubic java应用诊断工具.rar

    java的分析工具有:1.VisualVM,java应用程序性能分析和运行监控工具;...Arthas是一个java诊断工具,其采用命令行交互模式,提供了Tab键自动补全功能,且支持JDK 6+,可以自动检测存在的java进程。

    kiwi_java_toolbox

    功能说明一键式收集Java进程的问题定位信息,包括:Thread Stack和Heap Dump等。监控Java进程使用的CPU,当占用率过高时,自动收集Top信息和Thread Stack。启动、停止、查询、导出飞行记录。使用方法将工具上传到...

    check_higcpu.sh

    linux系统下,java进程使用CPU高,可利用此脚本抓取java进程的那个线程使用cpu高,集合thread dump,找到cpu高的线程编号来定位程序代码。使用方法 sh check_higcpu.sh $pid

    JAVA上百实例源码以及开源项目

     Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...

    JAVA上百实例源码以及开源项目源代码

    Java 源码包 Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来...

    release-2.x.zip

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

    JavaWeb在线系统问题核查

    单线程问题定位: 根据进程PID列线程列表top -Hp PID; jstack 打印占用资源较多线程代码位置 多线程问题定位:jstack快照所有线程;dump导出;使用jvisualvm分析dump文件 JVM分析:日志开启;GC日志打印;GC...

    memoryAnalyzer,jemter,jvisualvm工具使用介绍

    memoryAnalyzer可以分析Java进程内存情况,比如每个对象占用内存情况,对象个数,占用百分比,可依此分析后定位到代码哪里不合理; jemter用作压力测试,就是测试系统能够支撑的并发数 jvisualvm是jdk自带工具,...

    开源的Android性能测试工具APT

    APT提供了CPU利用率实时曲线图 多维度内存实时曲线图 方便竞品对比测试和定位内存泄露问题;支持进程内存构成分析 支持手工或超过阈值时自动转储 Dump 详细堆内存对象信息 支持多进程 支持生成和导出常用格式的的...

    华为鲲鹏云HCIA考试资料(二)

    支持采集整个系统或指定进程(包括运行中的进程或直接启动的进程)的CPU Cycles性能事件,能够快速定位到热点函数,包括应用程序函数、模块函数与内核函数,甚至能够定位到热点指令。 支持热点函数按照CPU核/...

    show-busy-threads

    此命令通过结合Linux操作系统的ps命令和jvm自带的jstack命令,查找Java进程内CPU利用率最高的线程,一般适用于服务器负载较高的场景,并需要快速定位导致负载高的原因。

    分析运行中的 Python 进程详细解析

    这样的需求可以说很常见,比如定位死锁,定位一个不工作的线程到底卡在哪里,或者定位为什么 CPU 居高不下等等问题。 现在工作中我用的是 Python,需要线上问题定位的缘故,也有了类似的需求——想要知道当前的 ...

    arthas3.4-bin.zip

    java性能定位工具,Java -jar arthas-boot.jar启动后选择需要定位的进程序号,然后 最消耗cpu的线程 thread -n 3 收集 5 秒, 然后输出 top 5 的 CPU 消耗的线程 thread -n 5 -i 5000 trace 命令查看方法内各调用...

    java8rt.jar源码-coderfun:《码农翻身》笔记

    多进程下为了解决内存地址覆盖的问题,需要记录每个程序的起始地址(基址寄存器),遇到与地址有关的指令,都要把地址加上基址寄存器的值,才是真实地址 分时系统 如果一个进程耗时很长,必须让出CPU去执行其他程序...

    新版Android开发教程.rar

    � 采用了对有限内存、电池和 CPU 优化过的虚拟机 Dalvik , Android 的运行速度比想象的要快很多。 � 运营商(中国移动等)的大力支持,产业链条的热捧。 � 良好的盈利模式( 3/7 开),产业链条的各方:运营商、...

    Loadrunner报错日志

    那就必须采用更加专业的工具来抓取出现问题的程序,主要是程序中执行效率很低的sql语句,weblogic可以采用introscope定位,期间可以注意观察一下jvm的垃圾回收情况看是否正常,我在实践中并发500用户和600用户时曾...

    Android最新资料以及源码

    共20个目标文件,CPU管理、内存管理、文件操作、进程监视管理、获取机子信息……等等。 10、Android触摸界面产生气泡的源码 如题,共1个目标文件。 11、Android读写文件源码 共1个目标文件,文件操作! 12、...

Global site tag (gtag.js) - Google Analytics