大数跨境

Java项目性能瓶颈分析及定位(七)——Java线程堆栈分析(四)

Java项目性能瓶颈分析及定位(七)——Java线程堆栈分析(四) 慧测
2017-08-14
1
导读:Java项目性能瓶颈分析及定位系列文章——CPU消耗过高的线程及代码定位

扫描二维码,报名慧测免费公开课




上篇文章的目标是让大家看懂基本的堆栈信息,同时也搞清楚了Java线程本地线程的关系,上篇文章有同学问到,为啥要学习他们之间的关系呢?这就是原因之一——定位cpu消耗过高的Java线程,OK,开始今天的话题!


定位消耗CPU过高的线程


  1. 在linux终端输入top命令查看消耗cpu比较高的进程


如下图:找到PID=17339的进程,消耗了10.3%的CPU资源,排在第一位。


  1. 使用top -p 17339命令单独监控该进程


  1. 在这个界面上输入大写的H,列出当前进程下的所有线程


  2. 找到消耗cpu比较高的线程,获取到该线程编号是,17340


  1. 使用jstack 17339对当前Java进程做dump,获取Java线程堆栈信息,摘取部分信息如下:


  1. 第4步获取的线程编号17340转换成十六进制是:43bc


  2. 5获取的堆栈信息里面查找nid=0x43bc的线程


  3. 根据上篇文章的堆栈读取思路定位代码瓶颈位置。


最后附上简单的案例源代码(课堂上的项目比这个复杂,这里主要是为了说明思路,大家方便理解)


本着学习交流之目的,如有错误或不当之处,欢迎批评指正,共同进步!







2017年8月16日起,慧测免费公开课系列正式开启——

连续两个月的Java语言+Selenium实战尽在慧测腾讯课堂!


  • 软件测试工程师专属的Java语言学习盛宴!

  • 紧密围绕性能测试、自动化测试、测试开发所必备的Java编程知识讲解!

  • 为后续一个月免费的Selenium实战课程学习做准备!


本系列公开课报名地址:

https://ke.qq.com/course/229575#tuin=3e1d63a


或者扫描下方二维码直接报名


感谢您关注慧测:

慧测官网:www.huicewang.com
慧测公开课服务群: 623636110

课程咨询微信/QQ:18518511087/2657535456

公众号:慧测



【声明】内容源于网络
0
0
慧测
专注人工智能前沿技术落地企业实战应用
内容 404
粉丝 0
慧测 专注人工智能前沿技术落地企业实战应用
总阅读104
粉丝0
内容404