[ https://issues.apache.org/jira/browse/HBASE-3115?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12922435#action_12922435 ]
Benoit Sigoure commented on HBASE-3115: --------------------------------------- No I haven't tried it either - I don't use this HBase client anymore, I use my asynchronous client instead. But given that the patch changes the code to call out.write() only once, I can't imagine how this can be split in 2 write() system calls that would result in 2 packets. > 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.20.1, 0.20.2, 0.20.3, 0.20.4, 0.20.5, 0.20.6, > 0.89.20100621 > Reporter: Benoit Sigoure > Assignee: Todd Lipcon > Priority: Minor > Attachments: hbase-3115.txt > > > 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.