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
