通过top和jstack确定哪些线程耗尽了CPU
- - 操作系统 - ITeye博客有时,线上集群load会突然飙升,无法响应正常请求. 那么引起load飙升的线程究竟在做什么. 可以通过top和jstack命令进行定位. 使用终端1进入目标机器,执行top命令,默认是进程视图,其中PID是进程号,截图如下:. 在这里,我们只能看到java进程占用CPU达到115%,那么究竟是那些线程非常耗CPU呢.
有时,线上集群load会突然飙升,无法响应正常请求。
那么引起load飙升的线程究竟在做什么?哪些线程霸占了CPU?可以通过top和jstack命令进行定位。
1. 使用终端1进入目标机器,执行top命令,默认是进程视图,其中PID是进程号,截图如下:
在这里,我们只能看到java进程占用CPU达到115%,那么究竟是那些线程非常耗CPU呢?
2. 由于我们要看到线程,在终端1,按下“H”键或者“shift+h”,top视图会切换到线程视图,其中PID是线程号,截图如下:
可以发现红框内的线程的CPU使用率非常高,占用CPU时间达到1秒左右,显然不正常,但是这些线程在做什么?
3.
以前碰到集群load飙升时,有时会束手无策,不知从何查起。以后再发生类似问题时,可以使用这个方法,看下究竟是那些线程在长时间占用CPU,尽快定位问题和解决问题。