1. 程式人生 > >Web應用測試監控執行時間 -- JavaSimon

Web應用測試監控執行時間 -- JavaSimon

在系統性能調優時以前介紹過使用jmeter-plugins和VisualVM監控系統的總體效能,有時候要找出瓶頸便需要了解某些具體方法呼叫消耗的時間。VisualVm可以做到,不過如果做profiler就太耗資源了。個人覺得JavaSimon是一個很不錯的選擇。不僅可以方便的監控資料層,業務層,Web層的各自訪問時間,還提供了Web頁面檢視統計資料和系統告警通知功能,非常不錯。
描述一下基於Spring的Web系統中如何使用JavaSimon。

1. Web.xml 開啟Web層統計,Web頁面檢視以及如何通知告警

<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<filter> <!-- simon統計filter --> <filter-name>simon-filter</filter-name> <filter-class
>
org.javasimon.javaee.SimonServletFilter</filter-class> <!-- optional --> <init-param> <param-name>prefix</param-name> <param-value>com.cloud.web</param-value> </init-param
>
<!-- optional basic plain-text console --> <init-param> <param-name>console-path</param-name> <param-value>/simon-filter</param-value> </init-param> <!-- optional, 需要報告的閥值 --> <init-param> <param-name>report-threshold-ms</param-name> <param-value>1000</param-value> </init-param> <!-- optional, 告警 - 顯示到標準輸出,可以自己定製報告 --> <init-param> <param-name>request-reporter-class</param-name> <param-value>org.javasimon.javaee.reqreporter.StandardRequestReporter</param-value> </init-param> <!-- optional, StopwatchSource instance --> <init-param> <param-name>stopwatch-source-props</param-name> <param-value>includeHttpMethodName=ALWAYS</param-value> </init-param> </filter> <!-- Web Console 顯示Web統計資訊,訪問/simon-console 檢視--> <filter> <filter-name>simon-console-filter</filter-name> <filter-class>org.javasimon.console.SimonConsoleFilter</filter-class> <init-param> <param-name>url-prefix</param-name> <param-value>/simon-console</param-value> </init-param> </filter> <!-- 大部分情況web檢視console不是需要監控的,注意filter順序 --> <filter-mapping> <filter-name>simon-console-filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter-mapping> <filter-name>simon-filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>

2. Spring配置檔案

注意這裡只對Spring配置檔案中定義的bean有效(spring-mvc中controller無效)

       <bean id="monitoringInterceptor" class="org.javasimon.spring.MonitoringInterceptor"/>

        <aop:config>
                <!-- name of the class or interface -->
                <aop:pointcut id="monitoringPointcut" expression="execution(* com.cloud.service.ServiceImpl.*(..))"/>
                <aop:advisor advice-ref="monitoringInterceptor" pointcut-ref="monitoringPointcut"/>
        </aop:config>

3. JDBC 層

直接使用simon的jdbc driver替代官方driver,或者包裝datasource就可以達到目的。

可以在Web應用中檢視不同層訪問時間來定位系統瓶頸了。