1. 程式人生 > >JAVA 效能監視 JAMON can be with SpringWeb or jwebap

JAVA 效能監視 JAMON can be with SpringWeb or jwebap

http://www.infoq.com/cn/articles/java-profiling-with-open-source

E:\>jps
4344 bootstrap --> tomcat

G:\paul>jmap -histo:live 4344 > G:\jmap.txt
num     #instances         #bytes  class name
----------------------------------------------
   1:         20153        3273216  [C
   2:         21429        2548128  <constMethodKlass>
   3:         32644        2060096  <symbolKlass>
   4:         21429        1716016  <methodKlass>
   5:          2301        1188528  <constantPoolKlass>
   6:          5990         988904  [B
   7:          2301         944304  <instanceKlassKlass>
   8:          1996         698608  <constantPoolCacheKlass>
   9:         21322         511728  java.lang.String
  10:          3717         297360  java.lang.reflect.Method
  11:         11233         269592  java.util.HashMap$Entry
  12:          2547         244512  java.lang.Class
  13:          3406         191312  [S
  14:          1269         183040  [Ljava.util.HashMap$Entry;





The Java Application Monitor (JAMon) is a free, simple, high performance, thread safe, Java API that allows developers to easily monitor production applications. 1) It contains the ability to monitor JDBC/SQL, web page requests, ejb's, log4j, interfaces and more. 2) It tracks aggregate stats for each sql statement, page request etc. and also lets you look at this information and more via the JAMon war. 3) You can also access JAMon statistics via the api


http://mvnrepository.com/artifact/com.jamonapi/jamon/2.75

http://www.iteye.com/topic/112172

http://www.iteye.com/topic/164758

from he:http://leadyu.iteye.com/

看了下jamon,應該說jwebap在部署方面真的簡單太多了。 

首先,jwebap對於jdbc的監控,根本不需要代理資料來源,也不需要實現特定的代理驅動。而且jamon這種方式應該是沒法監控jndi資料來源的(從我初步從它的配置文件瞭解到的,我只能說應該:-) ) 

另外,對於EJB的監控,Jwebap也根本不需要配EJB的代理,只要在method plugin的'detect-class'引數裡,配置想監控的包名即可,如"test.ejb.*;com.ejb.*;" 



jwebap的部署,只需要丟個jar包,配下jwebap.xml 和對應的web.xml即可。 


我覺得可以這麼歸結:


第一代prfiling tools:基於代理,代理,又代理的思想,實現monitor。缺點是,部署麻煩,甚至是還需要修改專案程式碼才能部署,功能也不強。比如jamon和P6SQL 

第二代prfiling tools:基於專屬平臺JVMPI,缺點:給系統帶來了10-20倍的效能負擔,同時部署複雜,但是,功能強大,如jprofiler 

第三代prfiling tools:出現了BCEL,後更有ASM等字解碼指令操作框架,介於jdk14-15之間。基於字解碼操作,profiling實現了真正意義的動態monitor。這種profiling部署簡單,效能高,但是功能不算非常強大。 

第四代prfiling tools:出現jdk instrument。更有aspectJ。這時profiling功能得到增強,但是丟失了大量停留在jdk14的使用者,同時部署也不簡單。 


Jwebap從這種劃分,應該說,處於第三代和第四代之間,Jwebap-core採用第三代技術,plugin則很任意,介於第四代技術。

with spring:

http://cpjsjxy.iteye.com/blog/1612317 

開始改造 jwebap 持久化其監控資料,及其分頁:

debug追蹤至:

org.jwebap.plugin.tracer.http.HttpRequestTrace
\org\jwebap\plugin\tracer\util\TimeFilterViewHelper.java

用log4j記錄jwebap的trace軌跡資料:

修改:org\jwebap\plugin\tracer\TimeFilterAnalyser.java -->方法: inactiveProcess(Trace trace)

匯出軌跡資料後其為html格式,可修改以下 formatter:

HttpRequestTrace

SQLConvertor