2015-12-18 2 views
1

Я новичок в показателях, и я не понимаю, почему я получаю этот вывод. Пожалуйста, объясните кому-нибудь. Заранее спасибо.Показатели Java Пример кода

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 ==================================================================================== ===================

- Счетчики -------------------------------------------- -------------------------- запросы count = 1 средняя скорость = 0,33 события/сек 1-минутная ставка = 0.00 событий/сек. 5-минутная скорость = 0,00 события/секунда 15-минутная ставка = 0,00 события/сек

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

- Счетчики ------------------------------------------------- --------------------- запросы count = 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 -minute ставка = 0.00 события/сек

+2

Можете ли вы поделиться тем, что вы ожидали от вывода? –

+1

Вы смущены тем фактом, что с одной стороны вы видите, что количество зачетов рассчитывается = 1', а с другой - некоторые из ваших ставок - '0,00'? Посмотрите на ['mark()'] (http://grepcode.com/file/repo1.maven.org/maven2/com.codahale.metrics/metrics-core/3.0.0/com/codahale/metrics/ Meter.java # Meter.mark% 28% 29), он увеличивает счет на 1 уже. – Marged

+0

@RajnikantPatel Я изучаю недавно. Я просто хочу понять, как им получить этот выход. – Aradhya

ответ

3

После создания реестра, вы приступили к репортеру с 1 секундным интервалом. Поэтому каждую секунду ваш консольный репортер выводит на консоль.

Вы выбрали тип счетчик метрики, который не даст вам рассчитывать (не раз произошло это событие) и средняя скорость (средняя скорость). Другие ставки будут равны нулю, поскольку единичная единица измерения еще не закончена. Например. Вы запустили программу только на 5 секунд, чтобы не получить 1 минута.Пусть он работает более 1 минуты, вы можете увидеть другие ставки с некоторой стоимостью.

Вышеприведенная строка используется для обозначения события. Поскольку вы вызвали его, как только произойдет событие с метрикой. Поскольку вы больше не вызываете этот метод в программе, поэтому счет остается равным 1.

средняя скорость (общее количество с начала приложения)/(общее время в секундах от начала). Примечание: здесь секунд. Для каждого второго репортера печатается. Как счет = 1, при 1-й секунде = = 1 счетчик/(1сек). (1 счет)/(3 с) = 0,33

1 мин. ставка (общее количество за последние 1 мин)/(60 секунд). 1 минута ставки здесь равна нулю, потому что еще 1 минута не прошла. То же самое для следующих больших интервальных значений

5 мин. Ставка (общее количество за последние 5 минут)/(5 * 60 секунд). 5 минут = 5 * 60 секунд

Вы можете ожидать, что нить спала и, таким образом, ожидала разрыв в 5 секунд в журнале. Но репортер работает в другой теме. Таким образом, спать в течение 5 секунд не имеет значения, за исключением того, что программа работает до 5 секунд.

+1

вы можете принять ответ, если это имеет смысл и понятно? –

+0

Не могли бы вы помочь мне, обменявшись некоторыми учебными ссылками или некоторым ресурсом, чтобы узнать показатели. – Aradhya

+1

https://dropwizard.github.io/metrics/3.1.0/ –

Смежные вопросы