1分钟定位线上线程数过多问题

这是Bella酱的第 58 期分享java


做者 | Bella酱web


事情的原由是这样的面试


莫慌,登陆机器top命令看一看top -H缓存

一共2341个thread,其中2339个thread处于sleeping状态,盲猜项目中用到线程池的地方,线程处理完任务并无将处于空闲状态的线程回收掉,用arthas验证下本身的猜测。服务器

java -jar arthas-boot.jar启动arthas微信

dashboard命令看下当前线程池等状况多线程

发现xx pool-0果真有好多线程处于waiting状态,验证个人想法。此时,若是你多线程执行的那个任务是用的同事开发的一个框架,那你就能够这个截图甩给同事了;若是是本身控制的线程池,那就要研究研究啦。app

推荐几个经常使用的arthas命令:框架

  1. jad 类全路径
  • 可查看类的源码,check服务器上运行的代码的正确性,以防分支太多,有同事解决冲突的时候将本身代码给改错了
  1. trace 类全路径 方法名
  • 可查看方法的调用链,以及调用链上每一步的耗时状况,对于定位和分析RT太高很是有帮助。
  1. watch 类全路径 方法名 {params,returnObj,throwExp} -x 3
  • 查看方法的入参、返回值、异常状况,-x 3指定遍历返回结果的深度为3,通常3层ok了。watch命令可动态监听该方法的调用状况,但并非无限制的。
  1. thread -b
  • 查找阻塞其余线程的线程
  1. thread -n 10

      查找当前最忙的10个线程编辑器


-END-

更多精彩文章

1. 在阿里当PM都须要作什么?Bella酱亲身经历告诉你!

2. 自定义Spring bean容器了解一下?实战及原理解读

3. 一文打尽树的基础知识,不再用担忧面试被问树了~!

4. 进大厂,你必须掌握的CPU缓存基础,看这篇文章就够了!

5. 大白话讲NIO~!

6. 一文打尽树的基础知识,不再用担忧面试被问树了~!


若是你喜欢本文

请长按二维码,关注 Bella的技术轮子

转发至 朋友圈,是对我最大的支持

喜欢就点个在看

本文分享自微信公众号 - Bella的技术轮子(wheel_of_bella)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。

相关文章
相关标签/搜索