美文网首页程序员
定位CPU占用过高的方法

定位CPU占用过高的方法

作者: Sealwk | 来源:发表于2018-06-22 18:14 被阅读28次

    前言

    最近在做接口压力测试的时候,对某接口进行并发,当并发达到100的时候,CPU占用达到75%以上,使用top和vmstat命令查看Average load达到20以上。但是其它指标,例如内存、网络、磁盘IO均在正常范围内,QPS、ART等指标性能非常好。

    解决思路

    • 对接口持续进行并发,使用top命令确认PID


      top.png
    • 查看24871的线程数为256个,有两种方法:
    1. cat /proc/24871/status

    image.png
    1. ps hH p 24871 | wc -l

    • 查看线程的资源使用,每个线程资源占用虽然都比较小,但是线程数量较多,造成总的CPU占用较高

    top -H -p 24871

    image.png
    • 使用jstack获取jvm DUMP文件,查看线程运行状态。

    jstack -l 24871 > temp

    在DUMP文件中查找线程时,需要先进行进制转换。在上一步中获取资源使用最高的线程ID:5611,然后将5611转换为16进制:15eb(转换工具:http://tool.oschina.net/hexconvert

    • 最后在DUMP文件中,查找15eb,获取当前线程的状态以及正在执行的类和方法。在测试过程中,可以不定时的多生成几个DUMP文件进行观察比较。


      image.png

    相关文章

      网友评论

        本文标题:定位CPU占用过高的方法

        本文链接:https://www.haomeiwen.com/subject/vzflyftx.html