gpt4 book ai didi

java - 如何测量 Apache Storm 中线程之间的运行时间?

转载 作者:行者123 更新时间:2023-12-02 10:05:48 25 4
gpt4 key购买 nike

我正在使用 [codahale-metrics] 获取 Storm 的 Bolt 和 Spout 的指标并将其发送到 Graphite 服务器。如何获得在 Bolt 和 Spout 之间发送消息的时间?例如。此代码仅用于每个执行器的指标:

import com.codahale.metrics.Histogram;
import com.codahale.metrics.Meter;
import com.codahale.metrics.Timer;

public class MqttSensorDetailSpout extends BaseRichSpout {
private Meter tupleMeter;
private Timer tupleTimer;
private Histogram tupleHistogram;
public void open(Map conf, TopologyContext context, SpoutOutputCollector collector) {
this.context = context;
this.collector = collector;
this.tupleMeter = context.registerMeter("meterSpout-" + this.topic);
this.tupleTimer = context.registerTimer("timerSpout-" + this.topic);
this.tupleHistogram = context.registerHistogram("histogramSpout-" + this.topic);
}
public void nextTuple() {
final Timer.Context timeContext = this.tupleTimer.time();
this.tupleMeter.mark();
try {

} finally {
timeContext.stop();
}
}
}

我想知道执行者之间发送消息所用的时间。我将如何实现它?谢谢,费利佩

最佳答案

Storm 不会对消息添加时间戳,因为我们无法确定人们是否在其服务器上设置了 NTP 或类似的东西。如果您想知道将一个元组从一个执行器发送到另一个执行器需要多长时间,您应该手动向您发送的元组添加时间戳。您可以像添加任何其他元组字段一样添加它。然后您的下游 Bolt 可以读取输入元组的时间戳,并计算传输需要多长时间。

关于java - 如何测量 Apache Storm 中线程之间的运行时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55344231/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com