通過javamelody監控web應用的性能指標

openkk 13年前發布 | 68K 次閱讀 性能測試和優化 JavaMelody

1、問題背景

為了提升應用的性能我們可能需要做很多分析和優化。但具體從哪里優化,優化的效果是多少就難以判定了。

javamelody用嵌入式的監控方式,實時監控性能指標。如:頁面相應時間,spring bean方法調用時間,sql語句執行時間等很多指標。我在這就不一一列舉了。

我感覺比較好的兩特點是:

  • 會自動按命中次數與相應時間結合排序,這就可以知道優化哪個頁面,bean方法,sql最有效果
  • 頁面,bean,sql自動關聯,可鉆取,點頁面可以看頁面中調用bean方法的情況,點bean方法可以看sql情況


2、配置步驟


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這種格式就可以進入主面板查看結果。

 本文由用戶 openkk 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!