请问java性能调优过程中,如何查询java进程中所占用的CPU最高、耗时最长的线程使用情况?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在Java性能调优过程中,查询Java进程中占用CPU最高、耗时最长的线程使用情况可以通过以下几种方法进行:
su - admin
命令以切换至admin用户。edas busy-threads
查看默认前5个高CPU使用率线程。edas busy-threads 2 5
edas busy-threads -p [$JVM_PID]
edas busy-threads -c 10
edas busy-threads --current
wget --no-check-certificate https://raw.github.com/oldratlee/useful-scripts/release/show-busy-java-threads
获取脚本。chmod +x show-busy-java-threads
后,运行./show-busy-java-threads
来找出高CPU占用线程。thread -n 3
,展示当前JVM中CPU占用排名前三的线程及其堆栈信息。top -Hbp [$JVM_PID] -d 1 -n 1 >> top.[$JVM_PID].txt && jstack [$JVM_PID] >> jstack.[$JVM_PID].txt
收集数据。top.XXX.txt
文件中找到CPU占用最高的线程ID。printf %x [$Thread_ID]
)。jstack.XXX.txt
中搜索该十六进制线程ID,定位具体线程的堆栈信息。以上方法可以帮助您有效识别和分析Java应用中占用CPU资源最多的线程,进而进行针对性的性能优化。