定位tomcat占用CPU过高的原因

1、top命令拿到tomcat的pid,按“shift+P”键按照cpu从高到低排列,按“shift+M”键按照内存用高到低排列

2、根据pid定位占用cpu的线程,并按照占用从高到低排列

    ps -mp $PID -o THREAD,tid,time|sort -rn|head -10
示例:
USER     %CPU PRI SCNT WCHAN  USER SYSTEM   TID     TIME
root      8.3  19    - poll_s    -      - 17978 00:19:12
root     44.3   -    - -         -      -     - 01:42:27
root      1.8  19    - futex_    -      - 15914 00:04:21
root      1.7  19    - futex_    -      - 15915 00:04:03
root      1.7  19    - futex_    -      - 15913 00:04:03
root      0.5  19    - futex_    -      - 15916 00:01:10
root      0.4  19    - futex_    -      - 15909 00:01:01
root      0.4  19    - futex_    -      - 15908 00:01:04
root      0.4  19    - futex_    -      - 15907 00:01:05

3、将占用cpu高的线程id转换为16进制格式

    printf "%x\n" $TID

4、最后打印线程的堆栈信息

    jstack $PID |grep $TID -A 30

5、检查输出的代码信息


其它:

1.显示占用端口的进程
lsof -i:8080

2.查看进程的gc信息
jstat -gcutil $PID

3.输出线程数
ps -mp $PID -o THREAD,tid,time | wc -l
添加新评论