• 【性能调优】Java程序CPU高定位


     jps/jstack/top/

    1   CPU高分析

    1.1   说明(root执行)

    建议使用root账号执行命令,使用其他账号登录可能会无法看到部分进程信息。

    1.2   查看服务进程ID(ps)

    命令格式:  ps –ef | grep XXXX

       

    1.3   查看机器CPU占用情况(top)

    命令格式:  top

    执行结果如下,结果会动态刷新

     

     

     

     

    %CPU取值说明:以347949为例,58.7%并不是类似Windows的整体CPU占用率。CPU通常是多核,命令执行机器是8核CPU,则CPU全部可用率为8*100%=800%;所以:相对Windows整个机器来说:CPU占用率是 58.7% / 800% = 7.35% 

     

    1. 第一行是任务队列信息

       

    1. 第二、三行为进程和CPU的信息

      

    1. 第四、五行为内存(物理+交换)信息。

     

    二.  进程信息

     

     

     

      

    1.4   查看指定服务内部线程CPU占用情况(top)

    命令格式:  top -p 267396 -H

    说明:

    1)267396为进程PID信息,参考章节1.2获取;

        2)执行结果会动态刷新

    3)执行结果默认只显示下半部分信息,可以按下主键盘区域数字1,增加显示上部信息。

    4)左侧PID对应内部线程ID(十进制表示)

     

     

     

     

    1.5   安装JDK

    通常部署环境没有JDK命令(即没有jstack,jmap等后续命令),需要找到匹配JDK并安装到环境中。

    确认方法:可以先通过root切换到根目录查找jstack

    命令格式:#find / -name jstack

    如果找不到则需要参考章节“如何获取环境匹配的JDK”进行安装。

    1.6   使用jstack命令保存堆栈信息(jstack)

    命令格式:  jstack 267396 > /tmp/stack1.txt

    说明:

        通常机器不会安装jstack信息,需使用到root账号优先查找本机jstack是否存在,否则需要自行安装。

    其中nid字段对应16进制的线程ID(对应章节1.4中10进制线程信息)。

      

     比如如下的垃圾回收线程

     

      

    1.7   根据待分析TOP线程ID到jstack查找获取线程详细信息

    注意: jstack中nid线程ID是十六进制;top命令结果中线程ID是十进制,查询前需要提前转换。

     

     

  • 相关阅读:
    MDK+VS+Eclipse的STM32库V3.5工程模板的建立(六)
    MDK+VS+Eclipse的STM32库V3.5工程模板的建立(一)
    MDK+VS+Eclipse的STM32库V3.5工程模板的建立(四)
    ognl.OgnlException: target is null for setProperty(null, "username", [Ljava.lang.String;@19af9e98)
    Hibernate联合主键Annotation
    struts2入门第一天配置环境
    为什么java的构造方法中this()或者super()要放在第一行
    几种解决IE6下PNG图片透明问题
    IE6解决min_height
    一个拖拽例子
  • 原文地址:https://www.cnblogs.com/clarino/p/12681276.html
Copyright © 2020-2023  润新知