java进程CPU飙高
2018-01-24 09:36
155 查看
生产环境下的某台jboss服务器,在刚发布时的时候一切都很正常,在运行一段时间后就出现CPU占用很高的问题,基本上是负载一天比一天高。
开发那边无法排查代码某个模块有问题,从日志上也无法分析得出。
解决过程:
1,根据top命令,发现PID为2633的Java进程占用CPU高达300%,出现故障。
2,找到该进程后,如何定位具体线程或代码呢,首先显示线程列表,并按照CPU占用高的线程排序:
[root@localhost logs]# ps -mp 2633 -o THREAD,tid,time | sort -rn显示结果如下:
USER %CPU PRI SCNT WCHAN USER SYSTEM TID TIME
root 10.5 19 - - - - 3626 00:12:48
root 10.1 19 - - - - 3593 00:12:16
找到了耗时最高的线程3626,占用CPU时间有12分钟了!将需要的线程ID转换为16进制格式:
[root@localhost logs]# printf "%x\n" 3626
e18
3.也可以用 top -H -p pid 来查看 cpu飙高的线程id
最后打印线程的堆栈信息:
[root@localhost logs]# jstack 2633 |grep e18 -A 30
生产环境下的某台tomcat7服务器,在刚发布时的时候一切都很正常,在运行一段时间后就出现CPU占用很高的问题,基本上是负载一天比一天高。
开发那边无法排查代码某个模块有问题,从日志上也无法分析得出。
解决过程:
1,根据top命令,发现PID为2633的Java进程占用CPU高达300%,出现故障。
2,找到该进程后,如何定位具体线程或代码呢,首先显示线程列表,并按照CPU占用高的线程排序:
[root@localhost logs]# ps -mp 2633 -o THREAD,tid,time | sort -rn显示结果如下:
USER %CPU PRI SCNT WCHAN USER SYSTEM TID TIME
root 10.5 19 - - - - 3626 00:12:48
root 10.1 19 - - - - 3593 00:12:16
找到了耗时最高的线程3626,占用CPU时间有12分钟了!将需要的线程ID转换为16进制格式:
[root@localhost logs]# printf "%x\n" 3626
e18
最后打印线程的堆栈信息:
[root@localhost logs]# jstack 2633 |grep e18 -A 30
开发那边无法排查代码某个模块有问题,从日志上也无法分析得出。
解决过程:
1,根据top命令,发现PID为2633的Java进程占用CPU高达300%,出现故障。
2,找到该进程后,如何定位具体线程或代码呢,首先显示线程列表,并按照CPU占用高的线程排序:
[root@localhost logs]# ps -mp 2633 -o THREAD,tid,time | sort -rn显示结果如下:
USER %CPU PRI SCNT WCHAN USER SYSTEM TID TIME
root 10.5 19 - - - - 3626 00:12:48
root 10.1 19 - - - - 3593 00:12:16
找到了耗时最高的线程3626,占用CPU时间有12分钟了!将需要的线程ID转换为16进制格式:
[root@localhost logs]# printf "%x\n" 3626
e18
3.也可以用 top -H -p pid 来查看 cpu飙高的线程id
最后打印线程的堆栈信息:
[root@localhost logs]# jstack 2633 |grep e18 -A 30
生产环境下的某台tomcat7服务器,在刚发布时的时候一切都很正常,在运行一段时间后就出现CPU占用很高的问题,基本上是负载一天比一天高。
开发那边无法排查代码某个模块有问题,从日志上也无法分析得出。
解决过程:
1,根据top命令,发现PID为2633的Java进程占用CPU高达300%,出现故障。
2,找到该进程后,如何定位具体线程或代码呢,首先显示线程列表,并按照CPU占用高的线程排序:
[root@localhost logs]# ps -mp 2633 -o THREAD,tid,time | sort -rn显示结果如下:
USER %CPU PRI SCNT WCHAN USER SYSTEM TID TIME
root 10.5 19 - - - - 3626 00:12:48
root 10.1 19 - - - - 3593 00:12:16
找到了耗时最高的线程3626,占用CPU时间有12分钟了!将需要的线程ID转换为16进制格式:
[root@localhost logs]# printf "%x\n" 3626
e18
最后打印线程的堆栈信息:
[root@localhost logs]# jstack 2633 |grep e18 -A 30
相关文章推荐
- 生产环境下JAVA进程高CPU占用故障排查
- 使用tomcat java进程占用cpu偏高的原因
- Java获取系统信息(cpu,内存,硬盘,进程等)的相关方法 .
- linux下查找java进程占用CPU过高原因
- JAVA进程高CPU占用故障排查
- Linux下java进程CPU占用率高分析方法
- java进程cpu过高原因整理
- 读取 cpu百分比 进程占用cpu百分比的JAVA实现方式
- 使用tomcat java进程占用cpu偏高的原因
- 生产环境下JAVA进程高CPU占用故障排查
- java进程CPU占用高的问题排查
- 分析占用了大量 CPU 处理时间的是Java 进程中哪个线程
- Java获取系统信息(cpu,内存,硬盘,进程等)的相关方法
- 生产环境下JAVA进程高CPU占用故障排查
- JAVA进程高CPU占用故障排查
- Linux下java进程CPU占用率高如何定位问题
- 查看JAVA进程中哪个线程CPU消耗最高
- JAVA进程高CPU占用故障排查
- 如何找到 Java 进程中哪个线程占用了大量 CPU 处理时间
- Java获取系统信息(cpu,内存,硬盘,进程等)的相关方法