专业的编程技术博客社区

网站首页 > 博客文章 正文

Arthas基础(二)(arthas原理)

baijin 2024-10-29 13:10:44 博客文章 7 ℃ 0 评论

今天继续来说一下Arthas中的thread

这里的cpu使用率与linux 命令 top -Hp <pid> 的线程%CPU类似,一段采样间隔时间内,当前JVM里各个线程的增量cpu时间与采样间隔时间的比例。

工作原理说明:

  • 首先第一次采样,获取所有线程的CPU时间(调用的是java.lang.management.ThreadMXBean.getThreadCpuTime()和sun.management.HotspotThreadMBean.getInternalThreadCpuTimes()接口)
  • 然后睡眠等待一个间隔时间(默认为200ms,可以通过-i指定间隔时间)
  • 再次第二次采样,获取所有线程的CPU时间,对比两次采样数据,计算出每个线程的增量CPU时间
  • 线程CPU使用率 = 线程增量CPU时间 / 采样间隔时间 * 100%

1.thread -->查看当前进程的所有线程信息

参数说明:

Threads Total: 总线程数

NEW: 初始状态的线程

RUNNABLE: 就绪(可运行状态)状态的线程

BLOCKED: 阻塞状态的线程

WAITING: 等待线程

TIMED_WAITING: 超时等待线程

TERMINATED: 死亡状态

其他线程信息和dashboard一样

2.thread 线程id -->查看指定线程并输出线程栈(当我们发现哪个线程占用cpu高的时候可以继续看一下他的 栈情况),如下

3.thread -n 3 -->查看最繁忙的n个线程

4.thread -n 3 -i 1000 -->查看1000ms内最繁忙的n个线程

5.thread -b-->查看阻塞状态的线程

6.thread |grep 线程状态-->模糊找出指定状态的线程,如下

7.thread --state WAITING-->找出指定状态的线程



今天就到这里,明天继续Arthas的JVM,欢迎大家关注我的微信公众号

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表