linux下查找 java web 应用 cpu占用过高的方法
2014-06-19 10:51
567 查看
java性能调优里有cpu消耗分析,现在我把cpu使用过高的分析过程记录下来(一般分us过高,或者sy过高,本章中以us过高为例)
1、linux下使用top或者pidstat命令查看进程消耗情况,下图使用top命令
说明:
us使用过高,也叫用户空间占用cpu过高。进程为:31808
2、接下来我们查找占用cpu较高的线程。按shift+H 键,然后按回车,如下图
说明:
可以看到有两个线程较高,31849和31850
3、我们先查找31849线程过高的代码,先把它转化为16进制,可以使用printf %x xxx,如下图,转化后为7c69
4、最后使用jstack命令定位代码。其中 -A 4 是查找所在行的后4行,7c69为16进制线程pid。
最后,我们可以定位到ImportResThread的run方法。
下面为我测试用的线程类
原因:执行线程没有任何挂起动作,且一直执行,导致CPU 没有机会去调度执行其他的线程。导致us过高。
ps:sy过高的原因一般为线程数过过,竞争激烈,上下文切换频繁。
1、linux下使用top或者pidstat命令查看进程消耗情况,下图使用top命令
说明:
us使用过高,也叫用户空间占用cpu过高。进程为:31808
2、接下来我们查找占用cpu较高的线程。按shift+H 键,然后按回车,如下图
说明:
可以看到有两个线程较高,31849和31850
3、我们先查找31849线程过高的代码,先把它转化为16进制,可以使用printf %x xxx,如下图,转化后为7c69
4、最后使用jstack命令定位代码。其中 -A 4 是查找所在行的后4行,7c69为16进制线程pid。
最后,我们可以定位到ImportResThread的run方法。
下面为我测试用的线程类
原因:执行线程没有任何挂起动作,且一直执行,导致CPU 没有机会去调度执行其他的线程。导致us过高。
ps:sy过高的原因一般为线程数过过,竞争激烈,上下文切换频繁。
相关文章推荐
- linux(unix)下java应用占用cpu过高查找方法
- 如何在windows下查找java应用占用CPU过高
- 分析JAVA应用CPU占用过高的方法
- windows下查找java应用占用CPU过高问题
- linux下查找java进程占用CPU过高原因
- linux查看java应用CPU占用过高
- windows下查找java应用占用CPU过高问题
- java应用cpu占用过高问题分析及解决方法
- linux下查找java进程占用CPU过高原因
- linux下查找java进程占用CPU过高原因
- java web服务器cpu占用过高的处理 (2014-07-21 17:17:36)
- 分析JAVA应用CPU占用过高的问题
- java web服务器cpu占用过高的处理
- web应用部署到Linux服务器上,CPU占用过高
- 分析JAVA应用CPU占用过高的问题
- Linux主机下 java项目CPU占用过高分析
- 分析JAVA应用CPU占用过高的问题
- 分析JAVA应用CPU占用过高的问题
- 分析JAVA应用CPU占用过高的问题
- JAVA Linux 排查CPU 过高的方法