jvm虚拟机性能调优实战-第一章-java项目CPU占用100%线上排查方法

一、场景

linux下使用top命令发现cpu占用高的java项目及进程id
在这里插入图片描述

二、案例代码

编写死循环代码

在这里插入图片描述

启动脚本start.sh

在这里插入图片描述

在启动脚本中加入了JMX的端口是9998

二、检查诊断

1、查看java线程使用资源情况

top -Hp pid

top -Hp 8622

8622是进程id

在这里插入图片描述

我们发现当前有5条线程的cpu占用很高

2、定位代码

方法1、使用linux命令

1)、找到对应的线程之后,比如是8688占用高,则通过命令转换16进制
printf '%x' 8688
# 得到
21f0
2)、用jstack保存现场
jstack 8688 > /tmp/8688.txt
3)、vim打开8688.txt
# 用斜杆/搜索21f0

最终定位到我们自己的代码

方法2、使用JDK可视化工具jvisualvm工具定位代码

找到工具

在jdk的安装路径中找到该工具,例如:D:\Program Files\Java\jdk1.8.0_151\bin
在这里插入图片描述

连接jmx

在java程序的start.sh中已经配置了jmx,且端口是9998
在这里插入图片描述
切换到线程页面,发现了我们自己写的线程
在这里插入图片描述

通过线程Dump分析线程及定位代码行

在这里插入图片描述
将上述Dump信息拷贝到文本,用文本编辑器打开搜索我们自己的包名
在这里插入图片描述

代码已经定位到DeadLoopController.java的第59

特别感谢参考:https://www.ixigua.com/6842644783408611851?id=6842129797049483780&logTag=b175c62ffa380a3617ea

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
阿里巴巴Java性能调优华山版是一套系统性能调优教程,!通过这份笔记的学习,你将会有一个系统的调优头脑和策略!快了何止100%?需要的朋友可下载试试! 众所周知性能调优可以使系统稳定,用户体验更佳,甚至在比较大的系统中,还能帮公司节约资源。 但是在项目的开始阶段,没有必要过早地介入性能优化,只需在编码的时候保证其优秀、高效,以及良好的程序设计。 在完成项目后,就可以进行系统测试了,可以将以下性能指标,作为性能调优的标准,响应时间、吞吐量、计算机资源分配使用率、负载承受能力。 本教程结合 Java 应用开发的知识点,将内容分为七大模块,从上到下依次详解 Java 应用服务的每一层优化实战: 模块一,概述。 模块二,Java 编程性能调优。 模块三,多线程性能调优。 模块四,JVM 性能监测及调优。 模块五,设计模式调优。 模块六,数据库性能调优。 模块七,实战演练场。 性能优化手册是一套java性能学习研究小技巧,包含内容:Java性能优化、JVM性能优化、服务器性能优化、数据库性能优化、前端性能优化等。 内容包括但不限于: String 性能优化的 3 个小技巧 HashMap 7 种遍历方式的性能评测与优化 If / switch 性能评测 switch 性能优化 JVM 性能优化 MySQL性能优化的 50+ 小技巧 Redis 性能优化的 13 个小技巧 . . . 每篇文章图文并茂,附有源码 + 性能评测结果 + 优化方案。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值