經過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這種格式就能夠進入主面板查看結果。
相關文章
相關標籤/搜索