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

     线上项目运行时,出现问题不像在本地那么容易排查,经常需要借助日志、或者一些工具来找出问题。cpu被占满我们经常会遇到。比如我们有这样一段代码:

     1 public Class Demo1_16 {
     2 
     3     public static void main(String[] args) {
     4 
     5         new Thread(null, () -> {
     6         System.out.println("...");
     7         while(true) {
     8             
     9         }
    10      }, "thread1").start;
    11    }
    12 }

    具体排查方法就是:

    • top 命令定位进程,比如图中32655进程占用了97.7%

    • 接着可以用 "ps H -eo pid, tid, %cpu | grep 进程id" 命令定位具体线程

    • 最后用jvm命令  "jstack 进程id" ,根据线程id找到有问题的线程(10进制转换为16进制),具体到源代码行数。"thread3"这样开头的是我们自己写的程序,其他样式的是虚拟机线程,名称是固定的。

    接着要将进程id转换为16进制,比如 32655 --> 0x7f99,也就是 “thread1”,具体到第8行代码有问题, 就是while死循环的问题。

  • 相关阅读:
    揭秘富人的22种习惯与风格
    CSS
    浏览器--编辑器
    3 位运算 , 补码 ----在开发中比较少用
    2 Java数据类型+转义字符
    1 概述
    如何使用大脑
    JDBC
    web.xml文件的作用
    WindowBuilder插件探索
  • 原文地址:https://www.cnblogs.com/fly-bryant/p/13260286.html
Copyright © 2011-2022 走看看