• 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行出现问题

  • 相关阅读:
    实验六:空间耗尽故障
    实验四 :重置root密码
    实验三:误删boot恢复
    实验二: grub引导故障修复
    实验一 :MBR扇区故障系统备份与还原
    chapter07
    chapter06
    chapter05
    转-SQL数据库中把一个表中的数据复制到另一个表中
    Howto: 如何通过IIS7为ArcGIS Server配置反向代理系统架构
  • 原文地址:https://www.cnblogs.com/wanjun-top/p/12613752.html
Copyright © 2020-2023  润新知