You are viewing a plain text version of this content. The canonical link for it is here.
Posted to httpclient-users@hc.apache.org by Oleg Kalnichevski <ol...@apache.org> on 2010/03/13 17:59:36 UTC
Classic I/O vs NIO comparison; was Re: How to do cookies with NHttp*?
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
Oleg
---------------------------------------------------------------------
To unsubscribe, e-mail: httpclient-users-unsubscribe@hc.apache.org
For additional commands, e-mail: httpclient-users-help@hc.apache.org
Re: Classic I/O vs NIO comparison; was Re: How to do cookies with
NHttp*?
Posted by Todor Boev <ri...@gmail.com>.
On 14.03.2010 16:29, Oleg Kalnichevski wrote:
> 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.
This same question has bothered me for the past few weeks. Given HTTP 1.1 allows
us to maintain only a few connections per remote host I can't think of a
scenario where we would not use connection pooling and blocking I/O.
>
> 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.
Yup. I have used NIO in exactly this setting with a monitoring protocol that has
nothing to do with HTTP. I am starting to think the nature of HTTP makes NIO
useless for the client side. It is useful for the server side only because a
server must deal with unpredictable loads.
-- Todor
>
> Cheers
>
> Oleg
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: httpclient-users-unsubscribe@hc.apache.org
> For additional commands, e-mail: httpclient-users-help@hc.apache.org
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: httpclient-users-unsubscribe@hc.apache.org
For additional commands, e-mail: httpclient-users-help@hc.apache.org
Re: Classic I/O vs NIO comparison; was Re: How to do cookies with
NHttp*?
Posted by Oleg Kalnichevski <ol...@apache.org>.
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: httpclient-users-unsubscribe@hc.apache.org
For additional commands, e-mail: httpclient-users-help@hc.apache.org
Re: Classic I/O vs NIO comparison; was Re: How to do cookies with
NHttp*?
Posted by Chris Lowe <ch...@gmail.com>.
The benchmark results report a "Concurrency Level" of 25.
On 14 March 2010 13:29, Todor Boev <ri...@gmail.com> 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.
>
> -- Todor
>
>>
>> Oleg
>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: httpclient-users-unsubscribe@hc.apache.org
>> For additional commands, e-mail: httpclient-users-help@hc.apache.org
>>
>>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: httpclient-users-unsubscribe@hc.apache.org
> For additional commands, e-mail: httpclient-users-help@hc.apache.org
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: httpclient-users-unsubscribe@hc.apache.org
For additional commands, e-mail: httpclient-users-help@hc.apache.org
Re: Classic I/O vs NIO comparison; was Re: How to do cookies with
NHttp*?
Posted by Todor Boev <ri...@gmail.com>.
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.
-- Todor
>
> Oleg
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: httpclient-users-unsubscribe@hc.apache.org
> For additional commands, e-mail: httpclient-users-help@hc.apache.org
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: httpclient-users-unsubscribe@hc.apache.org
For additional commands, e-mail: httpclient-users-help@hc.apache.org
Re: Classic I/O vs NIO comparison; was Re: How to do cookies with
NHttp*?
Posted by Chris Lowe <ch...@gmail.com>.
Fair enough. I was actually thinking about the request connection
overhead - I used to run Kaspersky as my AV (not recommended for
developers!) and it would additionally vet all connections.
Cheers for the info,
Chris.
On 13 March 2010 17:15, Oleg Kalnichevski <ol...@apache.org> wrote:
> Chris Lowe wrote:
>>
>> Nice work - I wonder what's going on with the Jetty NIO on Linux.
>>
>
> I know little about Jetty so it can well be it has not been configured in
> the best possible way. Optimizations are very welcome.
>
>
>> Out of curiosity - was there an AV product running at the time of the
>> Windows test?
>>
>
> I had Windows Defender set to off and no other AV running. It should not
> matter that much as the test case should perform no file system bound I/O
> (beyond normal class loading)
>
> Oleg
>
>> On 13 March 2010 16:59, Oleg Kalnichevski <ol...@apache.org> 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
>>>
>>> Oleg
>>>
>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: httpclient-users-unsubscribe@hc.apache.org
>>> For additional commands, e-mail: httpclient-users-help@hc.apache.org
>>>
>>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: httpclient-users-unsubscribe@hc.apache.org
>> For additional commands, e-mail: httpclient-users-help@hc.apache.org
>>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: httpclient-users-unsubscribe@hc.apache.org
> For additional commands, e-mail: httpclient-users-help@hc.apache.org
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: httpclient-users-unsubscribe@hc.apache.org
For additional commands, e-mail: httpclient-users-help@hc.apache.org
Re: Classic I/O vs NIO comparison; was Re: How to do cookies with
NHttp*?
Posted by Oleg Kalnichevski <ol...@apache.org>.
Chris Lowe wrote:
> Nice work - I wonder what's going on with the Jetty NIO on Linux.
>
I know little about Jetty so it can well be it has not been configured
in the best possible way. Optimizations are very welcome.
> Out of curiosity - was there an AV product running at the time of the
> Windows test?
>
I had Windows Defender set to off and no other AV running. It should not
matter that much as the test case should perform no file system bound
I/O (beyond normal class loading)
Oleg
> On 13 March 2010 16:59, Oleg Kalnichevski <ol...@apache.org> 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
>>
>> Oleg
>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: httpclient-users-unsubscribe@hc.apache.org
>> For additional commands, e-mail: httpclient-users-help@hc.apache.org
>>
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: httpclient-users-unsubscribe@hc.apache.org
> For additional commands, e-mail: httpclient-users-help@hc.apache.org
>
---------------------------------------------------------------------
To unsubscribe, e-mail: httpclient-users-unsubscribe@hc.apache.org
For additional commands, e-mail: httpclient-users-help@hc.apache.org
Re: Classic I/O vs NIO comparison; was Re: How to do cookies with
NHttp*?
Posted by Chris Lowe <ch...@gmail.com>.
Nice work - I wonder what's going on with the Jetty NIO on Linux.
Out of curiosity - was there an AV product running at the time of the
Windows test?
On 13 March 2010 16:59, Oleg Kalnichevski <ol...@apache.org> 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
>
> Oleg
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: httpclient-users-unsubscribe@hc.apache.org
> For additional commands, e-mail: httpclient-users-help@hc.apache.org
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: httpclient-users-unsubscribe@hc.apache.org
For additional commands, e-mail: httpclient-users-help@hc.apache.org