Also have to keep in mind that it should be rare to only use a single socket since you are usually making at least 1 connection per node in the cluster (or local datacenter). There is also nothing enforcing that a single client cannot open more than 1 connection to a node. In the end it should come down to which protocol implementation is faster.
On Mon, May 6, 2013 at 11:58 AM, Aaron Turner <synfina...@gmail.com> wrote: > From my experience, your NIC buffers generally aren't the problem (or at > least it's easy to tune them to fix). It's TCP. Simply put, your raw NIC > throughput > single TCP socket throughput on most modern hardware/OS > combinations. This is especially true as latency increases between the two > hosts. This is why Bittorrent or "download accellerators" are often faster > then just downloading a large file via your browser or ftp client- they're > running multiple TCP connections in parallel compared to only one. > > TCP is great for reliable, bi-directional, stream based communication. > Not the best solution for high throughput though. UDP is much better for > that, but then you loose all the features that TCP gives you and so then > people end up re-inventing the wheel (poorly I might add). > > So yeah, I think the answer to the question of "which is faster" the > answer is "it depends on your queries". > > > > On Mon, May 6, 2013 at 10:24 AM, Hiller, Dean <dean.hil...@nrel.gov>wrote: > >> You have me thinking more. I wonder in practice if 3 sockets is any >> faster than 1 socket when doing nio. If your buffer sizes were small, >> maybe that would be the case. Usually the nic buffers are big so when the >> selector fires it is reading from 3 buffers for 3 sockets or 1 buffer for >> one socket. In both cases, all 3 requests are there in the buffers. At >> any rate, my belief is it probably is still basically parallel performance >> on one socket though I have not tested my theory…..My theory being the real >> bottleneck on performance being the work cassandra has to do on the reads >> and such. >> >> What about 20 sockets then(like someone has a pool). Will it be any >> faster…not really sure as in the end you are still held up by the real >> bottleneck of reading from disk on the cassandra side. We went to 20 >> threads in one case using 20 sockets with astyanax and received no >> performance improvement(synchronous but more sockets did not improve our >> performance). Ie. It may be the case 90% of the time, one socket is just >> as fast as 10/20…..I would love to know the truth/answer to that though. >> >> Later, >> Dean >> >> >> From: Aaron Turner <synfina...@gmail.com<mailto:synfina...@gmail.com>> >> Reply-To: "user@cassandra.apache.org<mailto:user@cassandra.apache.org>" < >> user@cassandra.apache.org<mailto:user@cassandra.apache.org>> >> Date: Monday, May 6, 2013 10:57 AM >> To: cassandra users <user@cassandra.apache.org<mailto: >> user@cassandra.apache.org>> >> Subject: Re: hector or astyanax >> >> Just because you can batch queries or have the server process them out of >> order doesn't make it fully "parellel". You're still using a single TCP >> connection which is by definition a serial data stream. Basically, if you >> send a bunch of queries which each return a large amount of data you've >> effectively limited your query throughput to a single TCP connection. >> Using Thrift, each query result is returned in it's own TCP stream in >> *parallel*. >> >> Not saying the new API isn't great, doesn't have it's place or may have >> better performance in certain situations, but generally speaking I would >> refrain from making general claims without actual benchmarks to back them >> up. I do completely agree that Async interfaces have their place and have >> certain advantages over multi-threading models, but it's just another tool >> to be used when appropriate. >> >> Just my .02. :) >> >> >> >> On Mon, May 6, 2013 at 5:08 AM, Hiller, Dean <dean.hil...@nrel.gov >> <mailto:dean.hil...@nrel.gov>> wrote: >> I was under the impression that it is multiple requests using a single >> connectin PARALLEL not serial as they have request ids and the responses do >> as well so you can send a request while a previous request has no response >> just yet. >> >> I think you do get a big speed advantage from the asynchronous nature as >> you do not need to hold up so many threads in your webserver while you have >> outstanding requests being processed. The thrift async was not exactly >> async like I am suspecting the new java driver is, but have not verified(I >> hope it is) >> >> Dean >> >> From: Aaron Turner <synfina...@gmail.com<mailto:synfina...@gmail.com >> ><mailto:synfina...@gmail.com<mailto:synfina...@gmail.com>>> >> Reply-To: "user@cassandra.apache.org<mailto:user@cassandra.apache.org >> ><mailto:user@cassandra.apache.org<mailto:user@cassandra.apache.org>>" < >> user@cassandra.apache.org<mailto:user@cassandra.apache.org><mailto: >> user@cassandra.apache.org<mailto:user@cassandra.apache.org>>> >> Date: Sunday, May 5, 2013 5:27 PM >> To: cassandra users <user@cassandra.apache.org<mailto: >> user@cassandra.apache.org><mailto:user@cassandra.apache.org<mailto: >> user@cassandra.apache.org>>> >> Subject: Re: hector or astyanax >> >> >> >> On Sun, May 5, 2013 at 1:09 PM, Derek Williams <de...@fyrie.net<mailto: >> de...@fyrie.net><mailto:de...@fyrie.net<mailto:de...@fyrie.net>>> wrote: >> The binary protocol is able to multiplex multiple requests using a single >> connection, which can lead to much better performance (similar to HTTP vs >> SPDY). This is without comparing the performance of thrift vs binary >> protocol, which I assume the binary protocol would be faster since it is >> specialized for cassandra requests. >> >> >> Curious why you think multiplexing multiple requests over a single >> connection (serial) is faster then multiple requests over multiple >> connections (parallel)? >> >> And isn't Thrift a binary protocol? >> >> >> -- >> Aaron Turner >> http://synfin.net/ Twitter: @synfinatic >> http://tcpreplay.synfin.net/ - Pcap editing and replay tools for Unix & >> Windows >> Those who would give up essential Liberty, to purchase a little temporary >> Safety, deserve neither Liberty nor Safety. >> -- Benjamin Franklin >> "carpe diem quam minimum credula postero" >> >> >> >> -- >> Aaron Turner >> http://synfin.net/ Twitter: @synfinatic >> http://tcpreplay.synfin.net/ - Pcap editing and replay tools for Unix & >> Windows >> Those who would give up essential Liberty, to purchase a little temporary >> Safety, deserve neither Liberty nor Safety. >> -- Benjamin Franklin >> "carpe diem quam minimum credula postero" >> > > > > -- > Aaron Turner > http://synfin.net/ Twitter: @synfinatic > http://tcpreplay.synfin.net/ - Pcap editing and replay tools for Unix & > Windows > Those who would give up essential Liberty, to purchase a little temporary > Safety, deserve neither Liberty nor Safety. > -- Benjamin Franklin > "carpe diem quam minimum credula postero" > -- Derek Williams