效能測試-Java應用伺服器分析
一:應用伺服器介紹
1.主流伺服器:tomcat、Apache、Jboss、Weblogic、IIS、Nginx 等
2.伺服器拓撲圖
browser web services 資料庫
client
二:分析依據
1.資料依據:作業系統效能計數器、LR報錯日誌、執行日誌、異常堆疊、GC日誌、執行緒快照(threaddump/javacore檔案)、堆疊儲存快照(headpump/horof檔案)等
2.工具:JDK視覺化工具、jdk命令列
三:視覺化工具
1.JConsole工具
2.jvisualvm.exe工具
說明:堆記憶體走勢是鋸齒狀,說明記憶體有吃進有回收,如果是一直上升的說明沒有回收,需要檢視
執行緒是狀態,等待狀態的執行緒需要關注,正常的情況下要一直執行
關於新生代、老年代的概念
我是一個普通的Java物件,我出生在Eden區,在Eden區我還看到和我長的很像的小兄弟,我們在Eden區中玩了挺長時間。有一天Eden區中的人實在是太多了,我就被迫去了Survivor區的“From”區,自從去了Survivor區,我就開始漂了,有時候在Survivor的“From”區,有時候在Survivor的“To”區,居無定所。直到我18歲的時候,爸爸說我成人了,該去社會上闖闖了。於是我就去了年老代那邊,年老代裡,人很多,並且年齡都挺大的,我在這裡也認識了很多人。在年老代裡,我生活了20年(每次GC加一歲),然後被回收。
四:JDK命令列工具
1.JPS:虛擬機器程序狀態工具
jps[option][hostid]
-q 只輸出LVMID,省略主類名稱;
-m 輸出虛擬機器程序啟動時傳遞給主類main()函式的引數
-l輸出主類的全名,如果程序致死那個的時jar包,則輸出jar路勁
-v輸出虛擬機器程序啟動時的jvm引數
2.Jstat虛擬機器統計資訊監測工具
如:檢視GC回收情況,每5秒鐘的情況,soc倖存區S0總位元組,S1C倖存區S1總位元組,S0U倖存區使用的,S1U倖存區使用的,EC新生代總大小,EU新生代使用的,OC老年代總大小,OU老年代使用的位元組
監測類裝在、解除安裝數量、總空間以及類裝載所消耗的時間
3.Jinfo 實時檢視、調整虛擬機器各項引數
4.jmap命令 jmap [opyion]vmid
5.jstack是java堆疊跟蹤工具,用於生成虛擬機器當前時刻的執行緒快照jstack [opyion]vmid