[rabbitmq-discuss] Possibly latency issues
simon at rabbitmq.com
Tue Feb 14 13:24:10 GMT 2012
On 14/02/12 02:47, Sam Crawley wrote:
> Running this, I always get an average time (and I'm obviously only
> timing the reading of messages) of 0.04s. (FWIW, I get the same with our
> home grown client).
> Does it seem like there's something wrong here?
Yes. Very much so. I replicated your problem.
The problem is that the old version of librabbitmq that is embedded in
Net::RabbitMQ does not disable Nagle's algorithm. (I assume your
homebrew client also does not.)
Looking in wireshark we see that almost all of the delay happens after
the basic.publish, when the TCP stack waits 0.04s (on my machine) for
more data before *actually* sending the publish. Everything else is very
fast in comparison, giving an almost perfect 25 msg/s for me.
I hacked in a call to setsockopt() to set TCP_NODELAY in amqp_socket.c,
and now I get:
Longest request: 0.000537, Shortest Request: 0.000146
Mean Req time: 0
Which I think is more the performance you might be looking for.
(Presumably the "mean req time" suffered underflow.)
The current version of librabbitmq sets TCP_NODELAY, so maybe
Net::RabbitMQ should be updated? (CCing maintainer...)
More information about the rabbitmq-discuss