On 22/05/2020 16:01, Chirag Dewan wrote:
> Thanks for the quick response Mark.
> I agree 1024 concurrent streams are a bit far fetched and may cause an
> overhead. But at the same time, I have tried the same test with the Jetty
> Multiplexed connection pool with 100 concurrent streams(that is actually
> updated from the initial Settings frame).
> 
> And even in such kind of a connection strategy, we see ~6K around
> throughput. And to my surprise, even with 20 established connections, we
> could not reach the throughput in an HTTP1.1 connector.
> 
> Are there any benchmarking results for HTTP2, in comparison to HTTP1.1 I
> can refer?

Have a look at  Jean-Frederic's HTTP/2 presentations.

As with most performance tests, the results you get depend on a lot on
how you structure the test.

Mark



http://tomcat.apache.org/presentations.html
> 
> Chirag
> 
> On Fri, May 22, 2020 at 4:29 PM Mark Thomas <ma...@apache.org> wrote:
> 
>> On 22/05/2020 11:23, Chirag Dewan wrote:
>>> Hi,
>>>
>>> I am trying to move to HTTP2 based APR connector from my HTTP1 based
>>> connector because of some customer requirements.
>>>
>>> I am trying to form some sort of throughput benchmark for HTTP2 in
>>> comparison to HTTP1. I have a simple Jersey service that accepts a JSON
>>> request and sends 200 with some headers.
>>>
>>> I have observed that HTTP2 is somehow stuck at 6K as compared to 15K in
>>> HTTP1.1 with the same amount of CPU and memory consumed.
>>> My client with HTTP1.1 is based on HTTP components and opens up to 100
>>> connections with Tomcat. On HTTP2, I have a Jetty client that opens 2
>>> connections with multiplexing of 1024. I tried increasing the
>>> connections to 20 as well, but that only has adverse affects.
>>>
>>> I am running Tomcat on a K8 pod with 3Gi CPU and 2Gi memory. With both
>>> HTTP2 and HTTP1.1 Tomcat consumes all 3 cores and approximately 800m
>> memory.
>>>
>>> In the thread dumps with HTTP2, I see a lot of BLOCKED threads:
>>> image.png
>>> Most of the threads are blocked in /writeHeaders. /
>>> /
>>> /
>>> Am I missing something here? Any help is much appreciated.
>>
>> With such a simple response and high concurrency I suspect you are
>> hitting a bottleneck with 1024 (or 100 if you haven't changed the
>> defaults) threads all trying to write to a single network connection at
>> once. That is never going to perform well.
>>
>> HTTP/2 is not a magic "make things faster" protocol. It reduces overhead
>> in some areas and increases overhead in others. Whether you see a
>> benefit is going to depend on where the bottleneck is in your system.
>>
>> If you are testing on a single machine or on a local network I'd expect
>> the additional complexity of HTTP/2 multiplexiing to quickly dominate
>> the results.
>>
>> If you want an idea of what is going on, I recommend using a profiler
>> although be aware that - unless there is an obvious performance issue -
>> you can quickly get to the point where getting the level of detail
>> required to track down the next bottleneck causes the profiler to create
>> more overhead than the issue you are trying to measure thereby
>> distorting the results.
>>
>> Mark
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
>> For additional commands, e-mail: users-h...@tomcat.apache.org
>>
>>
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org

Reply via email to