HBaseClient wastes 1 TCP packet per RPC
---------------------------------------
Key: HBASE-3115
URL: https://issues.apache.org/jira/browse/HBASE-3115
Project: HBase
Issue Type: Improvement
Components: client
Affects Versions: 0.89.20100621, 0.20.6, 0.20.5, 0.20.4, 0.20.3, 0.20.2,
0.20.1
Reporter: Benoit Sigoure
Priority: Minor
In {{ipc/HBaseClient.java}}, the method {{sendParam}} does:
{code}
out.writeInt(dataLength); //first put the data length
out.write(data, 0, dataLength);//write the data
{code}
While analyzing some tcpdump traces tonight, I saw that this consistently
translates to 1 TCP packet with a 4 byte payload followed by another TCP packet
with the RPC itself. This makes inefficient use of network resources and
adversely affects TCP throughput. I believe each of those lines translates to
a {{write}} system call on the socket's file descriptor (unnecessary system
calls are also bad for performance). The code attempts to call
{{out.flush();}} but this approach is ineffective on sockets in Java (as far as
I empirically noticed over the past few months).
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.