現網問題排查實戰:Jstat,Jstack,Jmap

遇到問題怎麼辦:
查看日誌tail -f catalina.out
查看應用進程 ps -ef | grep java
查看CPU情況
查看TCP情況 ping
查看java線程,jstack
查看java堆,jmap
通過memory analyser tool 分析.dat堆文件,看shallowed heap和retained heap,尋找無法被回收的對象
解決方式:如可以把有問題的對象置爲static,每個類只保有一份

top查看佔用cpu最多的進程
然後top -Hd 查看某進程下所有線程
nid是操作系統中線程Id,pid是java中線程Id
然後jstack 進程|grep 線程的十六進制數 看具體堆棧


詳情
top發現系統負載高 (load average和us參數的百分比 )JVM內存佔用高
jstat -gc pid 查看JVM內存回收情況 發現每5000ms一次full gc
在這裏插入圖片描述
用jstack可以看到應用線程全部掛起,等待GC後執行

jmap -histo pid查看進程中對象情況,每個對象有多少實例,佔用多少內存。

jmap -dump:format=b,file= jvm內存具體情況

用MemoryAnalyer查看大對象

解決在這裏插入圖片描述
GC常優化參數:
堆大小
永久代大小
GC線程數

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