zoukankan      html  css  js  c++  java
  • CPU使用率过高问题定位

    1 CPU使用率过高问题定位

    1.1 配合使用top+jstack定位(重要)

    首先使用top找到CPU使用率最高的进程。

    image

    接着查看36032进程的线程情况。

    top -Hp 36032
    

    image

    找到36044线程CPU占用率最高,然后将线程号转为16进制。

    # printf %x 36044
    8ccc
    

    最后,使用jstack dump 36032进程的日志到1.txt文件。匹配8ccc之后打印后面30行,从而定位到问题代码行数。

    # jstack 36032 > 1.txt
    # cat 1.txt | grep -A 30 8ccc  
    

    image

    备注:top定位的线程号是十进制的,而jstack dump出来的是十六进制的。

    1.2 使用JMC查看线程情况

    利用JFR动态监控出线程情况。

    1.3 CPU使用过高的场景

    1. 使用无限循环==>尽量避免
    2. 频繁GC,GC线程争用CPU资源==>降低GC频率
    3. 频繁创建新对象==>合理使用单例以及线程池
    4. 序列化和反序列化(例如解析操作)==>选用合理的API实现;选用好用的类库
    5. 不合理地使用正则表达式(正则表达式引擎在进行字符匹配时会发生回溯)==>尽量使正则匹配不回溯。
      1. blog.csdn.net/ityouknow/article/details/80851338
    6. 频繁的线程上下文切换。==>业务改造,减低频率。
    版权声明:本文为博主原创文章,未经博主允许不得转载。
  • 相关阅读:
    Python-append()/extend()
    HTML标签
    字符实体
    css选择器
    边框属性
    背景属性
    文本属性
    字体属性
    给标签起名字
    JS数据类型
  • 原文地址:https://www.cnblogs.com/dtyy/p/15758974.html
Copyright © 2011-2022 走看看