Details
-
Improvement
-
Status: Closed
-
Major
-
Resolution: Fixed
-
0.12
-
None
Description
set TCP_NODELAY true by default in the Java client to improve general performance.
TCP_NODELAY is currently set false by default. This leads to synchronous commands such as ExecutionSync or TxCommit taking a potentially very long amount of time (~30-40ms observed), which cripples transactional performance, causes consumer creation to take a long time, and generally impedes performance of messaging patterns such as request-response.
Whilst this change could perhaps cause some falloff in out-the-box peak throughput in situations such as NoAck mode, the observed performance increases in a variety of other situations such as the above is too large (anything from 10% to 1000%, yes 10x throughput, has been observed in select tests) to ignore for our general out-the-box configuration. Users interested in the ultimate throughput will be the ones most likely to tune for it, so we should set default configuration to cater for those who arent/dont.