zoukankan      html  css  js  c++  java
  • cpu占用高如何排查

    记录一次线上服务器出现cpu占用过高,避免之后再次出现相关问题,这里记录一下

    用代码模拟cpu 占用过高进行排查

    新建一个web项目,这里以springboot为例子新建一个web项目

    package com.wanjun.jvm;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    @SpringBootApplication
    @RestController
    public class JvmApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(JvmApplication.class, args);
        }
        //这里写个死循环 模拟 cpu 占用
        @RequestMapping("/cpu")
         public String testCpu() { 
            System.out.println("request cpu");
            while (true) {
                
            }
         }
    }

    将项目部署到linux 服务器上

    启动项目

     

    访问
    curl localhost:8080/cpu
     
    排查
    查看占用cpu高的进程 
    top
    如下图:可看出PID为4060的java进程占用cpu最高,达到了99.5%
    查看子进程情况:
    top -p 4606 -H  

    将 子进程id 转换成16进制

    printf "%x " 4648

     

     查询具体出现问题的代码位置
     jstack 4606|grep 1228 -C 30
     如下图:可看出是JvmApplication类的第19行出现问题

  • 相关阅读:
    maven配置
    redis测试
    智慧社区技术总结
    视频导航
    Delphi 任务栏中不显示窗口
    Delphi 设置程序图标为系统默认图标
    清除Windows系统图标缓存
    C/C++ 变量的本质分析
    005 C/C++ 数据类型_void
    004 C/C++ 数据类型_类型别名
  • 原文地址:https://www.cnblogs.com/wanjun-top/p/12613752.html
Copyright © 2011-2022 走看看