On 25/06/2020 11:00, Chirag Dewan wrote:
> Thanks for the quick check Mark.
> 
> These are the images I tried referring to:
> 
> https://ibb.co/LzKtRgh
> 
> https://ibb.co/2s7hqRL
> 
> https://ibb.co/KmKj590
> 
> 
> The last one is the MAT screenshot showing many RequestInfo objects.

Thanks. That certainly looks like a memory leak. I'll take a closer
look. Out of interest, how many threads is the Connector configured to use?

Mark


> 
> 
> Thanks,
> 
> Chirag
> 
> On Wed, Jun 24, 2020 at 8:30 PM Mark Thomas <ma...@apache.org> wrote:
> 
>> On 24/06/2020 12:17, Mark Thomas wrote:
>>> On 22/06/2020 11:06, Chirag Dewan wrote:
>>>> Hi,
>>>>
>>>> Update: We found that Tomcat goes OOM when a client closes and opens new
>>>> connections every second. In the memory dump, we see a lot of
>>>> RequestInfo objects that are causing the memory spike.
>>>>
>>>> After a while, Tomcat goes OOM and start rejecting request(I get a
>>>> request timed out on my client). This seems like a bug to me.
>>>>
>>>> For better understanding, let me explain my use case again:
>>>>
>>>> I have a jetty client that sends HTTP2 requests to Tomcat. My
>>>> requirement is to close a connection after a configurable(say 5000)
>>>> number of requests/streams and open a new connection that continues to
>>>> send requests. I close a connection by sending a GoAway frame.
>>>>
>>>> When I execute this use case under load, I see that after ~2hours my
>>>> requests fail and I get a series of errors like request
>>>> timeouts(5seconds), invalid window update frame, and connection close
>>>> exception on my client.
>>>> On further debugging, I found that it's a Tomcat memory problem and it
>>>> goes OOM after sometime under heavy load with multiple connections being
>>>> re-established by the clients.
>>>>
>>>> image.png
>>>>
>>>> image.png
>>>>
>>>> Is this a known issue? Or a known behavior with Tomcat?
>>>
>>> Embedded images get dropped by the list software. Post those images
>>> somewhere we can see them.
>>>
>>>> Please let me know if you any experience with such a situation. Thanks
>>>> in advance.
>>>
>>> Nothing comes to mind.
>>>
>>> I'll try some simple tests with HTTP/2.
>>
>> I don't see a memory leak (the memory is reclaimed eventually) but I do
>> see possibilities to release memory associated with request processing
>> sooner.
>>
>> Right now you need to allocate more memory to the Java process to enable
>> Tomcat to handle the HTTP/2 load it is presented with.
>>
>> It looks like a reasonable chunk of memory is released when the
>> Connection closes that could be released earlier when the associated
>> Stream closes. I'll take a look at what can be done in that area. In the
>> meantime, reducing the number of Streams you allow on a Connection
>> before it is closed should reduce overall memory usage.
>>
>> 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