zoukankan      html  css  js  c++  java
  • java 查看耗 CPU 的线程信息

    java 查看耗 CPU 的线程

    1. 查找应用 Pid

    这个比较简单,如果需要查找具体的问题,一般是已经知道了应用是哪个。可以通过 jps 或者 ps 命令都可以很方便的得到应用的 pid。

    2. 查找耗 CPU 的线程id

    通过操作系统命令查找:

    ps -mp pid -o THREAD,tid,time   # 命令查看该进程的线程情况 
    -m 作为 threads 选项,表示在处理器之后显示线程
    -p 作为 list 选项,表示指定特定的 pid 
    -o 是显示选项,按照用户指定的格式来展示数据。
    其他选项可以通过 ps --help all 来查看帮助
    

    查出来的结果里 tid 是 10进制的线程id信息,对应线程栈里 nid 的值,而线程栈里是展示的 十六进制,所以查找是需要转换下。

    3. 获取对应线程的线程栈

    jstack 1 | grep 416b -A 30
    

    查找示例如下:

    这里就查询到了耗 CPU 多的线程,以及知道了线程栈。

    当然,因为线程栈打印的是执行时间点的信息,所以,最好是在任务执行的时候多次这么操作,然后就可以知道对应线程执行的代码在哪块,然后分析是不是有优化的空间。

    4. ref

    问题排查

  • 相关阅读:
    第一课:人人站安装与使用教程
    linux 多个python版本的切换
    参考文章
    windows下scrapy 的安装
    vi 使用入门
    linux 源码安装
    C语言—第二次作业
    C语言第0次作业
    c语言博客园作业03函数
    tomcat对于web.xml的securityconstraint使用的处理机制
  • 原文地址:https://www.cnblogs.com/paxing/p/15211115.html
Copyright © 2011-2022 走看看