Java项目性能监控和调优工具-Javamelody的学习总结

时间:2021-12-04 16:36:25

1.简介:

  JavaMelody能够在运行环境监测Java或Java EE应用程序服务器。并以图表的形式显示:Java内存和Java CPU使用情况,用户Session数量,JDBC连接数,和http请求、sql请求、jsp页面与业务接口方法(EJB3、Spring、Guice)的执行数量,平均执行时间,错误百分比等。图表可以按天,周,月,年或自定义时间段查看。

2.准备:

下载javamelody-1.47.0.jar和jrobin-1.5.9.1.jar,引用到项目中.

3.配置方法:

一般会在第一个Filter之前加上JavaMelody的Filter配置,确保JavaMelody的Filter第一个被执行

在web.xml中配置filter:

  	<filter>
<filter-name>monitoring</filter-name>
<filter-class>net.bull.javamelody.MonitoringFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>monitoring</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<listener>
<listener-class>net.bull.javamelody.SessionListener</listener-class>
</listener>

4.重启项目:打开链接:http://<host>:<port>/projectname/monitoring      例如:http://127.0.0.1:8080/myproj/monitoring

至此,基本配置已完成,可以进行简单的性能监控,javamelody与struts2和spring3也可以进行集成配置,这部分会在后续的总结中详细说明。

5.和struts2集成:

1)在struts-common.xml中加入以下代码:

   <package name="default" extends="struts-default" >
<interceptors>
<interceptor name="monitoring" class="net.bull.javamelody.StrutsInterceptor"/>
<interceptor-stack name="myStack">
<interceptor-ref name="monitoring"/>
<interceptor-ref name="defaultStack"/>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="myStack"/>
</package>

2)将struts-模块名.xml中的extends改为default,  即:

<package name="qx-module" namespace="/module" extends="default">

6、和Spring集成

1)在spring-common.xml中添加以下代码:

  	<bean id="facadeMonitoringAdvisor" class="net.bull.javamelody.MonitoringSpringAdvisor">
<property name="pointcut">
<bean class="org.springframework.aop.support.JdkRegexpMethodPointcut">
<property name="pattern" value="mgr.*.*.service" />
</bean>
</property>
</bean>

7、监控实体

在实体的persistence.xml文件最前面加入红色语句(必须用JavaMelody1.5及以上),如:

	<persistence-unit name="gxpt-qx-entity" transaction-type="JTA" >
<provider>net.bull.javamelody.JpaPersistence</provider>
<jta-data-source>java:/MySqlDS</jta-data-source>
<properties>
<!-- <property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect"/> -->
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
<property name="hibernate.hbm2ddl.auto" value="update" />
<property name="hibernate.show_sql" value="true" />
</properties>
</persistence-unit>

8、查看javaMelody

         访问的目录后加/javamelody ,如http://localhost:8080/javamelody 。