1

我们正在轮询来自 kafka 的消息(使用 Executor Thread)并将其放在 vert.x 事件总线上。最终,verticles(non-workers) 使用来自 eventbus 的这些消息。

我们测量了每条消息从 vertx eventbus 发送到它之后所花费的时间在峰值时可以达到 4 秒。

由于某种原因,有时事件总线需要很长时间才能使用消息但没有显示线程块错误,因此我们无法判断是什么延迟了它

奇怪的是我们没有看到任何事件循环块警告。我们还能做什么?cpu/ram 都很好。唯一可以实际显示的指标是:

在此处输入图像描述

但它没有告诉我们任何事情(不知道事件总线处理程序如何与事件循环延迟相关联)

我们应该检查什么来了解是什么让我们从 vert.x 事件总线的事件循环消耗变慢?

4

1 回答 1

0

您应该尝试测量您在时间线中通过事件总线发送的数据量,以及通过同一事件总线在每个 Verticle 上接收的数据量。这可以突出瓶颈问题。

也许你应该看看vertx-dropwizard-metrics 项目提供的 jmx 指标。这对于计算这个时间线很有用。

您也可能有兴趣查看像Glowroot这样的 Java APM ,以便更好地了解问题所在。

于 2018-12-29T07:46:13.593 回答