zoukankan      html  css  js  c++  java
  • 生产环境出现CPU占用过高,分析思路和定位

    top 定位cpu占比高的pid
    jps -l 定位具体是后台哪个应用程序
    ps -mp 进程id -o(自定义格式) THREAD,tid,time 定位当前进程所有线程占用cpu时间高的线程id
    jstack 进程id | grep tid(线程id转换为英文小写16进制格式) -A行数 定位到具体某一行代码引起的

    案例演示

    程序跑一下

    开始进行定位分析

     

     

    线上系统的CPU负载过高的两个常见场景

    第一个场景:是你自己在系统里创建了大量的线程, 这些线程同时并发运行,而且工作负载都很重,过多的线程同时并发运行就会导致你的机器CPU负载过重

    第二个场景:就是你的机器运行的JVM在执行频繁的Full GC, Full GC 是非常耗费CPU资源的, 它是一个非常负载的过程,所以一旦你的JVM有频繁的Full GC,

          带来的一个明显感觉,一个是系统可能会时不时的卡死, 因此Full GC 会带来一定的"Stop the world" 问题, 一个是机器的CPU负载过高.

          所以一旦知道CPU负载过高的两个原因,就容易排查了

    首先看一下JVM Full GC 的频率 通过jstat,或者是监控平台, 很容易看到现在Full GC频率, 如果是Full GC频繁,那就是Full Gc引起的CPU负载过高

    如果Full GC频率很正常, 那就肯定是你的系统创建了过多线程在并发执行负载很重的任务了

  • 相关阅读:
    团队项目-第一阶段冲刺2
    团队项目-第一阶段冲刺1
    第九周总结
    梦断代码阅读笔记02
    第八周总结
    团队会议个人领取任务
    梦断代码阅读笔记01
    Spring Boot 揭秘与实战(二) 数据缓存篇
    Spring Boot 揭秘与实战(二) 数据缓存篇
    Spring Boot 揭秘与实战(二) 数据缓存篇
  • 原文地址:https://www.cnblogs.com/wgDream/p/12841923.html
Copyright © 2011-2022 走看看