1
votes

We are polling messages from kafka (using Executor Thread) and put it on vert.x eventbus. eventually the verticles(non-workers) consuming those messages from the eventbus.

we measured that the time it takes to each message to be consumed from vertx eventbus after it was sent to it can reach to 4 seconds on peaks.

for some reason occasionally it takes to the eventbus long time to consume messages but not showing thread block error therfore we cant tell what delaying it

weird thing that we dont see any event loop block warnings. what else can we do? cpu/ram are all good. only metric that can actually show something is that:

enter image description here

but it doesnt tell us anything (no idea how eventbus handlers can be associated with eventloop latency)

what shall we check to understand what makes our eventloop consumption from vert.x eventbus to be slow?

1
It's hard to guide you. For example we don't even know where does this metric come from. I would advise to post a message to the Vert.x users forum with some more context about your application. - tsegismont
@tsegismont regardless this metric. Have you ever had a situation where you slow consuming from eventbus? - rayman
Is it a local or a distributed Event Bus? - Alexey Soshin
@AlexeySoshin distributed Event Bus - rayman
Based on Hazelcast? - Alexey Soshin

1 Answers

0
votes

You should try to measure the amount of data you're sending through the eventbus in a timeline and the amount of data that are received on each verticle through the same eventbus. This can highlight a bottleneck issue.

Maybe you should take a look to the jmx metrics provided by vertx-dropwizard-metrics project. That's can be usefull to be able to compute this timelines.

You also might be interested by taking a look to a Java APM like glowroot for example to have a better understanding of what's wrong.