線上Java問題,從定位到解決

一個線上的問題是如何從定位到解決的?

設計埋點

埋點就是你要監控啥,你必須在程序開啓時設置一些參數來輔助監控,例如把日誌輸出到哪裏,便於另外的監控系統監控。

例如 -XX:+PrintGCDetails -Xloggc:/home/xx.log 形成的LOG文件

啓動參數

nohup java ${DEBUG_OPTS} ${JAVA_OPTS} -jar ${WORK_DIR}/abc-1.0-release.jar >/dev/null 2>&1 &

日誌參數

出現問題難道不應該是先看日誌?

哈哈,這就要看你的日誌打印的詳不詳細了。。。

發現問題

監控軟件報警

響應變慢

服務不可用

定位問題

1,cpu

top  打頭陣

jstack -lF pid

線程狀態信息,包含鎖信息

jmap -dump:format=b,file=/usr/local/logs/gc/dump.hprof {pid}

下載內存信息

MAT

發現佔用內存的大對象

2,磁盤

iostat -m 1 10

每塊磁盤的讀寫速度

3,內存

jmap -heap pid

打印jvm信息(具體含義,不是-Xx..)

Mat

4,網絡

netstat -p 

5,jvm

jps -lvm | grep pid

輸出完整包名主類名和jvm參數信息

jinfo -flag name(=value)

打印/設置參數名稱,但是部分參數不支持設置

jstat -gc pic

打印gc信息

解決問題

修改程序

提升單機硬件資源

網絡問題

大殺器:Arthas

阿里出品,必屬精品

https://alibaba.github.io/arthas/index.html

大家都說好,誰用誰知道,牆裂推薦!

附錄

jvm參數信息:

-Xms:初始堆大小,默認爲物理內存的1/64(<1GB);默認(MinHeapFreeRatio參數可以調整)空餘堆內存小於40%時,JVM就會增大堆直到-Xmx的最大限制
-Xmx:最大堆大小,默認(MaxHeapFreeRatio參數可以調整)空餘堆內存大於70%時,JVM會減少堆直到 -Xms的最小限制
-Xmn:新生代的內存空間大小,注意:此處的大小是(eden+ 2 survivor space)。與jmap -heap中顯示的New gen是不同的。整個堆大小=新生代大小 + 老生代大小 + 永久代大小。在保證堆大小不變的情況下,增大新生代後,將會減小老生代大小。此值對系統性能影響較大,Sun官方推薦配置爲整個堆的3/8。
-XX:SurvivorRatio:新生代中Eden區域與Survivor區域的容量比值,默認值爲8。兩個Survivor區與一個Eden區的比值爲2:8,一個Survivor區佔整個年輕代的1/10。
-Xss:每個線程的堆棧大小。JDK5.0以後每個線程堆棧大小爲1M,以前每個線程堆棧大小爲256K。應根據應用的線程所需內存大小進行適當調整。在相同物理內存下,減小這個值能生成更多的線程。但是操作系統對一個進程內的線程數還是有限制的,不能無限生成,經驗值在3000~5000左右。一般小的應用, 如果棧不是很深, 應該是128k夠用的,大的應用建議使用256k。這個選項對性能影響比較大,需要嚴格的測試。和threadstacksize選項解釋很類似,官方文檔似乎沒有解釋,在論壇中有這樣一句話:"-Xss is translated in a VM flag named ThreadStackSize”一般設置這個值就可以了。
-XX:PermSize:設置永久代(perm gen)初始值。默認值爲物理內存的1/64。
-XX:MaxPermSize:設置持久代最大值。物理內存的1/4。

 

-XX:+HeapDumpOnOutOfMemoryError 打印oom信息

 

 

線程狀態信息:

NEW:未啓動的。不會出現在Dump中。

RUNNABLE:在虛擬機內執行的。運行中狀態,可能裏面還能看到locked字樣,表明它獲得了某把鎖。

BLOCKED:受阻塞並等待監視器鎖。被某個鎖(synchronizers)給block住了。

WATING:無限期等待另一個線程執行特定操作。等待某個condition或monitor發生,一般停留在park(), wait(), sleep(),join() 等語句裏。

TIMED_WATING:有時限的等待另一個線程的特定操作。和WAITING的區別是wait() 等語句加上了時間限制 wait(timeout)。

TERMINATED:已退出的。
 

有用的參考文章:

https://www.cnblogs.com/java-chen-hao/p/10654071.html

https://www.cnblogs.com/mfmdaoyou/p/7349117.html?spm=a2c4e.10696291.0.0.297b19a4YDnKng

 

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