簡體   English   中英

Java Metrics示例代碼

[英]Java Metrics Sample code

我是指標的新手,我不明白為什么我得到這個輸出請有人解釋。 提前致謝。

package sample;
  import com.codahale.metrics.*;
  import java.util.concurrent.TimeUnit;

  public class GetStarted {
    static final MetricRegistry metrics = new MetricRegistry();
    public static void main(String args[]) {
      startReport();
      Meter requests = metrics.meter("requests");
      requests.mark();
      wait5Seconds();
    }

  static void startReport() {
      ConsoleReporter reporter = ConsoleReporter.forRegistry(metrics)
          .convertRatesTo(TimeUnit.SECONDS)
          .convertDurationsTo(TimeUnit.MILLISECONDS)
          .build();
      reporter.start(1, TimeUnit.SECONDS);
  }

  static void wait5Seconds() {
      try {
          Thread.sleep(5*1000);
      }
      catch(InterruptedException e) {}
  }
}

輸出:

12/18/15 12:01:15 PM ======================================= ====================

- 米 - ----------------------------------------------- -----------------------請求計數= 1平均速率= 1.00事件/秒1分鍾速率= 0.00事件/秒5分鍾速率= 0.00事件/秒15分鍾速率= 0.00事件/秒

12/18/15 12:01:16 PM ======================================= ====================

- 米 - ----------------------------------------------- -----------------------請求計數= 1平均速率= 0.50事件/秒1分鍾速率= 0.00事件/秒5分鍾速率= 0.00事件/秒15分鍾速率= 0.00事件/秒

12/18/15 12:01:17 PM ================================================== ====================

- 米 - ----------------------------------------------- -----------------------請求數= 1平均速率= 0.33事件/秒1分鍾速率= 0.00事件/秒5分鍾速率= 0.00事件/秒15分鍾速率= 0.00事件/秒

12/18/15 12:01:18 PM ======================================= ====================

- 米 - ----------------------------------------------- -----------------------請求計數= 1平均速率= 0.25事件/秒1分鍾速率= 0.00事件/秒5分鍾速率= 0.00事件/秒15分鍾速率= 0.00事件/秒

12/18/15 12:01:19 PM ================================================== ====================

- 米 - ----------------------------------------------- -----------------------請求數= 1平均速率= 0.20事件/秒1分鍾速率= 0.00事件/秒5分鍾速率= 0.00事件/秒15分鍾速率= 0.00事件/秒

創建注冊表后,您以1秒的間隔啟動了報告者。 因此,對於每一秒,您的控制台記者將輸出到控制台。

您已選擇計量表類型指標,可以計算(此事件發生的次數)和平均速率(平均速率)。 其他費率將為零,因為該測量的單個時間單位尚未結束。 例如。 您只運行程序5秒鍾,因此您不會獲得1分鍾的費率。 讓它運行超過1分鍾你可以看到其他價值有一些價值。

requests.mark();

上面的行用於標記事件的發生。 正如您在觸發指標事件時調用它一樣。 由於您不再在程序中調用此方法,因此計數仍為1。

平均速率是(從應用開始的總計數)/(從開始的每秒的總時間)。 注意:這是秒。 每一秒都有記者打印。 當count = 1時,在第1秒速率=(1計數)/(1秒)。 在第2秒速率=(1計數)/(2秒)= 0.5,在第3秒速率=(1計數)/(3秒)= 0.33

1分鍾的速率是(最后1分鍾的總計數)/(60秒)。 這里1分鍾的費率為零,因為還有1分鍾沒有通過。 以下大間隔率也是如此

5分鍾的速率是(最后5分鍾的總計數)/(5 * 60秒)。 5分鍾= 5 * 60秒

您可能希望線程休眠,從而期望日志中有5秒的間隔。 但記者正在以不同的方式運作。 所以這里睡5秒是沒有價值的,除了讓程序運行到5秒。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM