You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by Fabrizio Nesti <ne...@medialab.sissa.it> on 2003/12/03 19:34:46 UTC

Any clue on this, please? Uploading large files - out of memory

Hi,
any comment on this "out of memory" with large file upload?

This error seems recurring to a bunch of users, but I'm wondering if it's a
problem in the tomcat implementation, or if there are other layers to blame.

Thanks for any light on this darkness, since I've a tight schedule on
this issue... unfortunately..
cheers,
fabrizio


---------- Forwarded message ----------
Date: Mon, 1 Dec 2003 14:36:57 +0100 (MET)
From: Fabrizio Nesti <ne...@medialab.sissa.it>
To: tomcat-dev@jakarta.apache.org
Subject: Uploading large files - out of memory exception

Dear tomcat developers,

I've noticed a problem while uploading files with tomcat 4.1.x.

- When uploading large files (say larger than 10MB) tomcat throws an out
  of memory exception.

- The problem can be avoided raising the memory allocation (as found in
  other similar messages, -Xms128m -Xmx512m) but this is not a solution,
  since it depends on the memory and just makes the limit higher.

I do not know how the actual download works (we are using the
EchoPoint fileupload component, for that matters) but it seems that
the whole file is slurped in memory _before_ passing the request to a
user servlet. Indeed it seems that our download component is never
invoked (see the error below).

Is there a configuration option to avoid this behavior, or there's
nothing to do but limit the filesize?

Thanks in advance for any clue and
cheers,
Fabrizio


PS: The error:

...
description The server encountered an internal error (Internal Server Error)
that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: Servlet execution threw an exception
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
        at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
        at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
        at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
        at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
        at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2417)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
        at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
        at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)
        at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
        at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
        at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:577)
        at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
        at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
        at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
        at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
        at org.apache.catalina.connector.http.HttpProcessor.process(HttpProcessor.java:1040)
        at org.apache.catalina.connector.http.HttpProcessor.run(HttpProcessor.java:1151)
        at java.lang.Thread.run(Thread.java:536)

root cause

java.lang.OutOfMemoryError




---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-dev-help@jakarta.apache.org


Re: Any clue on this, please? Uploading large files - out of memory

Posted by Tim Funk <fu...@joedog.org>.
Please followup to tomcat user.

1) Make sure that the app is using ServletRequest.getInputStream()
2) See the spec: 'SRV.4.1.1 When Parameters Are Available'



-Tim

Fabrizio Nesti wrote:

> Hi,
> any comment on this "out of memory" with large file upload?
> 
> This error seems recurring to a bunch of users, but I'm wondering if it's a
> problem in the tomcat implementation, or if there are other layers to blame.
> 
> Thanks for any light on this darkness, since I've a tight schedule on
> this issue... unfortunately..
> cheers,
> fabrizio
> 
> 
> ---------- Forwarded message ----------
> Date: Mon, 1 Dec 2003 14:36:57 +0100 (MET)
> From: Fabrizio Nesti <ne...@medialab.sissa.it>
> To: tomcat-dev@jakarta.apache.org
> Subject: Uploading large files - out of memory exception
> 
> Dear tomcat developers,
> 
> I've noticed a problem while uploading files with tomcat 4.1.x.
> 
> - When uploading large files (say larger than 10MB) tomcat throws an out
>   of memory exception.
> 
> - The problem can be avoided raising the memory allocation (as found in
>   other similar messages, -Xms128m -Xmx512m) but this is not a solution,
>   since it depends on the memory and just makes the limit higher.
> 
> I do not know how the actual download works (we are using the
> EchoPoint fileupload component, for that matters) but it seems that
> the whole file is slurped in memory _before_ passing the request to a
> user servlet. Indeed it seems that our download component is never
> invoked (see the error below).
> 
> Is there a configuration option to avoid this behavior, or there's
> nothing to do but limit the filesize?
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-dev-help@jakarta.apache.org