On 22/03/2016 20:13, Matthew Lowe wrote:
The maxTuplePending is set to 35 (During testing we found 3 ackers and 35 max
pending was “good")
Have you tried increasing this now you have built your spout-bolt-bolt
topology?
When testing with only the Spout (no bolts) I was emitting about 70,000 per
second.
When adding the first bolt this it then dropped to about 10,000 - 14,000 per
second
Finally, adding the final bolt dropped me down to about 5,000 per second.
When looking at Storm ui the spout takes about 11ms (complete latency, when
running full topology)
And each spout takes about 0.2ms to execute.
When running only the Spout the complete latency is a lot less, maybe 2-3ms.
Once maxTuplePending is reached the spout stops sending, and won't send
another message until a previous message has been fully processed, all
the way to the end.
You have set a limit of 35 messages "in flight" and each message takes
11ms end to end. This gives you an expected throughput of 35 x (1000/11)
~= 3,200 messages per second.
When running only the spout with 2ms latency you would expect 35 x
(1000/2) = 17,500 messages per second.
Those numbers don't tie exactly with what you see, but gives a rough
idea of how maxTuplePending might be limiting your throughput. At least,
that's my guess as to what's happening :-)
Regards,
Brian.