V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
imherer
V2EX  ›  程序员

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

  •  
  •   imherer · 12 天前 · 490 次点击

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

    不知道 22 个算不算大?

    7 条回复    2024-05-27 14:49:05 +08:00
    fantastM
        1
    fantastM  
       12 天前   ❤️ 1
    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
        2
    rrfeng  
       12 天前   ❤️ 1
    影响不大
    sampeng
        3
    sampeng  
       12 天前   ❤️ 1
    都是内存操作。。为何会大?
    但是,个数个多无所谓,你别基数太高。
    线上就有个研发把 label 写交易 id 。。。妈蛋。。。反而把我 prometheus server 干死了。。不过那是古早了。现在有问题,但可解。不过依然要注意,性能不影响,但这玩意无论如何是在内存的,给你干 oom 了别哭
    imherer
        4
    imherer  
    OP
       11 天前
    @sampeng 到了 prometheus server 那边也是纯内存的吗?
    sampeng
        5
    sampeng  
       11 天前
    @imherer 以前是有 buffer 。。给我干死过。后面升级过后就好多了。另一方面是一开始没事,因为基数太大,启动在做校验能把内存全给干死。每次我一换机器就直接起不来,一开始没当回事,一查,有个研发把 id 当 label 。。。但后面 prometheus 缓解了这个问题。

    不过,你要计算的是在业务端,22 个 label ,很容易大基数。这都是在内存里面的,分分钟几百 M 的内存占用。
    imherer
        6
    imherer  
    OP
       10 天前
    @sampeng label 有 7 个,不算多吧,就是这个 buckets 有 22 个,从 0.00x 到几百
    sampeng
        7
    sampeng  
       7 天前
    @imherer 我的意思是。。只要基数不大,闭着眼睛用。。就是每个 label 又几百个变量。那得玩死,10 个以下,感觉 22 个随便用
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1626 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 16:49 · PVG 00:49 · LAX 09:49 · JFK 12:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.