[Paraview] ParaviewWeb4 Jetty Session manager - Out of memory error

Bogdan Daqui Herrera bdaqui at simscale.de
Thu Nov 21 11:52:37 EST 2013


Hello all,

Thanks for the useful answers to my previous questions.

I am encountering a problem with the Jetty Session Manager and the fact
that the java process runs out of memory, under what could be a memory leak.

1. Description:
* The Problem: The (java) Jetty session manager runs out of memory after
establishing multiple sessions either sequentially or simultaneously.
For example the error could manifest itself after 30 paraview sessions
being started and terminated. The stacktrace appended at the end of the
e-mail:

* Repeatability: always. It happens much sooner on jvms on 32-bit
machines than on 64-bit ones.

* My changes to the Session Manager: In
SessionManager/src/main/java/com/kitware/paraviewweb/external/SimpleWebSocketProxyManager.java:

DEFAULT_MAX_MESSAGE_SIZE -> From 2 to 4 MB (Increased the websocket
message size)
DEFAULT_FACTORY_BUFFER_SIZE -> From 1 to 2 MB

* session manager started with:
java -jar SessionManager.jar default-config.properties

Using the -Xms and -Xmx options to increase allocated memory when
launching the process only delays the final error for a little longer,
as sooner or later it shows up.

2. Questions
-Do you perhaps know how this issue could be addressed, or any advice on
how to mitigate it and where to look for a possible memory leak?

-From your experience with the current implementation of the Session
Manager, what would be the current practical limit on the number of
concurrent (I have specified a maximum of 80 in the config file) and
sequential sessions?

3. Error Stacktrace
java.lang.OutOfMemoryError: Java heap space
        at
org.eclipse.jetty.io.ByteArrayBuffer.<init>(ByteArrayBuffer.java:38)
        at
org.eclipse.jetty.io.nio.IndirectNIOBuffer.<init>(IndirectNIOBuffer.java:32)
        at
org.eclipse.jetty.io.AbstractBuffers.newBuffer(AbstractBuffers.java:94)
        at
org.eclipse.jetty.io.ThreadLocalBuffers.getBuffer(ThreadLocalBuffers.java:64)
        at
org.eclipse.jetty.websocket.WebSocketBuffers.getBuffer(WebSocketBuffers.java:48)
        at
org.eclipse.jetty.websocket.WebSocketParserRFC6455.parseNext(WebSocketParserRFC6455.java:132)
        at
org.eclipse.jetty.websocket.WebSocketConnectionRFC6455.handle(WebSocketConnectionRFC6455.java:225)
        at
org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:628)
        at
org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)
        at
org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
        at
org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
        at java.lang.Thread.run(Thread.java:679)
2013-11-21 14:58:15.030:WARN:oeji.nio:
java.lang.OutOfMemoryError: Java heap space
        at
org.eclipse.jetty.io.ByteArrayBuffer.<init>(ByteArrayBuffer.java:38)
        at
org.eclipse.jetty.io.nio.IndirectNIOBuffer.<init>(IndirectNIOBuffer.java:32)
        at
org.eclipse.jetty.io.AbstractBuffers.newBuffer(AbstractBuffers.java:94)
        at
org.eclipse.jetty.io.ThreadLocalBuffers.getBuffer(ThreadLocalBuffers.java:64)
        at
org.eclipse.jetty.websocket.WebSocketBuffers.getBuffer(WebSocketBuffers.java:48)
        at
org.eclipse.jetty.websocket.WebSocketGeneratorRFC6455.addFrame(WebSocketGeneratorRFC6455.java:77)
        at
org.eclipse.jetty.websocket.WebSocketConnectionRFC6455.closeOut(WebSocketConnectionRFC6455.java:382)
        at
org.eclipse.jetty.websocket.WebSocketConnectionRFC6455$WSFrameConnection.close(WebSocketConnectionRFC6455.java:489)
        at
com.kitware.paraviewweb.websocket.WebSocketForwarder.onClose(WebSocketForwarder.java:64)
        at
org.eclipse.jetty.websocket.WebSocketConnectionRFC6455.closeOut(WebSocketConnectionRFC6455.java:358)
        at
org.eclipse.jetty.websocket.WebSocketConnectionRFC6455$WSFrameConnection.close(WebSocketConnectionRFC6455.java:489)
        at
com.kitware.paraviewweb.websocket.WebSocketForwarder.onClose(WebSocketForwarder.java:64)
        at
org.eclipse.jetty.websocket.WebSocketConnectionRFC6455.onClose(WebSocketConnectionRFC6455.java:302)
        at
org.eclipse.jetty.websocket.WebSocketClientFactory$WebSocketClientConnection.onClose(WebSocketClientFactory.java:570)
        at
org.eclipse.jetty.websocket.WebSocketClientFactory$WebSocketClientSelector.endPointClosed(WebSocketClientFactory.java:330)
        at
org.eclipse.jetty.io.nio.SelectorManager$SelectSet.destroyEndPoint(SelectorManager.java:853)
        at
org.eclipse.jetty.io.nio.SelectChannelEndPoint.doUpdateKey(SelectChannelEndPoint.java:607)
        at
org.eclipse.jetty.io.nio.SelectorManager$SelectSet.doSelect(SelectorManager.java:468)
        at
org.eclipse.jetty.io.nio.SelectorManager$1.run(SelectorManager.java:290)
        at
org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
        at
org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
        at java.lang.Thread.run(Thread.java:679)



Thanks in advance for your replies.

Kind regards,
Bogdan Daqui

-- 
Bogdan Daqui
Software Development

SimScale GmbH
Lichtenbergstraße 8
85748 Garching bei München

Phone: +49 (0)89 3398 4078
Email: bdaqui at simscale.de

Amtsgericht München, HRB 201813
Geschäftsführer: Vincenz Dölle & David Heiny

http://www.simscale.der


More information about the ParaView mailing list