Yes, one should use either the TBufferedTransport or TFramedTransport in Java for performance reasons. These are analogous to the C# Socket classes and you should see a performance improvement from buffering.


On Apr 24, 2010, at 5:31 PM, Joost Ouwerkerk <jo...@openplaces.org> wrote:

Is this something that also needs to be managed in Java? In most examples I've seen, connections are created like this:
            TSocket socket = new TSocket(location, thriftport)
TBinaryProtocol binaryProtocol = new TBinaryProtocol (socket, false, false);

Cassandra.Client client = new Cassandra.Client (binaryProtocol);
Is that sub-optimal?
joost.

On Fri, Apr 23, 2010 at 3:29 PM, Heath Oderman <he...@526valley.com> wrote:
Really interesting find.

After Jonathan E. suggested py_stress and it seemed clear the problem was in my .net client I spent a few days debugging the client in detail.

I ended up changing my CassandraContext instantiation to use a

          TBuffferedProtocol(TSocket) instead of a
          TSocket directly.

The difference was *dramatic*.

The calls to debian suddenly behaved as expected, eclipsing the write speeds under load of the calls to the OSX box by a factor of 2!

The change caused a performance increase in the client communicating with OSX as well, but the improvement was smaller.

I don't understand exactly, but clearly there's a difference in the way that Debian and OSX handle socket level communications that has a big effect on a .net client calling in from windows.

It's been a really interesting experiment and I throughly appreciate all the help and pointers I've gotten from this list.

Cassandra is so fast, and so impressive it strains credibility. I'm totally amazed by what these guys have put together.

Thanks,
Stu

Reply via email to