zoukankan      html  css  js  c++  java
  • CPU利用率高,如何排查?

    CPU利用率高,可能的原因

    代码中有比较耗CPU的操作,比如循环等(重点关注)
    1. 查看当前CPU消耗过高的进程
    2. 通过进程ID,找到哪些线程CPU过高
    3. 通过jstack查看当前线程具体的堆栈信息
    Full GC 次数过多(重点关注)
    • 线上多个线程的CPU都超过了100%,通过jstack命令可以看到这些线程主要是垃圾回收线程
    • 通过jstat命令监控GC情况,可以看到Full GC次数非常多,并且次数在不断增加。
    可能原因
    • 代码中一次获取了大量的对象,导致内存溢出,此时可以通过eclipse的mat工具查看内存中有哪些对象比较多;
    • 内存占用不高,但是Full GC次数还是比较多,此时可能是显示的 System.gc()调用导致GC次数过多,这可以通过添加 -XX:+DisableExplicitGC来禁用JVM对显示GC的响应。
    参考命令
    1. top 查看进程
    2. top -Hp [pid] 查看线程
    3. printf "%x
    " [tid] 线程ID转为16进制
    4. jstack [pid] |grep [tid] -A 30 打印线程的堆栈信息
    5. jstack -gcutil [pid] [interval] [count] 查看GC相关区域的使用率(utilization)统计,重点关注FGC指标
    

    参考

    1. https://www.cnblogs.com/java-stack/p/11952016.html
  • 相关阅读:
    shell 脚本判断linux 的发行版本
    notepad++ 正则学习记录
    360 加固分析
    Android的静默安装
    Linux下调整根目录的空间大小
    linux 隐藏权限
    i针对网段开放端口 (命令行设置)
    python 删除文件/夹
    字符串截取
    echo 不换行
  • 原文地址:https://www.cnblogs.com/zendwang/p/solve-cpu-usage-high-question.html
Copyright © 2011-2022 走看看