Меня смущает метод 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?
Чем больше я копаю, тем больше у меня вопросов, поэтому я думал, что буду начни с этого.
спасибо, Дин