zoukankan      html  css  js  c++  java
  • CENTOS7-JAVA模拟CPU占用高及排查( 转)

    环境

    centos7 1核2GB

    Java8

    模拟cpu占用高

    新建一个名为jvm-learn的springboot项目

    模拟代码如下

    复制代码
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    @RestController
    @SpringBootApplication
    public class JvmLearnApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(JvmLearnApplication.class, args);
        }
    
        @GetMapping("cpu")
        public void cpu() {
            while (true) {
    
            }
        }
    
    }
    复制代码

    打包

    在项目根目录下执行如下命令:

    mvn clean package -Dmaven.test.skip=true

    启动jar包

    nohup java -jar jvm-learn-0.0.1-SNAPSHOT.jar &

     

    访问

    curl localhost:8080/cpu

    排查

    查看占用cpu高的进程 

    top

    如下图:可看出PID为7149的java进程占用cpu最高,达到了98%

     查看进程中最耗cpu的子线程

    top -p 7149 -H

    如下图:可看出PID为7166的线程占用cpu最高,达到了97.7%

    将最耗cpu的线程id转换为16进制输出

     printf "%x 
    " 7166

     

     查询具体出现问题的代码位置

    jstack 7149 | grep 1bfe -A 30

     如下图:可看出是JVMLearnApplication类的第18行出现问题

     转:https://www.cnblogs.com/zuidongfeng/p/10019262.html
     
  • 相关阅读:
    ftp
    字符串
    A函数跨区域
    树状结构
    easyUI的基础布局easyui-accordion
    easyUI的基础布局
    sql server 下载安装标记
    (办公)记事本_Linux常用的目录命令
    (办公)记事本_Linux目录
    (办公)记事本_购买域名
  • 原文地址:https://www.cnblogs.com/q149072205/p/11272364.html
Copyright © 2011-2022 走看看