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源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索