java 線上應用排查CUP過高(模擬場景)

1、先使用top命令查看系統資源是使用信息,top命令是Linux下常用的性能分析工具,能夠實時顯示系統中各個進程的資源佔用狀況。我運行了個java進程模擬線上業務排查。

top

 PID爲7607的進程佔用的CPU資源已接近100%。

2、接着使用命令查看該進程詳細的線程情況

top -H -p 7607

上面顯示線程的PID是十進制,我們需要轉換成十六進制方便查找

printf "%x\n" 7623

我們可以直接線上使用jstack查看java中的線程信息,grep 1dc7是過濾出該線程信息,-A50是打印信息行數。

jstack 7607 | grep 1dc7 -A50

 紅框中就是我在程序中跑的線程名,所以我們使用線程要有良好的習慣,給線程加上名字,不過我們一般不會直接使用線程,而是使用線程池。現在找到了線程的名字我們就可以到java代碼中全局搜索這個字符串定位到代碼。

 也可以把java進程中的線程信息輸出到文本里進行查找,執行命令會輸出到當前目錄,jstack.log是文件名

jstack 7607 > jstack.log

 

 把文件下載下來在搜索1dc7也會找到這個線程

 在idea中全局搜索用線程名定位java代碼

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章