问题描述:
生产环境下的某台tomcat7服务器,在刚发布时的时候一切都很正常,在运行一段时间后就出现CPU占用很高的问题,基本上是负载一天比一天高。
问题分析:
1,程序属于CPU密集型,和开发沟通过,排除此类情况。
2,程序代码有问题,出现死循环,可能性极大。
问题解决:
1,开发那边无法排查代码某个模块有问题,从日志上也无法分析得出。
2,记得原来通过strace跟踪的方法解决了一台PHP服务器CPU占用高的问题,但是通过这种方法无效,经过google搜索,发现可以通过下面的方法进行解决,那就尝试下吧。
解决过程:
1,根据top命令,发现PID为2633的Java进程占用CPU高达300%,出现故障。
2,找到该进程后,如何定位具体线程或代码呢,首先显示线程列表,并按照CPU占用高的线程排序:
[root@localhost logs]# ps -mp 190102633 -o THREAD,tid,time | sort -rn
显示结果如下:
USER %CPU PRI SCNT WCHAN USER SYSTEM TID TIME
root 10.5 19 - - - - 190103626 00:12:48
root 10.1 19 - - - - 190103593 00:12:16
找到了耗时最高的线程190123626,占用CPU时间有12分钟了!
将需要的线程ID转换为16进制格式:
[root@localhost logs]# printf "%x\n" 3626
e18
最后打印线程的堆栈信息:
[root@localhost logs]# jstack 2633 |grep 4a44e18 -A 30
将输出的信息发给开发部进行确认,这样就能找出有问题的代码。
相关文章
- 06-11苹果Mac如何限制进程 CPU 资源占用
- 06-11苹果Mac如何限制进程 CPU 资源占用?
- 06-11Windows10系统下wsappx占用CPU资源过高?wsappx是什么?如何关闭wsappx进程?
- 06-11Java进程cpu占用过高问题解决
- 06-11指定进程系统资源占用统计脚本,cpu、内存、IO、EPS
- 06-11linux下查java进程的那个线程占用CPU过高原因
- 06-11Gnome桌面tracker进程占用大量磁盘与cpu以及内存资源问题处理
- 06-11Docker 容器内分析 java程序占用 cpu 高问题排查分析
- 06-11PHP-CGI进程占用过多CPU
- 06-11linux进程资源占用高原因分析命令记录