1、通过top命令发现 cpu高的进程
根据top命令,发现PID 为22143的Java进程占用CPU 17.8%
2、根据cpu高的进程,查找引起cpu高的线程
命令:ps -mp 22143 -o THREAD,tid,time|sort -k1 -nr|head -15
方案二:
top -H -p pid
这样是是看pid对应下的线程对应的的cpu 占用率,可以定位到cpu高的线程
(这个图是后补的)
3、收集进程的堆栈信息上下文
jstack -F pid >data.txt 即可把线程的堆栈信息统计到 文件中
注意:jstack -F 这个 -F参数,最好不加,因为加上-F打印的线程挂起的栈信息
4、根据线程id定位代码
查找22328 线程对应的线程:
注意:不是每次jstack 都能拿到cpu 高的线程,我试验的时候,不是每次都能的。
如果没有加 -F 参数,输出的如下:
可以通过
echo "ibase=10;obase=16;22328"|bc
输出:0x5738
"main" prio=10 tid=0x00007f52fc008800 nid=0x5738 waiting for monitor entry [0x00007f53032b1000]
java.lang.Thread.State: BLOCKED (on object monitor)
at Test.main(Test.java:26)
- waiting to lock <0x00000000eb64c2d8> (a java.util.HashMap)
参考:http://www.blogjava.net/hankchen/archive/2012/05/09/377735.html
(1)load average:此值反映了任务队列的平均长度;如果此值超过了CPU数量,则表示当前CPU数量不足以处理任务,负载过高
(2)%us:用户CPU时间百分比;如果此值过高,可能是代码中存在死循环、或是频繁GC等
(3)%sy:系统CPU时间百分比;如果此值过高,可能是系统线程竞争激烈,上下文切换过多,应当减少线程数
(4)%wa:等待输入、输出CPU时间百分比;如果此值过高,说明系统IO速度过慢,CPU大部分时间都在等待IO完成
(5)%hi:硬件中断CPU百分比;当硬件中断发生时,CPU会优先去处理硬件中断;比如,网卡接收数据会产生硬件中断
(6)swap used:被使用的swap;此值过高代表系统因为内存不足在进行频繁的换入、换出操作,这样会影响效率,应增大内存量
(7)%CPU:进程使用CPU的百分比;此值高表示CPU在进行无阻塞运算等
- 大小: 26 KB
- 大小: 13.2 KB
- 大小: 7.3 KB
- 大小: 18 KB
- 大小: 12.2 KB
- 大小: 23.6 KB
分享到:
相关推荐
用于快速排查Java的CPU性能问题(top us值过高),自动查出运行的Java进程中消耗CPU多的线程,并打印出其线程栈,从而确定导致性能问题的方法调用。 目前只支持Linux。原因是Mac、Windows的ps命令不支持列出进程的线程...
cpu占用过高,服务器卡死,问题排查 java进程占用CPU过高常见的两种情况: 代码中有死循环或者接近死循环的操作 快速创建大量临时变量,导致频繁触发gc回收 问题解决: 1、用top命令找到cpu占用率最高的进程号是...
java进程高CPU占用故障排查
线上Java应用,在业务高峰期的时候经常出现CPU跑高,需要查看实时的线程占用cpu情况,下面是一个很好用的脚本,可以快速导出每个线程的占用CPU情况,结合jstack日志,排查到具体的线程类名。 一、首先获得jvm的进程...
下面将针对磁盘不足、CPU 过高和 Tomcat假死三种常见的问题进行排查思路和命令案例的讲解。 1. 磁盘不足 当磁盘不足时,应用会抛出异常。排查思路包括: 1.1.2.1 利用 df 查询磁盘状态,结果是: ``` df -h ``` ...
第2章介绍Java并发编程的底层实现原理,介绍在CPU和JVM这个层面是如何帮助Java实现并发编程的。 第3章介绍深入介绍了Java的内存模型。Java线程之间的通信对程序员完全透明,内存可见性问题很容易困扰Java程序员,本...
第2章Java并发编程的底层实现原理,从CPU和JVM2个层面剖析。第3章详细深入介绍了Java的内存模型。第4章从介绍多线程技术带来的好处开始,讲述了如何启动和终止线程以及线程的状态,详细阐述了多线程之间进行通信的...
本书对原理的剖析不仅仅局限于Java层面,而是深入到JVM,甚至CPU层面来进行讲解,帮助读者从更底层看并发技术。本书结合线上应用,给出了一些并发编程实战技巧,以及线上处理并发问题的步骤和思路。读者对象·Java...
本文将分享关于内存溢出导致的服务器崩溃问题,包括问题现象、问题排查、问题分析、问题原因、什么是内存溢出、内存溢出可能的原因、相关总结等内容。 问题现象: 在生产环境中,服务器的CPU经常飙升至700%、800%,...
提供有丰富的监控功能:OS监控(内存状态、CPU负载、磁盘IO吞吐率、磁盘健康状态、网卡IO等)、JVM监控(内存、线程、GC、类加载器等),还提供生成火焰图、Java代码热更、反编译功能,支持以服务形式对外提供接口...
如果需要扩展新的功能(例如输出jvm的cpu占用,内存大小等),只需要实现spi中的 com.github.jobop.anylog.spi.TransformDescriptor 和com.github.jobop.anylog.spi.TransformHandler接口, 然后把实现的...
此命令通过结合Linux操作系统的ps命令和jvm自带的jstack命令,查找Java进程内CPU利用率最高的线程,一般适用于服务器负载较高的场景,并需要快速定位导致负载高的原因。
JVM 课程的代码 根据韩顺平老师的 java数据结构与算法 课程的代码 根据牛客网的编程初学者入门训练按从入门到困难分类写的代码 根据牛客网的剑指Offer按从入门到困难分类写的代码 下面代码我会用√的方法表示代码...
乐观锁悲观锁等)、唯一索引和普通索 引的区别聊到了changeBuffer,聊了页分裂合页合并)比重较大 3)jvm调优(可达性分析算法中根节点有哪些、cms和G1区别、怎样GC调优、 怎样排查CPU彪高、内存彪高、逃逸分析) 4...
一个高性能的后端系统可以提高用户体验、增加系统的可扩展性和可维护性、本降低系统的运营成本。今天我们将讨论六种常用的后端性能优化方式:缓存化、服务化、异步化等。 一、硬件升级 硬件升级是后端性能优化的...