JAVA 應用性能監控基礎
這里簡單介紹了JAVA 應用程序部署linux 服務器上的一些常用監控信息,雖然現在很多自動化監控的東西,但是一些基本的東西,我們還是需要了解。這里是簡單記錄一下:
二、操作過程
1.我習慣性先看看 CPU 和內存的使用情況,做一個簡單的關注
命令:top 可以關注運行狀態
命令:大寫P:按CPU 使用排序,大寫M:按內存使用排序,小寫c:詳細顯示應用
比如A應用出現
VIRT:虛擬內存總共2G,RES:物理已經內存占用:1.8G,并且有持續上升趨勢,有可能內存溢出
關于JDK 自帶命令,可以參考:http://blog.csdn.net/fenglibing/article/details/6411953
2.jstack -l -pid 查看堆棧信息
當然我習慣性輸出到文件:jstack 1234 > jstack_1234.txt
一般我用來分析死鎖:看看有什么blocked 之類的,如果有就具體分析對象吧
3.查詢內存信息 到文件
jmap -histo > jmap_1234.txt
# 會出現類似的東西,這里里面會出現 對象實例個數大小,含義相信都能看懂 # 如果有溢出危險,可以看看是不是有些不應該存在的對象過多,或者泄露~。~ num #instances #bytes class name ---------------------------------------------- 1: 5639055 314750880 [C 2: 5090750 122178000 java.lang.String 3: 634655 50563800 [B 4: 132871 49959496 com.taobao.api.domain.Trade 5: 535513 30530896 [Ljava.lang.Object; 6: 457581 27420936 [I 7: 421408 23598848 com.taobao.api.domain.MsgList #... # 上面關注的對象,發現訂單Trade 占 49959496/8/1024/2024 = 5.95 # 至于合理性,要根據自己系統進行判斷,如果是內存不夠,需要調大JVM內存 # jmap -histo:live 這是存活的對象 # 當然如果你應用掛了,你可以jmap -dump jmap -head 看下內存快照 # 正常情況不建議這么做,生成快照的時候應用會stop 一下!
4.關注GC信息
jstat -gcutil > jstat_1234.txt
# 會出現類似以下信息 S0 S1 E O P YGC YGCT FGC FGCT GCT 38.69 0.00 90.60 79.89 59.31 150460 1693.925 609 137.180 1831.105 # 我喜歡主要關注FGC 的次數:609 當然這個要配合運行時間去看,你可以5-10分#鐘運行幾次,看看FGC 的增長率,快了肯定的調節 #當然你還可以觀察新生代 、老年代、永久代詳細信息,具體參數看上面的鏈接
小結:
1.雖然很多大部分情況下,公司有運維或者專門的監控工具做這些了,但是了解一下還是有好處的,當然基本的得清楚JVM 的一些分布、原理基礎。
2.關于一些常用調優手段,有機會結合實際場景 再分享吧,脫離場景的 都感覺 不太好。
3.也可以用遠程的一些工具去操作這些
原文 http://greemranqq.iteye.com/blog/2190684
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!