Questions about read performance

162 views
Skip to first unread message

Brian Yule

unread,
Oct 19, 2017, 3:49:54 AM10/19/17
to rabbitmq-users
Is there a case for sending batches to the client from the server?  For instance, say 2000 is the QOS, does it get an ack and then send another?
Could it use an 80/20 rule for sending the 20% in a single network stream, chunked at data size x  (cater for large messages), when the 400th item is acked? Or Math.Ciel((QOS/100)*20).  I expect this would increase performance in cases where message size is less than ~17k.  And at socket connect time, does it send the QOS as a batch, or does it send one at a time?

Is there a case for checking the registry for the TCP Window Size on Windows and use that as the send/receive buffer size.  I believe socket default is currently 8k send/receive.  The TCP Window Size default is 17,520.  Its my guess that most cloud based machines have had this setting optimized, And possibly using the powershell optimizations at https://msdn.microsoft.com/en-us/library/cc594541(v=bts.10).aspx.  My PC has been optimized up to 64,420 using this.  Our network administrators chose 25,600, on a 10GiB network, I suspect it should be higher.

Is there a case for a changing the protocol, to allow on send of the header to specify the endian of the client, so that the server can respond in the correct endian, would improve read performance if we didn't have to use the networkbinaryreader, and instead simply used binaryreader.

Is there a case for allowing changes to QOS on a channel over time, when the consumer is running?  Currently this is not possible using .NET Client.

Michael Klishin

unread,
Oct 19, 2017, 7:50:14 AM10/19/17
to rabbitm...@googlegroups.com
RabbitMQ does not batch consumer deliveries. There is no batch delivery operation in the protocol.

This has been considered before but never really investigated.
TCP write batching should be safe for all existing clients.

Extending the protocol is much trickier and requires updating all clients or conditionally checking if
a client supports protocol-level batching.

It would be an interesting thing to investigate after 3.7.0 ships.

--
You received this message because you are subscribed to the Google Groups "rabbitmq-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rabbitmq-users+unsubscribe@googlegroups.com.
To post to this group, send email to rabbitmq-users@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.



--
MK

Staff Software Engineer, Pivotal/RabbitMQ
Reply all
Reply to author
Forward
0 new messages