Todor Boev wrote:
On 13.03.2010 18:59, Oleg Kalnichevski wrote:
Ken Krugler wrote:
Hi Todor,

...

I was hoping it might be related to nio vs. threaded approaches to
HTTP handling.

There's been a lot of debate about the value (performance, simplicity,
resource consumption) but I haven't seen much head-to-head comparison
where the rest of the implementation is roughly comparable. If you
ever get any comparison numbers, I'd love to see them.

-- Ken

I have made a number of tests comparing HttpCore blocking vs HttpCore
NIO vs Jetty blocking vs Jetty NIO. The results and the link to the
source code can be found here:

http://wiki.apache.org/HttpComponents/HttpCoreBenchmark

So NIO seems to be about 2 times slower than blocking I/O. What was the number
of concurrent connections used? Seems the benefit of NIO is not it's speed but
simply the ability to maintain 10,000 concurrent connections at a time.


The question is what is a legitimate use case for having to maintain so many concurrent connections? The only one I personally can think of is a proxy / gateway of some sort. I can cannot think of a single legitimate scenario where an HTTP agent would need to maintain more than a 100 concurrent connections at most.

Besides, modern operating systems and JVMs got pretty efficient at context switching. I would not be very surprised if blocking I/O outperformed NIO even with several thousand of concurrent connections.

NIO makes sense only when dealing with a _great_ number of _high latency_ connections, which most of the time stay idle waiting for a message to arrive.

Cheers

Oleg

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to