经过javamelody监控web应用的性能指标

一、问题背景

为了提高应用的性能咱们可能须要作不少分析和优化。但具体从哪里优化,优化的效果是多少就难以断定了。java

javamelody用嵌入式的监控方式,实时监控性能指标。如:页面相应时间,spring bean方法调用时间,sql语句执行时间等不少指标。我在这就不一一列举了。web

我感受比较好的两特色是:

  • 会自动按命中次数与相应时间结合排序,这就能够知道优化哪一个页面,bean方法,sql最有效果
  • 页面,bean,sql自动关联,可钻取,点页面能够看页面中调用bean方法的状况,点bean方法能够看sql状况


二、配置步骤


a、引入依赖包

下载javamelody的jar文件,官方站点 https://code.google.com/p/javamelody/
中找到javamelody-1.40.0.jar下载下来
手动配置时还须要JRobin这个依赖,在 http://www.jrobin.org上下载
把这两这jar文件copy到你的lib中

若是采用maven配置
只须要在pom文件中加入
<dependency>
    <groupId>net.bull.javamelody</groupId>
    <artifactId>javamelody-core</artifactId>
    <version>1.40.0</version>
</dependency>

一样的效果

b、修改web.xml文件

加入如下代码
<context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            classpath:org/noahx/test/application-context.xml
            classpath:net/bull/javamelody/monitoring-spring.xml
        </param-value>
    </context-param>


    <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>

spring采用org.springframework.web.context.ContextLoaderListener启动
注意filter-mapping的位置尽量靠前,由于它来测相关请求时间
在你的spring配置文件位置中再加入classpath:net/bull/javamelody/monitoring-spring.xml这个配置

c、在spring配置的xml中加入Advisor

这样就能够监控spring bean的性能
<bean id="facadeMonitoringAdvisor" class="net.bull.javamelody.MonitoringSpringAdvisor">
        <property name="pointcut">
            <bean class="org.springframework.aop.support.JdkRegexpMethodPointcut">
                <property name="patterns">
                    <array>
                        <value>org\.noahx\.test\..*</value>
                    </array>
                </property>
            </bean>
        </property>
    </bean>

org\.noahx\.test\..*为正则表达式,javamelody会自动匹配bean中的类名,来决定都监控哪些bean的哪些方法
我是监控了org.noahx.test下全部定义的spring bean的全部方法

d、sql与数据源监控

若是你的dateSource定义在spring中,javamelody会自动发现不须要额外配置。

e、运行测试

程序运行起来和原来并无变化,仍是和原来同样,能够多点一点你的页面。由于javamelody须要采集访问时的性能数据。而后你能够经过javamelody的url来查看你应用的性能指标。
http://host:port/你应用的上下文/monitoring。上下文后加monitoring这种格式就能够进入主面板查看结果。
相关文章
相关标签/搜索