我们正在轮询来自kafka的消息(使用执行器线程),并将其放在vert.x eventbus上。最终,非工作人员的顶点消耗了事件总线中的消息。
我们测量到,从vertx eventbus发送到每条消息后,消耗每条消息所需的时间在峰值时可能达到4秒。
出于某种原因,事件总线有时需要花费很长时间才能消耗消息,但在我们无法确定延迟时间之前,不会显示线程块错误
奇怪的是,我们没有看到任何事件循环阻止警告。我们还能做什么? cpu / ram都很好。唯一可以实际显示某些内容的指标是:
但是它什么也没告诉我们(不知道如何将事件总线处理程序与事件循环延迟相关联)
我们应该检查些什么,以了解是什么使vert.x eventbus的eventloop消耗变慢?
答案 0 :(得分:0)
您应该尝试测量时间轴上通过事件总线发送的数据量,以及通过同一事件总线在每个顶点上接收的数据量。这可能会突出显示瓶颈问题。
也许您应该看看vertx-dropwizard-metrics project提供的jmx指标。能够计算出这些时间表非常有用。
例如,您可能会对glowroot这样的Java APM感兴趣,以便更好地了解问题所在。