metrics的timer功能在java專案中的使用方法
阿新 • • 發佈:2019-01-28
metrics是開源的統計工具,其官網地址為:https://dropwizard.github.io/metrics/3.1.0/
使用時所需的jar包為:metrics-core-3.X.X.jar,例如:metrics-core-3.1.0.jar
在使用過程中,一般一個程式建立一個全域性的MetricRegistry,由其對資料進行統計;資料統計的結果可用reporter輸出,metrics支援多種型別的輸出,例如使用ConsoleReporter 輸出到控制檯,使用Slf4jReporter將統計結果以self4j的日誌方式輸出(需要self4j的jar包)。
下面是其timer功能的使用方法:
功能介紹:metrics的timer功能可以統計一段程式碼的執行時間執行次數等
使用方法:
1.建立一個程式唯一的MetricRegistry物件
2.建立一個reporter物件來輸出統計結果
3.開啟reporter,讓其處於資料輸出的狀態
4.為一段要監控的程式碼起一個標籤名,在metrics內部將以該標籤作為key來儲存其統計資料;
5.為這個標籤建立一個Timer.Context物件,並開始本次統計
6.呼叫Timer.Context物件的stop函式結束本次統計
其輸出的結果為:
使用時所需的jar包為:metrics-core-3.X.X.jar,例如:metrics-core-3.1.0.jar
在使用過程中,一般一個程式建立一個全域性的MetricRegistry,由其對資料進行統計;資料統計的結果可用reporter輸出,metrics支援多種型別的輸出,例如使用ConsoleReporter 輸出到控制檯,使用Slf4jReporter將統計結果以self4j的日誌方式輸出(需要self4j的jar包)。
下面是其timer功能的使用方法:
功能介紹:metrics的timer功能可以統計一段程式碼的執行時間執行次數等
使用方法:
1.建立一個程式唯一的MetricRegistry物件
2.建立一個reporter物件來輸出統計結果
3.開啟reporter,讓其處於資料輸出的狀態
4.為一段要監控的程式碼起一個標籤名,在metrics內部將以該標籤作為key來儲存其統計資料;
5.為這個標籤建立一個Timer.Context物件,並開始本次統計
6.呼叫Timer.Context物件的stop函式結束本次統計
5和6這兩步算作一次統計,如果迴圈執行這兩步就是迴圈統計這個標籤所代表的程式碼
示例程式碼為:
MetricRegistry metrics = new MetricRegistry(); Slf4jReporter reporter = Slf4jReporter .forRegistry(metrics).convertRatesTo(TimeUnit.SECONDS) .convertDurationsTo(TimeUnit.MILLISECONDS).build(); //metrics資料統計工具 int icounter = 0; reporter.start(20, TimeUnit.SECONDS); long it = System.currentTimeMillis(); boolean start = false; while(true) { icounter++; long st = System.currentTimeMillis(); if(st - it > 10000 && !start) { start = true; System.out.println("stop metrics"); reporter.stop(); } System.out.println("counter = " + icounter); //開始統計timer1 Timer.Context mTimer1 = metrics.timer("timer1").time();//--------標籤timer1對應的mTimer1開始計時 safeSleep(100); //開始統計timer2 Timer.Context mTimer2 = metrics.timer("timer2").time();//--------標籤timer2對應的mTimer2開始計時 safeSleep(100); //結束統計timer1 mTimer1.stop();//--------標籤timer1對應的mTimer1計時結束 //結束統計timer2 mTimer2.stop();//--------標籤timer2對應的mTimer1計時結束 }
其輸出的結果為:
10:43:19.478 [metrics-logger-reporter-1-thread-1] INFO metrics - type=TIMER, name=timer1, count=494, min=19.090878, max=31.171142, mean=19.985073202643935, stddev=0.9713886624598259, median=19.858742, p75=19.909125, p95=20.520245, p98=21.869995, p99=24.629206999999997, p999=31.171142, mean_rate=49.43821863514075, m1=49.199999999999996, m5=49.199999999999996, m15=49.199999999999996, rate_unit=events/second, duration_unit=milliseconds 10:43:19.488 [metrics-logger-reporter-1-thread-1] INFO metrics - type=TIMER, name=timer2, count=495, min=9.132584, max=21.298683, mean=10.124765811511601, stddev=0.7566357585679963, median=10.036045999999999, p75=10.081762999999999, p95=10.619485, p98=11.162185, p99=13.216044, p999=21.298683, mean_rate=49.541734551687156, m1=49.4, m5=49.4, m15=49.4, rate_unit=events/second, duration_unit=milliseconds c