zoukankan      html  css  js  c++  java
  • Java服务CPU占用高问题定位方法

    1. 概述

    提供一种简单的方法来定位CPU高的问题。

    1. 找到CPU高的进程,比如232543;
    2. 执行top -H -p pid,找到占用CPU最高的线程号,比如232544,转换成16进制38c60;
    3. 执行jstack 232543 > 232543.log用来dump出目前代码栈;
    4. 从232543.log中根据线程号38c60查找其中的线程相应的代码栈,则可快速定位相应的业务代码;

    2. 步骤

    2.0 模拟CPU占用的例子

    public class Cpu {
    
        public static void main(String[] args) throws InterruptedException {
            int busyTime = 10;  
            int idleTime = busyTime;  
              
            while(true){  
                long startTime = System.currentTimeMillis();  
                //busy loop:  
                while((System.currentTimeMillis()-startTime)<=busyTime)  
                    ;  
                Thread.sleep(idleTime);  
            }  
        }
    
    }

    直接编译运行,CPU就会有大约50%的占用。

      

    2.1 找到占用CPU高的进程

    执行top命令,找到CPU高的进程232543

    2.2 执行top -H -p pid,找到占用CPU最高的线程号232544,转换成16进制38c60

    2.3 执行jstack 232543 > 232543.log用来dump出目前代码栈

    2.4 从232543.log中根据线程号38c60查找其中的线程相应的代码栈,则可快速定位相应的业务代码

  • 相关阅读:
    MarkDownPad2 注册码
    如何让你的.vue在sublime text 3 中变成彩色?
    字典树入门
    博弈论
    复杂度问题
    gets scanf以及缓冲区域的问题
    对象
    矩阵转置的一般算法
    二叉树的建立、遍历、叶子节点计数、深度计算
    D
  • 原文地址:https://www.cnblogs.com/lujiango/p/8898569.html
Copyright © 2011-2022 走看看