Optimizing Netty for fast socket accept/creation

"이희승 (Trustin Lee)" trustin at gmail.com
Wed Jul 8 05:25:10 EDT 2009


On 07/07/2009 09:54 PM, Bo Hu wrote:
> I read an article from the author of Grizzly, about using slave
> selectors to load balance OP_ACCEPT and OP_READ.
> http://weblogs.java.net/blog/jfarcand/archive/2006/07/tricks_and_tips_4.html
> 
> Maybe Netty can use the same technology in the future release. I'm still
> learning Netty, please forgive me if I'm wrong.

AFAIK, Netty does this already.

Thanks anyway :)
Trustin

> 2009/7/7 Carl Byström <cgbystrom at gmail.com <mailto:cgbystrom at gmail.com>>
> 
>     Hi Trustin!
> 
>     I wouldn't call it bad performance, it's just that I need more
>     performance :)
>     While it's understandable to use one accept (boss thread) for
>     accepting connections, I can't help thinking if things could be
>     improved with multiple accept threads.
>     When using the forking model in Unix and forking after you start
>     listening on your port you can get the effect of having multiple
>     processes listening on the same socket (file descriptor).
>     However, the JVM is inherently single-process so achieving the same
>     thing there is harder (impossible?). Maybe there are some
>     OS-specific "hacks" that can be used? Relying on certain behaviors,
>     such as fork/accept in Unix etc. Also, I know that combining these
>     things with epoll can be tricky. Have had some problems with Python
>     with epoll + multiple accept processes.
> 
>     Think I'll resort to listening on multiple ports (if nothing else
>     comes along) to achieve a better socket open/close performance.
>     Been using 3.1.0.CR1 for my tests.
> 
>     - Carl
> 
> 
> 
>     On Mon, Jul 6, 2009 at 8:59 AM, "이희승 (Trustin Lee)"
>     <trustin at gmail.com <mailto:trustin at gmail.com>> wrote:
> 
>         Hi Carl,
> 
>         Sorry for the late response first of all.
> 
>         On 06/30/2009 11:05 PM, Carl Byström wrote:
>         > Been experimenting some with Netty the last couple of days. As
>         an avid
>         > MINA fan, Netty looks great!
> 
>         Thanks! :)
> 
>         > What's been bothering is the "slow" socket accept, which
>         limits the
>         > throughput of my application. (Request/response based ála HTTP
>         1.0, so
>         > no keep-alive).
>         > (The socket accept operation isn't "slow", I just feel that it
>         could be
>         > improved thus increasing my throughput)
>         >
>         > After profiling my application I found that accept is taking
>         up most of
>         > the time. While this probably is as expected, I can't help feeling
>         > limited by that fact.
>         > I've tried having the same server listening on multiple ports thus
>         > getting a separate boss thread doing the accept. This actually
>         doubles
>         > the number of req/s while retaining the same response time. I
>         realize
>         > this isn't anything peculiar (multi-core machine with another
>         accept
>         > thread for it to chew on). But it gets me thinking if there's
>         more one
>         > can do to optimize this.
>         >
>         > Is it possible to speed up the socket accept operation
>         > a) by tuning Netty?
>         > b) by tuning the JVM?
>         > c) by tuning the OS/kernel?
>         >
>         > While I fear things like this might be very sensitive to how
>         the OS
>         > implements the TCP stack, I hope at least there are some
>         general advice
>         > or places to start looking.
>         > Appreciate any hints or tips regarding this. (Running on RHEL5
>         64-bit,
>         > Java 1.6.0_10-b33, Intel Quad-Core Q6600)
> 
>         Which Netty version are you using?  Netty uses only one thread for
>         accepting an incoming channel for each port, and it could be why
>         it's
>         not performing good enough.  If you observe the accept
>         performance issue
>         with 3.1.0.CR1, I'd like to fix it before GA.
> 
>         Thanks!
>         Trusitn
>         >
>         > - Carl
>         >
>         >
>         >
>         ------------------------------------------------------------------------
>         >
>         > _______________________________________________
>         > netty-users mailing list
>         > netty-users at lists.jboss.org <mailto:netty-users at lists.jboss.org>
>         > https://lists.jboss.org/mailman/listinfo/netty-users
> 
>         _______________________________________________
>         netty-users mailing list
>         netty-users at lists.jboss.org <mailto:netty-users at lists.jboss.org>
>         https://lists.jboss.org/mailman/listinfo/netty-users
> 
> 
> 
>     _______________________________________________
>     netty-users mailing list
>     netty-users at lists.jboss.org <mailto:netty-users at lists.jboss.org>
>     https://lists.jboss.org/mailman/listinfo/netty-users
> 
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> netty-users mailing list
> netty-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/netty-users




More information about the netty-users mailing list