微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

__execute-count 值与 Metrics Reporting API v2 收集的值之间的差异

如何解决__execute-count 值与 Metrics Reporting API v2 收集的值之间的差异

我运行了一个拓扑,并在 metric Reporting API v2 中使用了 Meter 类型。在执行方法中,我标记了这个指标。所以每当调用execute方法时它都会标记一个事件。但是当我将此值与 __execute-count 进行比较时,我看到了巨大的差异。有谁知道为什么会这样?

这些是我的日志中同时收集的值:

9:v7 __execute-count {v0:v7=44500}
9:v7 tuple_inRate.count 664129

更新: 当我在 Meter 指标上使用 mark 方法时,与 Counter 指标相比,我会得到不同的结果。但是,我仍然不明白为什么计数器指标(元组计数器)的值与 __execute-count 不同。

解决方法

如本 answer 中所述,Storms 内部指标只是根据实际数据流的百分比估算。最初,它使用 5% 的传入元组来进行这些估计。这可能会导致极高或极低的吞吐量不准确。

编辑:文档描述了以下内容:

一般来说,除非另有说明,否则所有这些元组计数指标都是随机子采样的。这意味着您在 UI 和内置指标中看到的计数不一定准确。事实上,默认情况下,我们仅对 5% 的事件进行抽样,并从中估计事件总数。采样百分比可通过topology.stats.sample.rate 配置按拓扑进行配置。将其设置为 1.0 将使计数准确,但请注意,我们采样的事件越多,拓扑运行的速度就越慢(因为度量在处理元组时在同一代码路径中进行计数)。这就是为什么我们将 5% 的采样率设为默认值。

EDIT 2 在这个 post 中,有更多关于估计的信息:

它的工作方式是,如果您选择 0.05 的采样率,它将选择接下来 20 个事件的随机元素,将计数增加 20。因此,如果您有 20该螺栓的任务,您的统计数据可能会下降 +-380。

顺便说一下,execute_count 只是一个递增的数字,而您的 tuple_inRate.count 是一个比率,不是吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。