Для чего используется DistributionStatisticBufferLength на DistributionSummary в микрометрах? - PullRequest
0 голосов
/ 13 апреля 2020

Меня смущает метод distributionStatisticBufferLength (). Я думал, что это был кольцевой буфер последних значений, чтобы его можно было отсортировать и выбрать 99-й процентиль. ie. если бы у меня было 100 ведер, вы можете отсортировать их, выбрать 99-й по величине и сказать, что это 99-й процентиль для последних 100.

Я пытался сделать это, что явно неправильно, так как это очень медленно и при каждом вызове bytesParsedDist.record

    bytesParsedDist = DistributionSummary
            .builder(id+".http1.payloadin.size")
            .distributionStatisticBufferLength(100)
            .distributionStatisticExpiry(Duration.ofMinutes(10))
            .publishPercentiles(0.50, 0.99, 1)
            .baseUnit("bytes") // optional (1)
            .register(metrics);

передается более 100 сегментов. Мне также интересно узнать, есть ли у меня 10000 значений за одну минуту против 5 значений в минуту. В идеале, при 5 значениях в минуту я бы хотел рассчитывать p99 для последних 100 значений каждую минуту. Ясно, что каждая минута делится «некоторыми» значениями, но, увы, некоторые значения должны выпадать из какого-то кольцевого буфера.

Поскольку вещи достигают 10000 значений, я бы ЛЮБИЛ использовать одну и ту же настройку, чтобы она работала в обоих мирах. , Даже из 10 000 значений за 1 минуту я хотел бы использовать все 10 000 таким образом, чтобы они сортировались и каждую минуту просматривалось и записывалось значение p99 в точке 9900.

Есть ли способ в микрометре настроить это поведение на 5 в минуту и ​​10 000 в минуту с той же конфигурацией?

Кроме того, для чего это distributionStatisticBufferLength?

Чем больше я копаю, тем больше у меня вопросов, поэтому я думал, что буду начни с этого.

спасибо, Дин

...