[linux性能优化] 综合实战 迁

优化java

使用阿里开源的神奇:arthas

https://cloud.tencent.com/developer/article/1534894

常用:

   dashboard

 

thread -b 
使用 命令查看直接定位到死锁

    

# 线程池线程状态

定位线程问题之前,先回顾一下线程的几种常见状态:
RUNNABLE 运行中
TIMED_WAITING 调用了以下方法的线程会进入TIMED_WAITING:
Thread#sleep()
Object#wait() 并加了超时参数
Thread#join() 并加了超时参数
LockSupport#parkNanos()
LockSupport#parkUntil()
WAITING 当线程调用以下方法时会进入WAITING状态:
Object#wait() 而且不加超时参数
Thread#join() 而且不加超时参数
LockSupport#park()
BLOCKED 阻塞,等待锁

上面的模拟代码里,定义了线程池大小为1 的线程池,然后在 cpuHigh 方法里提交了一个线程,在 thread方法再次提交了一个线程,后面的这个线程因为线程池已满,会阻塞下来。

使用 thread | grep pool 命令查看线程池里线程信息。

 

thread -n [显示的线程个数] ,就可以排列出 CPU 使用率 Top N 的线程

  

 

posted @ 2020-02-24 16:20  richardzgt  阅读(167)  评论(0)    收藏  举报