You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何histogram_quantile无法展示+inf桶的请求数据?

问题原因与解决方案

核心原因:直方图的本质限制与histogram_quantile的估算逻辑

Prometheus的直方图(Histogram)是分桶统计结构,仅记录每个延迟区间(桶)内的请求数量,不会保存单个请求的精确延迟值。histogram_quantile函数基于桶的计数估算分位数,无法获取+Inf桶内请求的实际延迟:

  • 当目标分位数落入+Inf桶对应的区间时,函数只能用最大的有限桶上限值(即你的配置里的10000ms)作为估算结果,因为没有更精确的数值可参考。这就是100%分位稳定显示10秒,而非实际更大延迟的原因。
  • 99分位看不到超过10秒的请求,是因为99%的请求都落在10000ms及以下的桶中,仅不足1%的请求进入+Inf桶,所以99分位的估算值仍处于10秒以内。

可行解决办法

  1. 统计超过10秒的请求数量
    直接计算+Inf桶与10000ms桶的速率差值,即可得到每秒内超过10秒的请求数:
sum(rate(istio_request_duration_milliseconds_bucket{reporter="source", destination_app="my-server", response_code!~"(5..|429)", le="+Inf"}[5m]))
-
sum(rate(istio_request_duration_milliseconds_bucket{reporter="source", destination_app="my-server", response_code!~"(5..|429)", le="10000"}[5m]))
  1. 获取更精确的高分位数估算
    修改Istio的延迟直方图配置,添加更大的有限桶(如20000、30000、60000等ms级别)。这样超过10秒的请求会落入新增桶中,histogram_quantile就能基于这些桶的上限值,给出更接近实际延迟的分位数估算结果。

内容的提问来源于stack exchange,提问作者Scott Napolitan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 15:00:10