prometheus histogram buckets 过大对性能影响严重不?

219 天前
 imherer

官方的 DefBuckets 是 11 个,我目前定义的是 22 个,主要是统计的时间范围跨度有点大,从几 us 到上百 ms

不知道 22 个算不算大?

869 次点击
所在节点    程序员
7 条回复
fantastM
219 天前
bucket 可以当作一个 label ,不是影响性能的重点。需要关注的是,所有 label 的 key-value 组合有多少种,太多的话,会引起高基数问题 https://prometheus.io/docs/practices/naming/#labels

CAUTION: Remember that every unique combination of key-value label pairs represents a new time series, which can dramatically increase the amount of data stored. Do not use labels to store dimensions with high cardinality (many different label values), such as user IDs, email addresses, or other unbounded sets of values.
rrfeng
219 天前
影响不大
sampeng
219 天前
都是内存操作。。为何会大?
但是,个数个多无所谓,你别基数太高。
线上就有个研发把 label 写交易 id 。。。妈蛋。。。反而把我 prometheus server 干死了。。不过那是古早了。现在有问题,但可解。不过依然要注意,性能不影响,但这玩意无论如何是在内存的,给你干 oom 了别哭
imherer
218 天前
@sampeng 到了 prometheus server 那边也是纯内存的吗?
sampeng
218 天前
@imherer 以前是有 buffer 。。给我干死过。后面升级过后就好多了。另一方面是一开始没事,因为基数太大,启动在做校验能把内存全给干死。每次我一换机器就直接起不来,一开始没当回事,一查,有个研发把 id 当 label 。。。但后面 prometheus 缓解了这个问题。

不过,你要计算的是在业务端,22 个 label ,很容易大基数。这都是在内存里面的,分分钟几百 M 的内存占用。
imherer
217 天前
@sampeng label 有 7 个,不算多吧,就是这个 buckets 有 22 个,从 0.00x 到几百
sampeng
214 天前
@imherer 我的意思是。。只要基数不大,闭着眼睛用。。就是每个 label 又几百个变量。那得玩死,10 个以下,感觉 22 个随便用

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1042922

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX