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来说其实主要的内存和CPU的使用主要集中在BE,但是实际运行环境中偶尔也会出现有的同学线上FE环境出现内存使用过高的问题。并且这种情况可能只出现在线上特点的环境上,想要线下复现难度很大,这个是时候...
因此对于Doris来说其实主要的内存和CPU的使用主要集中在BE,但是实际运行环境中偶尔也会出现有的同学线上FE环境出现内存使用过高的问题。并且这种情况可能只出现在线上特点的环境上,想要线下复现难度很大,这个是时候...
java的分析工具有:1.VisualVM,java应用程序性能分析和运行监控工具;...Arthas是一个java诊断工具,其采用命令行交互模式,提供了Tab键自动补全功能,且支持JDK 6+,可以自动检测存在的java进程。
功能说明一键式收集Java进程的问题定位信息,包括:Thread Stack和Heap Dump等。监控Java进程使用的CPU,当占用率过高时,自动收集Top信息和Thread Stack。启动、停止、查询、导出飞行记录。使用方法将工具上传到...
linux系统下,java进程使用CPU高,可利用此脚本抓取java进程的那个线程使用cpu高,集合thread dump,找到cpu高的线程编号来定位程序代码。使用方法 sh check_higcpu.sh $pid
Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...
Java 源码包 Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来...
说明:用于快速排查Java的CPU性能问题(top us值过高),自动查出运行的Java进程中消耗CPU多的线程,并打印出其线程栈,从而确定导致性能问题的方法调用。
单线程问题定位: 根据进程PID列线程列表top -Hp PID; jstack 打印占用资源较多线程代码位置 多线程问题定位:jstack快照所有线程;dump导出;使用jvisualvm分析dump文件 JVM分析:日志开启;GC日志打印;GC...
memoryAnalyzer可以分析Java进程内存情况,比如每个对象占用内存情况,对象个数,占用百分比,可依此分析后定位到代码哪里不合理; jemter用作压力测试,就是测试系统能够支撑的并发数 jvisualvm是jdk自带工具,...
APT提供了CPU利用率实时曲线图 多维度内存实时曲线图 方便竞品对比测试和定位内存泄露问题;支持进程内存构成分析 支持手工或超过阈值时自动转储 Dump 详细堆内存对象信息 支持多进程 支持生成和导出常用格式的的...
支持采集整个系统或指定进程(包括运行中的进程或直接启动的进程)的CPU Cycles性能事件,能够快速定位到热点函数,包括应用程序函数、模块函数与内核函数,甚至能够定位到热点指令。 支持热点函数按照CPU核/...
此命令通过结合Linux操作系统的ps命令和jvm自带的jstack命令,查找Java进程内CPU利用率最高的线程,一般适用于服务器负载较高的场景,并需要快速定位导致负载高的原因。
这样的需求可以说很常见,比如定位死锁,定位一个不工作的线程到底卡在哪里,或者定位为什么 CPU 居高不下等等问题。 现在工作中我用的是 Python,需要线上问题定位的缘故,也有了类似的需求——想要知道当前的 ...
java性能定位工具,Java -jar arthas-boot.jar启动后选择需要定位的进程序号,然后 最消耗cpu的线程 thread -n 3 收集 5 秒, 然后输出 top 5 的 CPU 消耗的线程 thread -n 5 -i 5000 trace 命令查看方法内各调用...
多进程下为了解决内存地址覆盖的问题,需要记录每个程序的起始地址(基址寄存器),遇到与地址有关的指令,都要把地址加上基址寄存器的值,才是真实地址 分时系统 如果一个进程耗时很长,必须让出CPU去执行其他程序...
� 采用了对有限内存、电池和 CPU 优化过的虚拟机 Dalvik , Android 的运行速度比想象的要快很多。 � 运营商(中国移动等)的大力支持,产业链条的热捧。 � 良好的盈利模式( 3/7 开),产业链条的各方:运营商、...
那就必须采用更加专业的工具来抓取出现问题的程序,主要是程序中执行效率很低的sql语句,weblogic可以采用introscope定位,期间可以注意观察一下jvm的垃圾回收情况看是否正常,我在实践中并发500用户和600用户时曾...
共20个目标文件,CPU管理、内存管理、文件操作、进程监视管理、获取机子信息……等等。 10、Android触摸界面产生气泡的源码 如题,共1个目标文件。 11、Android读写文件源码 共1个目标文件,文件操作! 12、...