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