Java線上服務CPU過載問題快速定位代碼

1.先定位進程

top -c 

大寫P交互命令,按着百分比排序

比如: pid爲 19789,負載過高

2.再定位線程

top -Hp 19789

或者top -H -p 19789 或者top -p 19789 -H

大寫P交互命令,按着百分比排序

比如線程 pid1367 負載最大

3.定位代碼

①先將1367裝換爲十六進制

printf "%x\n" 1367
爲 557

jstack 19789 | grep "557" -C9 --color
或者

jstack 19789 | grep "557" -C5 --color

定位代碼ok

++++++++++++++++++++++++++++++++++++++++++++++++++++++=

 

順便提一句:

JVM監控用的什麼工具呀 比如Full GC觸發

監控工具pinpoint可以監控

jstat比較詳細

jvisualvm 裏面安裝 Visual GC 這個插件

JVM監控
  skywalking支持監控:Heap, Non-Heap, GC(YGC和FGC)。 Pinpoint能夠監控的指標主要有:Heap, Non-Heap, FGC, DirectBufferMemory, MappedBufferMemory,但是沒有YGC

去哪兒監控工具開源

bistoury 

 

MAT 內存分支工具

可以通過jmap -dump:format=b,file=heap.bin <pid>將內存dump下來,然後上傳到https://memory.console.perfma.com 上分析一下,在對象視圖裏找到那個對象,如果標紅了,就說明這個對象是即將被JVM GC回收的

參考地址:https://www.jianshu.com/p/ef4775e9cd55

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