JSTACK 分析线程

个人博客: https://blog.joden123.top
原文地址:https://blog.joden123.top/2019/02/11/Java/jstack-cpu/

写在前面

记录 CPU 占用100%,如何根据 java 线程情况定位到问题所在

查找 tomcat 线程

可以通过两种方式找:

  • jps

    一般Bootstrap都是tomcat的
    JSTACK 分析线程_第1张图片

  • ps -ef |grep tomcat

    JSTACK 分析线程_第2张图片

jstack dump 出线程

jstack 23524 > jstack.txt

查看 tomcat 内部线程

top -H -p 23524

(shift+p 按 cpu 排序,shift+m 按内存排序)

JSTACK 分析线程_第3张图片

将PID换算成16进制,然后在jstack.txt查找nid=0x换算后的数

cat jstack.txt | grep 'nid=0x5be9' -B 5 -A 40

JSTACK 分析线程_第4张图片

发现频繁的GC,推测是不是数据库在频繁的开关导致,因此检查 tomcat jndi是否没配置数据库连接池参数

加上连接池参数

JSTACK 分析线程_第5张图片

参考

jstack分析cpu负载过高原因:

https://blog.csdn.net/u010248330/article/details/80080605

jstack: Java占用高CPU分析之- GC Task Thread:

https://blog.csdn.net/chenxiusheng/article/details/74007040

你可能感兴趣的:(Java)