jvm调优有什么技巧?
作者:卡卷网发布时间:2025-01-10 19:22浏览数量:106次评论数量:0次
场景一、CPU过高
CPU占用过高排查思路:(查进程->查线程列表->查线程堆栈)
<>step1:通过top命令查询占用CPU情况>
p.s.shift+p(大写的P-cpu排序)shift+m(大写的M-内存排序)
<>step2:通过进程pid,查询对应的线程列表>
<>step3:线程id转为十六进制>
从step2中可以看到占用cpu较高的线程id,打印出十六进制
<>step4:通过jstack查出线程栈信息>
cpu过高主要是线程方面的问题,我们知道jvm中每个线程都分配了单的栈,我们可以通过jstack查看线程栈情况。
p.s.这里的pid为进程id,也就是第一步top中的pid
对照着step3中占用cpu最高的线程十六进制值可以定位到线程的栈信息。
上图可以看到具体定位到了ja的代码,就可以具体分析一下这个ja代码为什么会创建大量的线程占用大量的cpu。
除了ja程序线程问题,cpu过高也可能是线程死锁造成的,我们通过jstack也可以查看线程死锁的情况。
<>step5:通过jstack查看情况死锁情况>
你 发表评论:
欢迎