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.

Reply via email to