tomcat-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Mark Thomas <>
Subject Re: Performance change
Date Fri, 09 Jan 2015 17:45:33 GMT
On 09/01/2015 17:25, Rémy Maucherat wrote:
> Hi,
> Following the refactoring, performance is significantly down for NIO2, but
> improved for NIO1.
> With my ab test on tomcat.gif, logging disabled, this does (Tomcat 8 vs
> trunk):
> NIO1: 50k -> 60k

up 20% wow

> NIO2: 65k -> 57k

down 15% :( not so good

> IMO the difference is significant, so this is a real regression.


> I didn't really see anything obvious that could explain that.


> Maybe a combination of the deque or the buffering behavior change?

I agree that these are the most likely candidates.

> Unless the cause is found and
> this gets fixed, there would be few reasons to keep the NIO2 connector.

One reason (once all the refactoring is complete) might be WebSocket
since the use of CompletionHandlers in WebSocket and NIO2 may allow for
some efficiencies that just aren't possible with NIO or APR.

I'll add looking at this to my TODO list. Unfortunately, past experience
suggests tuning this may involve more guess work than I'd like since at
these sorts of rates profilers tend to add so much overhead you can't
find the bottleneck you are looking for.

The other thing to keep in mind is that these performance figures could
easily shift a lot further as the code clean-up continues. We should
defer any decision about removing an implementation until after the
refactoring is complete. Looking further ahead, the HTTP/2 work may
impact performance as well.

On balance I think we should keep all three implementations since there
are always likely to be loads that are better suited to one
implementation than the others.


To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message