Java web应用性能监控工具jwebap

上一篇 / 下一篇  2011-12-12 17:37:35 / 个人分类:性能测试

性能测试中,我们经常希望一个平台能拦截、profile、分析性能数据,现实在一点点逼近.Jwebap:

up1] p?%u,]#t0  效果图http://www.jwebap.org/detect/console/?null

pz;R)RKQ WSBe0

Mr\/F\Ln"o0 官方文档:http://www.jwebap.org/index_zh.htm51Testing软件测试网 Kl1J&a])iW9t

51Testing软件测试网j!mb6Gk'kB

 作者blog:http://leadyu.javaeye.com/

-|*dp C a#r iw0

Y4Tx8qi"\#u0d6xC0 Jwebap是无代码侵入、需要修改web.xml配置文件的java应用监控工具,轻易获取jdbc调用/http调用、方法调用耗时及是否有jdbc泄露。核心原理:应用asm字节码操作框架实现动态monitor。51Testing软件测试网 ^DRsN&E3A gZ

E0^Nt6Z/S h ]W0   另外一个工具:http://jamonapi.sourceforge.net/。51Testing软件测试网we.?%E7O{RT{6{u

qpMkT,{/i01.1.1   下载
%j*rC@J5c!^0http://sourceforge.net/projects/jwebap/files/

rg/^:Ol0

p cS'c:pd/x(JHn01.1.2   部署51Testing软件测试网&he-d&b*H
解压后的jwebap_0.6.1.jar, tracer_0.6.1.jar及jwebap_0.6.1_all\lib目录下jar复制到jboss-4.2.2.GA\server\default\lib目录下。

O!^A.leOSa j)J051Testing软件测试网+lK{+f|M9ZdaI/FR

修改tracer_0.6.1.jar/META-INF/plugin.xml文件,红色为修改项:

H0klllG7Nr'}0

,nAO+N!r7Q0<?xml version="1.0" encoding="UTF-8"?>51Testing软件测试网{g|BI/{@ @ t.|

+T5S+DEbyj%e0<plugin>51Testing软件测试网 WQ,LlPpa:@

51Testing软件测试网by n,Q;|+OKZ;v

      <!--component-->51Testing软件测试网!E+g.O.k.g,j;E:o1XU

+e,t ];Fp;\@D0      <component name="HttpComponent" type="org.jwebap.plugin.tracer.http.HttpComponent">

$D4f5urZ#ha0

0hH[Lm?P0z0             <component-param>51Testing软件测试网2B"a6jwK[q

51Testing软件测试网)O#R%t o-~

                    <name>trace-filter-active-time</name>

6k&O)Ve+eBk0

0[e.M X*uMmr't0                    <value>-1</value>51Testing软件测试网W!Y,_t7e)]!C-JK

51Testing软件测试网9ul L ]*F'e`~r?{

                    <description>(ms) timings filter's over time</description>51Testing软件测试网"X? bufQH\|Z9w t

c5? MT%w f0             </component-param>51Testing软件测试网6X6wgqC/~"Aq7V/D

51Testing软件测试网u/\E,Rv|Nrl,f Z

             <component-param>51Testing软件测试网 B[/l;l#V3k|

Fg%@o(e!s5y0x DDO0                    <name>trace-max-size</name>

5r-l@ |(F @@[ ]vP0

(}|%M;c%w0H6DTp RF0                    <value>1000</value>51Testing软件测试网0}n"kc8u P

51Testing软件测试网2\!Dwg;ku+L I

                    <description>max over-time trace size</description>

k s"d r#iata0

!D0X_ o0v+t0             </component-param>

w[)]T7d#{:o+L%T051Testing软件测试网1?U w p(r C

      </component>

-i9E4fW(M/u3AMKX0

};U^)BQe l]0      <component name="MethodComponent" type="org.jwebap.plugin.tracer.method.MethodComponent">

I(R0bu3b#o6B-g051Testing软件测试网y\ y/YD\

             <component-param>51Testing软件测试网pb6E;_o@~

/s%h6z3U8P4@J T{A@X0                    <name>trace-filter-active-time</name>

:A5_*Qqf1q W$V051Testing软件测试网6PX#\x F3L Q;W

                    <value>-1</value>51Testing软件测试网-Y6i @ l*`5VNr

,F+h)ULT8H;mi0                    <description>(ms) timings filter's over time</description>

(A+_lp(g$Zg$a0

4uc by$z4Yl5r)azeO0             </component-param>51Testing软件测试网{3J`"x U0|

51Testing软件测试网#uo"S${7B ~

             <component-param>

_Sa"VnY1B0

@ccQ7s ?(aS0                    <name>trace-max-size</name>51Testing软件测试网F5nk,ZMt'@q-fm

51Testing软件测试网x V3o!@wY

                    <value>1000</value>

jB y!Q+\1W0

b&^+^&r2Z0                    <description>max over-time trace size</description>51Testing软件测试网f7F6I)o [

51Testing软件测试网-S!b3c k+?S \#t

             </component-param>

*U~g_2^2q!p051Testing软件测试网 n~A$S7H.Xz%M6Vm

             <component-param style="longtext">51Testing软件测试网U3mb pH%TG7N

0hv+z kbh~#`.Q0                   <name>detect-clazzs</name>51Testing软件测试网&{~l#] Hh3GZ+g5m

51Testing软件测试网NhuwyY&J

                    <value>51Testing软件测试网-wA sk"R'ne9S,x3B

51Testing软件测试网1Jl^)ij"KA

                    com.ali.*;51Testing软件测试网$T"T |(m)k{-RO ^@

51Testing软件测试网,^4mfZ7N:RfzD }

                    </value>

[3b;O_Qm^&W9c051Testing软件测试网$S zr1D$k~?"c3R$T3lb#@

                    <description>51Testing软件测试网6N{`9l8cS RtUcpz

51Testing软件测试网I3g_"R*r

                    package name and class name that monitored by MethodComponent,

nMZ|4n#C[S\0

Yr0C"a~Y?0                    e.g.: 'test.*;test.Test' , divided by ';'

7VT J,qyV!dY051Testing软件测试网[A z Oa9Sl-e

                    </description>

'Dyo"h9f0

YEGV0@.DU0bK0             </component-param>

tRc5h(C7C;? AL1Y051Testing软件测试网v}!a#_"P;SI

      </component>

\5[ @?D051Testing软件测试网"? a4]5Yr kk$`

      <component name="JdbcComponent" type="org.jwebap.plugin.tracer.jdbc.JdbcComponent">

}{7h8v)Z E xj0

[L"iV @QO|'Z0             <component-param>

ys G*]~ U7?051Testing软件测试网.xeq|%DX(c9Y

                    <name>trace-filter-active-time</name>51Testing软件测试网3wqa1M d

51Testing软件测试网^w_cR

                    <value>-1</value>51Testing软件测试网U~ dl XR*oT

51Testing软件测试网;~+UhD4G A?9qtV t

                    <description>(ms) timings filter's over time</description>51Testing软件测试网)u)U,P4e6dO^+T9v0we

51Testing软件测试网"fB(Kc5j4Bz

             </component-param>51Testing软件测试网0\]P|1c

+E:@ e$QXF0             <component-param>51Testing软件测试网p Ob8{p*i4f;`d

Tqw}}_/] h3S0                    <name>trace-max-size</name>51Testing软件测试网$nZG5{V!l3VNZ^

51Testing软件测试网kM7pVv-^n

                    <value>1000</value>51Testing软件测试网] h M9y9M-E,kR)u

51Testing软件测试网Z]vTYe$~

                    <description>max over-time trace size</description>

2z[N0?3y(?G5u;P0

f$z Y'm8}6jO+[i9J0             </component-param>

0n,mz%i ?lc s051Testing软件测试网8AS P;X{g*Y

             <component-param style="longtext">

"bsclrO/o0

&P*Ly-`!^0                    <name>connection-listener</name>

7@*vh^"O-W3AT#@j051Testing软件测试网?E]2AWgk

                    <value>

4L pX!L8i0

7r]R#s;}.C0             org.jwebap.plugin.tracer.http.ServletOpenedConnectionListener;org.jwebap.plugin.tracer.method.MethodOpenedConnectionListener

ss*p;v:Wi0

i2S1H P)qUr]D0                    </value>51Testing软件测试网!C[4h)z N,g

51Testing软件测试网pmG N.gkI2u*R

                    <description>Connection Listener</description>51Testing软件测试网3KL)u:d1ys

B%z2[X6}:b~0             </component-param>

M&pvo0qU"z051Testing软件测试网f9d1z ^JLa

             <component-param style="longtext">

;u?Qh+hh3[{ O Zpk0

@'Gs1e/rK0                    <name>driver-clazzs</name>51Testing软件测试网FRA/SFnv8N

51Testing软件测试网-w!nj~q MyG

                   <value>org.apache.commons.dbcp.BasicDataSource</value>       

:^5j8L9s/E051Testing软件测试网9?h:`%v2G$t

                    <!--51Testing软件测试网 dE E_+X3[,_

8TE&@c5\I g~$V;W0                    <value>com.mysql.jdbc.Driver</value>

e:umh,G.X|2{051Testing软件测试网+G.L I W o5WR

                    -->

a8qq^1V'W xn051Testing软件测试网M^ v#UlI7b$\(Q

                    <description>51Testing软件测试网6W.rv e'b2i%Z

N;W2~s)p0 

8Ev2O;O*T$_}*V051Testing软件测试网*z+k_1xq

                    </description>

&`9zA_"z rZ6f6J051Testing软件测试网(j-__ S:^R9fm

             </component-param>51Testing软件测试网wkWeHZl

q i*|o&jU{/Y0      </component>

3`X*|P8d ]?'m*QF051Testing软件测试网Z#zX:R-T&E T

      …

+Z[bC xt-B.pm051Testing软件测试网?D dE |%O0k

</plugin>

{7T UCg,et _V0

7Nk R8CC5R%q#a I0修改好后重新替换入jar。如下是监控spring.war应用的操作过程。51Testing软件测试网/jSE e&`*i}

eJ1nuY.dy@'C4y t3o0修改jwebap.xml放到jboss-4.2.2.GA\server\default\deploy\spring.war\WEB-INF51Testing软件测试网!tAfz%Z%Z*N%\`"tG

nw.C&r9vwy0?&vx0<?xml version="1.0" encoding="UTF-8"?>

~5lr2|N?0

R!@0E-}w I0<jwebap>51Testing软件测试网 Q;u)V5A,L0R{ j

51Testing软件测试网6t#DV*jCYg F A!eF

      <!--plugins-->

S1I1Pv @%tN051Testing软件测试网H~?5t3eu{

      <plugin name="Tracer" ref="${ABSOLUTE_PATH}/tracer_0.6.1.jar"/>

!YD6c$t&dI%\/t2A0

x(L;{!t(~6z#G0

?N`yFP2V I4v`051Testing软件测试网p2[ u-](ibf!A W D)QT

</jwebap>

S3@ {7Xy051Testing软件测试网oO r,V1^ A


/CHxUC-w;bS-a-v9v{0(${ABSOLUTE_PATH}是内置的变量,不必修改)51Testing软件测试网1T/N.kdKJ cn'?

iwYQAot.K0参考jwebap_0.6.1_all\bin\web-example.xml修改jboss-4.2.2.GA\server\default\deploy\spring.war\WEB-INF\web.xml:51Testing软件测试网y5G"S9F#bO

51Testing软件测试网,o km2~Mx


'Q^ ] m]8R0<!-- begin jwebap-->51Testing软件测试网u7`0q@+Q8U-e,B

5z2zsr$K U7N0      <context-param>51Testing软件测试网 R$P ej)}W V

D-TJQX8D0             <param-name>jwebap-config</param-name>51Testing软件测试网'uM_!E7u'h%M"ZZY

51Testing软件测试网kh5Y)B [Q z+S.R

             <param-value>/WEB-INF/jwebap.xml</param-value>

:po ex^.V:w051Testing软件测试网w"px l{L

      </context-param>51Testing软件测试网I!d-n HH

51Testing软件测试网Ko6I/i*NG#U u%P/f/J

      <listener>   51Testing软件测试网/w"sZ1wGM_5Vi,M

0tqz c-t!^*a0             <listener-class>org.jwebap.startup.JwebapListener</listener-class>    

yMKd'k8HcM0

v0c:[e e&Sz0      </listener>51Testing软件测试网R Zr&? y#b$b

51Testing软件测试网xF6td Y-^ }StK t7J

      <filter>51Testing软件测试网5h)L/A^uB

m{4kA:X@4ZO0             <filter-name>PageDetectFilter</filter-name>

,\~/a,]T&I"I0

,] Q7F.Ex0             <filter-class>org.jwebap.plugin.tracer.http.DetectFilter</filter-class>

8[8B0kG~d!_x-u FNs0

&TMNX[3Z6E*\0             <init-param>51Testing软件测试网Bn7ao/g!lY5Q

x~aa ~C2f%| ?0                    <param-name>excludeUrls</param-name>

v3tTiKYV_0

"|#XdA@0                    <param-value>/detect;/detect/*;*.js;*.jpg;*.htm;*.html;*.gif;*.png;*.css;*.swf</param-value>

-ly9IAPCK7Y8J r051Testing软件测试网.b~%D)[Ot

             </init-param>51Testing软件测试网])tn;?e6?3R J\

8?S;}}.z(jrl5g+P p V0      </filter>51Testing软件测试网4Qh&w[+YK

51Testing软件测试网/?"A-\&U#O_pN

      <filter-mapping>

_`b-v0fMb2wt[T0

ubr:rs2V6a Hb3~0             <filter-name>PageDetectFilter</filter-name>

R S6x'Yh9[3e051Testing软件测试网"D] w`2Hl

             <url-pattern>/*</url-pattern>51Testing软件测试网I"} S[E8@

51Testing软件测试网U2{ l(WUt4L7EXJ9u

      </filter-mapping>51Testing软件测试网^.SUu}8h3`.]0qv(K

rn9r oy2?0 51Testing软件测试网'TKKAs}1I

*p)\2p5F&E!f0      <servlet>51Testing软件测试网fZOn1DQ^E"Q{

51Testing软件测试网9SEPG7?2a1|

             <servlet-name>detect</servlet-name>

v^Z%T:j,q051Testing软件测试网2~ mb7xk ~4v

             <servlet-class>org.jwebap.ui.controler.JwebapServlet</servlet-class> 

F2mKbHi!T:I0

$f~"QL!U/\,GS2l%z*M0      </servlet>51Testing软件测试网+e/z-Yp`BL

51Testing软件测试网4k7[!W:Xnu!MrS"q8W

 51Testing软件测试网&w+y mud"M

51Testing软件测试网`c^[$sV9}k.X

      <servlet-mapping>51Testing软件测试网%Ze/Da)B2w rn

W4ML/Sy(Z@0             <servlet-name>detect</servlet-name>51Testing软件测试网7d&O-CG9^h

51Testing软件测试网#g"\cuzcK

             <url-pattern>/detect/*</url-pattern>

+uGVa)S$T$\0

9~Hp8d*yj0      </servlet-mapping>51Testing软件测试网;j,E.`-v)| yz

]?+^z;Kfg$h5} [0     51Testing软件测试网7aZ Y4HK,XZ

/A]GR+Kq0      <!-- end jwebap-->

!Eb*r3D Kny051Testing软件测试网;o#fn-A GCb

有一点特别注意的是,在被监控的程序如spring.war目录jboss-4.2.2.GA\server\default\deploy\spring.war\WEB-INF\lib加入数据库驱动程序如commons-dbcp.jar,否则无法获取jdbc trace数据。

U p ^Ow tT"x051Testing软件测试网c&v1O6jfd


!f(yU ^j:Yb01.1.3   启动应用及拦截51Testing软件测试网7sVr0py rL RT
启动jboss,
51Testing软件测试网:R9Ad ]%B&{5n/i

51Testing软件测试网6dKp.i6p

执行应用操作,ie输入

!@#jv9R%k2X0

\ zv+W$c}A0http://localhost:8080/spring/detect/console/?null可以看到jwebap监控效果

/D mJu5{I/[ d0

!E I5VwU8y,@ n0jdbc traces:

j Ht;{~"G051Testing软件测试网_~RH2t

http监控
?1]0f/P!wsSP0Method监控
J GK F%H"J%P0 

Q7no*q7fj.L[~xk051Testing软件测试网9r8y;E,eI

1.1.4   已知限制及应用场合51Testing软件测试网9\YC;K3|d4HI
 更多讨论可以在javaeye论坛搜索jwebap。
51Testing软件测试网6ixHY]l#pW"p

51Testing软件测试网&m5c'?v9Y h

  对于普通的web程序,jwebap支持不错。可以考虑内部系统开发性能优化时应用。

"TBy5K7U0

2X Lpc.uy0 Webx工程只能监控jdbc调用,对于方法和http请求无法拦截.

iaG,X1~}8dU |1y0

TAG:

 

评分:0

我来说两句

Open Toolbar