dev@glassfish.java.net

Re: java.lang.OutOfMemoryError at a few K HTTP gzip operations from a single client.

From: Jeanfrancois Arcand <Jeanfrancois.Arcand_at_Sun.COM>
Date: Wed, 24 Oct 2007 10:45:21 -0400

Hi,

Gustav Trede wrote:
> hello ,
>
> GF is freshly started with only a single simple'ping' WS servlet
> deployd, no admin gui loaded.
>
> doing the same operation sequencially a few thousand times from a
> from a single client with a response payload of 190 bytes:
>
> roughly one new socket per few Koperations is created by the server.
> (a side note: its interesting that using gzip solves the
> 'throughput' problem i normally have, where server is killing the
> single clients sockets in a non consistent almost random way during load)

What are you doing exactly in that case? Connection are closed by the
server based on two rules:

+ If the connection is idle for more than 30 seconds, then Grizzly close it.

+ if the number of request made on a single connection exceed 250,
grizzly close the connection.

Both element can be changed by editing the <keep-alive> element in
domain.xml.

>
> Within 10K operations i get serious problems:
> Serverside mem usage is building up, allocating 1GB extra ram or so
> compared to not using gzip for exact same tests sequence and data
> set.
> StandardWrapperValve[TEST_HTTP_FI]: PWC1406: Servlet.service() for
> servlet TEST_HTTP_FI threw exception
> javax.servlet.ServletException
> at
> com.sun.enterprise.webservice.JAXWSServlet.doPost(JAXWSServlet.java:164)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:738)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:831)
> at
> org.apache.catalina.core.ApplicationFilterChain.servletService(ApplicationFilterChain.java:411)
>
> at
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:290)
>
> at
> org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:271)
>
> at
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:202)
>
> at
> org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632)
>
> at
> org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577)
>
> at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:94)
> at
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:206)
>
> at
> org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632)
>
> at
> org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577)
>
> at
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:571)
> at
> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1080)
> at
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:150)
>
> at
> org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632)
>
> at
> org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577)
>
> at
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:571)
> at
> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1080)
> at
> org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:270)
> at
> com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.invokeAdapter(DefaultProcessorTask.java:637)
>
> at
> com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.doProcess(DefaultProcessorTask.java:568)
>
> at
> com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.process(DefaultProcessorTask.java:813)
>
> at
> com.sun.enterprise.web.connector.grizzly.DefaultReadTask.executeProcessorTask(DefaultReadTask.java:339)
>
> at
> com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:261)
>
> at
> com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:212)
>
> at
> com.sun.enterprise.web.connector.grizzly.TaskBase.run(TaskBase.java:265)
> at
> com.sun.enterprise.web.connector.grizzly.ssl.SSLWorkerThread.run(SSLWorkerThread.java:106)
>
> Caused by: java.lang.OutOfMemoryError
> at java.util.zip.Deflater.init(Native Method)
> at java.util.zip.Deflater.<init>(Deflater.java:123)
> at java.util.zip.GZIPOutputStream.<init>(GZIPOutputStream.java:46)
> at java.util.zip.GZIPOutputStream.<init>(GZIPOutputStream.java:58)
> at
> org.apache.coyote.http11.filters.GzipOutputFilter.doWrite(GzipOutputFilter.java:109)
>
> at
> org.apache.coyote.http11.InternalOutputBuffer.doWrite(InternalOutputBuffer.java:626)
>
> at org.apache.coyote.Response.doWrite(Response.java:599)
> at
> org.apache.coyote.tomcat5.OutputBuffer.realWriteBytes(OutputBuffer.java:404)
>
> at
> org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:417)
> at
> org.apache.coyote.tomcat5.OutputBuffer.doFlush(OutputBuffer.java:357)
> at
> org.apache.coyote.tomcat5.OutputBuffer.flush(OutputBuffer.java:335)
> at
> org.apache.coyote.tomcat5.CoyoteOutputStream.flush(CoyoteOutputStream.java:160)
>
> at
> com.sun.xml.fastinfoset.Encoder.encodeDocumentTermination(Encoder.java:609)
> at
> com.sun.xml.fastinfoset.stax.StAXDocumentSerializer.writeEndDocument(StAXDocumentSerializer.java:181)
>
> at
> com.sun.xml.ws.message.AbstractMessageImpl.writeTo(AbstractMessageImpl.java:146)
>
> at
> com.sun.xml.ws.encoding.fastinfoset.FastInfosetStreamSOAPCodec.encode(FastInfosetStreamSOAPCodec.java:106)
>
> at
> com.sun.xml.ws.encoding.SOAPBindingCodec.encode(SOAPBindingCodec.java:265)
> at
> com.sun.xml.ws.transport.http.HttpAdapter.encodePacket(HttpAdapter.java:320)
>
> at
> com.sun.xml.ws.transport.http.HttpAdapter.access$100(HttpAdapter.java:93)
> at
> com.sun.xml.ws.transport.http.HttpAdapter$HttpToolkit.handle(HttpAdapter.java:454)
>
> at
> com.sun.xml.ws.transport.http.HttpAdapter.handle(HttpAdapter.java:244)
> at
> com.sun.xml.ws.transport.http.servlet.ServletAdapter.handle(ServletAdapter.java:135)
>
> at
> com.sun.enterprise.webservice.JAXWSServlet.doPost(JAXWSServlet.java:159)
> ... 28 more
>
> I could not find this as a know issue.
> Any idea for workaround ?

>
> using :
>
> VM mem settings: -server -XX:+UseParallelOldGC -XX:+UseParallelGC
> -Xms512m -Xmx512m -XX:MaxPermSize=192m -XX:NewRatio=2
>
> GFv2ur1 23/10 nighthly + WSIT CVS + jdk 1.6u5b5 win xp pro 64bit.
> 2GB ram. amd dualcore cpu.

I suspect you are hitting issue:

https://glassfish.dev.java.net/issues/show_bug.cgi?id=3787

Can you try today's nightly to see if that makes a difference? Do you
have an easy way to reproduce the problem?

Thanks!

-- Jeanfrancois


>
> regards
> gustav trede
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe_at_glassfish.dev.java.net
> For additional commands, e-mail: dev-help_at_glassfish.dev.java.net
>