Yep. You guys have been great. One of the best mailing lists/dev lists I've been on in a while. Very quick responses.
When I set Socket.NoDelay = true; in the TServerSocket I was able to improve from the original ~30 messages / sec to ~11k messages / sec. Still slow compared to using cpp on both sides of the link, that got me 30k msg/sec but 11k is fine with me and the other transport mechanisms might help. Chris On Mon, Feb 7, 2011 at 5:10 PM, Diego Jancic <[email protected]> wrote: > Chris, were you able to make it work fast? > > On Mon, Feb 7, 2011 at 18:55, Chris Morgan <[email protected]> wrote: > >> Hi Jonathan. >> >> I see two issues: >> >> 1. How is ANYONE going to know that they will get 1000x the >> performance with c#/mono(maybe even under ms .net) if they use >> TFramedTransport vs. TServerSocket? >> >> 2. If the right thing is to use TFramedTransport then why not remove >> TCP_NODELAY from java, cpp and whatever other platforms that set it? >> >> 3. If people want to keep TCP_NODELAY on for java and cpp then why not >> enable it for c# to make it the same as the rest? >> >> Chris >> >> >> >> On Mon, Feb 7, 2011 at 4:51 PM, Jonathan Ellis <[email protected]> wrote: >> > You're right, it doesn't set nodelay. Alexey's analysis was that "If >> > TFramedTransport used just one write() call per frame, there is no >> > need for setNoTcpDelay." >> > >> > I don't know if he was right or not but it was a deliberate choice and >> > not an oversight. >> > >> > On Mon, Feb 7, 2011 at 3:08 PM, Chris Morgan <[email protected]> wrote: >> >> Hi Bryan. >> >> >> >> Actually haven't heard this before. Just started using thrift a few >> >> days ago. I'll gladly try that for additional performance. >> >> >> >> I'd also like to resolve the issue for future users that may consider >> >> using thrift with mono and abandon the idea when they get 30 messages >> >> /sec. >> >> >> >> Shouldn't the c# TServerSocket work like the cpp and java ones do in >> >> terms of disabling nagle? >> >> >> >> Chris >> >> >> >> >> >> >> >> On Mon, Feb 7, 2011 at 4:05 PM, Bryan Duxbury <[email protected]> >> wrote: >> >>> You're probably tired of hearing this already, but please, please use >> >>> buffered or framed transport. It will make your servers and clients >> >>> noticeably faster in a lot of cases. >> >>> >> >>> On Mon, Feb 7, 2011 at 12:48 PM, Chris Morgan <[email protected]> >> wrote: >> >>> >> >>>> Hi Jonathan. >> >>>> >> >>>> If it were committed wouldn't it be present in svn trunk? I'm using >> >>>> svn trunk because I was hoping it had been fixed since the last >> >>>> release. >> >>>> >> >>>> I looked at the commit, c1063966, and I don't see any mention of >> >>>> disabling nodelay and the changes are modifying >> >>>> src/Transport/TFramedTransport.cs >> >>>> >> >>>> My server code looks like: >> >>>> >> >>>> var ourProcessor = new OurProcessor(); >> >>>> var processor = new >> TheProcessor.Processor(ourProcessor); >> >>>> TServerTransport serverTransport = new >> TServerSocket(9090); >> >>>> TServer server = new TSimpleServer(processor, >> >>>> serverTransport); >> >>>> >> >>>> So I'm not sure how the changes made to TFramedTransport would be >> >>>> affecting TServerSocket since they don't seem connected. >> >>>> >> >>>> Chris >> >>>> >> >>>> >> >>>> On Mon, Feb 7, 2011 at 3:36 PM, Jonathan Ellis <[email protected]> >> wrote: >> >>>> > Read the ticket you got the patch from -- it's been committed for >> the >> >>>> > next release. >> >>>> > >> >>>> > On Mon, Feb 7, 2011 at 2:32 PM, Chris Morgan <[email protected]> >> wrote: >> >>>> >> On Mon, Feb 7, 2011 at 3:30 PM, Chris Morgan <[email protected]> >> >>>> wrote: >> >>>> >>> I just tested it out and setting NoDelay on the socket brought the >> >>>> >>> rate up from 30msg/sec up to ~12k msg/sec which is fine for me for >> >>>> >>> now. >> >>>> >>> >> >>>> >>> What now? It looks like the guy that fixed the issue reported by >> >>>> >>> Jonathan says the solution is to used a frame transport? It still >> >>>> >>> looks like this is an issue with whatever the default transport >> is, >> >>>> >>> TServerSocket I guess? >> >>>> >>> >> >>>> >>> Chris >> >>>> >>> >> >>>> >> >> >>>> >> In addition the cpp TSocket.cpp sets TCP_NODELAY. Why shouldn't c# >> do >> >>>> >> what cpp and java do? >> >>>> >> >> >>>> >> Chris >> >>>> >> >> >>>> > >> >>>> > >> >>>> > >> >>>> > -- >> >>>> > Jonathan Ellis >> >>>> > Project Chair, Apache Cassandra >> >>>> > co-founder of DataStax, the source for professional Cassandra >> support >> >>>> > http://www.datastax.com >> >>>> > >> >>>> >> >>> >> >> >> > >> > >> > >> > -- >> > Jonathan Ellis >> > Project Chair, Apache Cassandra >> > co-founder of DataStax, the source for professional Cassandra support >> > http://www.datastax.com >> > >> >
