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 2010/05/05 06:44:34 UTC

DO NOT REPLY [Bug 49249] New: GC overhead limit exceeded when download large files from keep-alive-enabled clustered tomcats

https://issues.apache.org/bugzilla/show_bug.cgi?id=49249

           Summary: GC overhead limit exceeded when download large files
                    from keep-alive-enabled clustered tomcats
           Product: Tomcat 6
           Version: 6.0.18
          Platform: HP
        OS/Version: Linux
            Status: NEW
          Severity: major
          Priority: P2
         Component: Catalina
        AssignedTo: dev@tomcat.apache.org
        ReportedBy: mustangxu@gmail.com


1. In a Tomcat cluster forwarded by Apache
2. Config "KeepAlive on" in httpd.conf
3. No static resource cache in Apache
4. Download a large file (jre.exe, 16M) with load (200+ downloads per Tomcat)
directly from Tomcat, a "GC overhead limit exceeded" error will occur in a
short time.  The stacktrace in Tomcat's log looks like below: 

java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at
com.nazca.io.httpd.HttpServletTool.processResponse(HttpServletTool.java:100)
    at
com.nazca.io.httpd.HttpServletTool.processRequest(HttpServletTool.java:57)
    at
com.nazca.consult.leader.server.servlet.LeaderHttpRPCServlet.processRequest(LeaderHttpRPCServlet.java:55)
    at
com.nazca.consult.leader.server.servlet.LeaderHttpRPCServlet.doPost(LeaderHttpRPCServlet.java:83)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
    at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
    at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
    at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
    at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.OutOfMemoryError: GC overhead limit exceeded
Exception in thread "pool-6-thread-3" java.lang.OutOfMemoryError: GC overhead
limit exceeded
2010-05-05 09:06:53,913 [ERROR]
org.apache.catalina.core.ContainerBase.[Standalone].[localhost].[/consult_workerPortal].[jnlpServlet]
 Servlet.service() for servlet jnlpServlet threw exception
java.lang.OutOfMemoryError: GC overhead limit exceeded

-- 
Configure bugmail: https://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- 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


DO NOT REPLY [Bug 49249] GC overhead limit exceeded when download large files from keep-alive-enabled clustered tomcats

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

Konstantin Kolinko <kn...@gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|                            |INVALID

--- Comment #1 from Konstantin Kolinko <kn...@gmail.com> 2010-05-05 01:29:35 EDT ---
A quick search gives me this reference:
http://java.sun.com/javase/technologies/hotspot/gc/gc_tuning_6.html#par_gc.oom
"The parallel collector will throw an OutOfMemoryError if too much time is
being spent in garbage collection"

Out of memory errors mean that you must profile your own application to
identify the root cause. See users@ list archives for further pointers.

http://wiki.apache.org/tomcat/OutOfMemory
http://tomcat.apache.org/bugreport.html#Bugzilla_is_not_a_support_forum

Closing as INVALID, because there is no Tomcat issue here.

-- 
Configure bugmail: https://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- 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


DO NOT REPLY [Bug 49249] GC overhead limit exceeded when download large files from keep-alive-enabled clustered tomcats

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

--- Comment #2 from iJay <mu...@gmail.com> 2010-05-05 02:16:12 EDT ---
(In reply to comment #1)
> A quick search gives me this reference:
> http://java.sun.com/javase/technologies/hotspot/gc/gc_tuning_6.html#par_gc.oom
> "The parallel collector will throw an OutOfMemoryError if too much time is
> being spent in garbage collection"
> 
> Out of memory errors mean that you must profile your own application to
> identify the root cause. See users@ list archives for further pointers.
> 
> http://wiki.apache.org/tomcat/OutOfMemory
> http://tomcat.apache.org/bugreport.html#Bugzilla_is_not_a_support_forum
> 
> Closing as INVALID, because there is no Tomcat issue here.

I am not a new developer to Java and do know what is a OutOfMemoryError. This
application is only a servlet generating dynamic JNLP file and providing JRE
download. It ran smoothly during the past one year with load. After we turned
"keep alive" on in apache a few days ago, Tomcat crashed this morning. Then we
turned it back to off and now it serves with no error.
My team supposed that if download a large file from tomcat with keep-alive
connection, since all the requests from the same user use the same connection,
maybe the stream buffer doesn't close correctly during the download and then
cause this ERROR. Pls check in this bug and validate it with patience.

-- 
Configure bugmail: https://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- 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