You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by bu...@apache.org on 2017/11/28 02:35:14 UTC

[Bug 61825] New: Tomcat8.0.30 Async request happend memory leak

https://bz.apache.org/bugzilla/show_bug.cgi?id=61825

            Bug ID: 61825
           Summary: Tomcat8.0.30 Async request happend memory leak
           Product: Tomcat 8
           Version: 8.0.30
          Hardware: All
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: P2
         Component: Connectors
          Assignee: dev@tomcat.apache.org
          Reporter: ronxin999@163.com
  Target Milestone: ----

Created attachment 35557
  --> https://bz.apache.org/bugzilla/attachment.cgi?id=35557&action=edit
the Http11ConnectionHandler concurrentHashmap contain too may request

I am use tomcat8.0.30,use the async function,programe running a fews day,
found the full gc is runnig all the time,but memory is not clean up,i dump the
memory analyse by eclipse mat found the follow result:

Request,Response,Nio2Channels and so an,the object is top big object.

19,289 instances of "org.apache.tomcat.util.net.Nio2Channel", loaded by
"java.net.URLClassLoader @ 0x730cc4d58" occupy 319,430,000 (11.05%) bytes.
These instances are referenced from one instance of
"java.util.concurrent.ConcurrentHashMap$Segment[]", loaded by "<system class
loader>"

Keywords
one 
19,488 instances of "org.apache.catalina.connector.Response", loaded by
"java.net.URLClassLoader @ 0x730cc4d58" occupy 493,942,352 (17.09%) bytes.
These instances are referenced from one instance of "java.lang.Object[]",
loaded by "<system class loader>"

two:
19,488 instances of "org.apache.catalina.connector.Request", loaded by
"java.net.URLClassLoader @ 0x730cc4d58" occupy 474,043,792 (16.40%) bytes.
These instances are referenced from one instance of "java.lang.Object[]",
loaded by "<system class loader>"

three:
19,289 instances of "org.apache.tomcat.util.net.Nio2Channel", loaded by
"java.net.URLClassLoader @ 0x730cc4d58" occupy 319,430,000 (11.05%) bytes.
These instances are referenced from one instance of
"java.util.concurrent.ConcurrentHashMap$Segment[]", loaded by "<system class
loader>"

all memory size is 2.1G,tomcat async request and response and Nio2Channel
occupy 1.8G memory,maybe the Nio2Channel,has a concurrentHashMap,the map
reflence too may Http11Nio2Processor

My switch the request to other server,the tomcat async request and response is
can't clean by gc,so i guess the tomcat is memory leak may be.

-- 
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


[Bug 61825] Tomcat8.0.30 Async request happend memory leak

Posted by bu...@apache.org.
https://bz.apache.org/bugzilla/show_bug.cgi?id=61825

Mark Thomas <ma...@apache.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         Resolution|---                         |WORKSFORME
             Status|NEEDINFO                    |RESOLVED

--- Comment #7 from Mark Thomas <ma...@apache.org> ---
This does look like a Tomcat bug but likely one that was fixed in 8.0.38 (look
in the changelog for deadlock).

Absent a test case that demonstrates this issue, I'm going to assume that this
is fixed in the latest 8.0.x.

-- 
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


[Bug 61825] Tomcat8.0.30 Async request happend memory leak

Posted by bu...@apache.org.
https://bz.apache.org/bugzilla/show_bug.cgi?id=61825

--- Comment #2 from Gavin.peng <ro...@163.com> ---
the asyncState all is COMPLETING of the all async request asyncstateMachine,why
is not end after timeout by tomcat container

-- 
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


[Bug 61825] Tomcat8.0.30 Async request happend memory leak

Posted by bu...@apache.org.
https://bz.apache.org/bugzilla/show_bug.cgi?id=61825

--- Comment #3 from Gavin.peng <ro...@163.com> ---
Created attachment 35559
  --> https://bz.apache.org/bugzilla/attachment.cgi?id=35559&action=edit
the async request asyncStateMachine state

all the async request the statemachine is completing

-- 
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


[Bug 61825] Tomcat8.0.30 Async request happend memory leak

Posted by bu...@apache.org.
https://bz.apache.org/bugzilla/show_bug.cgi?id=61825

Christopher Schultz <ch...@christopherschultz.net> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |NEEDINFO

--- Comment #4 from Christopher Schultz <ch...@christopherschultz.net> ---
If you are actually running Tomcat 8.0.30, please upgrade to latest Tomcat
8.0.47. There have been MANY improvements to async features, including a few
that max fix memory leaks like the one you describe.

Please note that the Tomcat project does not issue patches for individual
issues; instead, we produce new releases with new version numbers. Tomcat
8.0.47 should be drop-in compatible with Tomcat 8.0.30.

You should also consider upgrading to Tomcat 8.5.x for longer-term support.

-- 
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


[Bug 61825] Tomcat8.0.30 Async request happend memory leak

Posted by bu...@apache.org.
https://bz.apache.org/bugzilla/show_bug.cgi?id=61825

--- Comment #6 from Christopher Schultz <ch...@christopherschultz.net> ---
I'm sorry, I'm no expert on servlet-async so I'm not sure how to answer your
question. If there are changes to the async state-machine in Tomcat, those
changes will have been made in order to align Tomcat with the published
standard, so your product should not have to be customized in any way to work
with Tomcat (versus any other Java application server).

-- 
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


[Bug 61825] Tomcat8.0.30 Async request happend memory leak

Posted by bu...@apache.org.
https://bz.apache.org/bugzilla/show_bug.cgi?id=61825

--- Comment #5 from Gavin.peng <ro...@163.com> ---
Thanks Christopher Schultz,I have a question,if i use 8.0.47,if the async is
timeout,I need to invoke complete method ? i understand is not ,tomcat contain
is end the async request if timeout is happend,thanks you

-- 
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


[Bug 61825] Tomcat8.0.30 Async request happend memory leak

Posted by bu...@apache.org.
https://bz.apache.org/bugzilla/show_bug.cgi?id=61825

--- Comment #1 from Gavin.peng <ro...@163.com> ---
Created attachment 35558
  --> https://bz.apache.org/bugzilla/attachment.cgi?id=35558&action=edit
request and response is not release maybe the concurrenthashmap reflence

-- 
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org