栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【Arthas性能排查系列(二)】CPU飙高排查思路

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【Arthas性能排查系列(二)】CPU飙高排查思路

全局监控 dashboard,先来查看一下总览:

1、首先查看一段简单的模拟CPU飙高的代码
fun cpuHigh() {
    Thread {
        while (true) {
            println("cpu飙升中~")
        }
    }.start()
}
2、运行项目,运行Arthas,找到自己当前项目对应的PID进行监听

3、使用 thread 命令,排查当前项目中的各个运行中方法的CPU占用率情况

可见图中,ID=11的线程CPU占用率很高,达到66.09%

由这里可知,Java的状态共分为6种:NEW: 0, RUNNABLE: 9, BLOCKED: 0, WAITING: 4, TIMED_WAITING: 2, TERMINATED: 0

4、使用 thread -[id] 命令,继续查看这个线程具体是哪个方法所导致的CPU占用率过高

由图可见,id=11的任务处于RUNNABLE状态,且CPU占用率高的主要原因是因为一直进行FileOutputStream操作,也就是输出流操作,并且定位代码在 TestMain.kt 中的第28行执行了这个高CPU占用率的方法,而导致的,再来看下代码

5、使用 thread -n -[数量] 命令,查看CPU占用率为前三的线程

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1007465.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号