I have run into similar issues with out of memory problems and moved the
code to use heap buffers instead of direct buffers.

 

See this page.

http://mina.apache.org/faq.html#FAQ-Iget%7B%7BOutOfMemoryError%7D%7Dorre
sponsetimeoutandconnectionresetunderheavyload.

 

If you use the SSL filter is not controlled in the same way and you need
to set an environment variable either at the java start line or
programmatically by:

System.setProperty("mina.sslfilter.directbuffer", "false");

 

Hope that helps,

Scott

 

 

________________________________

From: Scott Carter [mailto:[EMAIL PROTECTED] 
Sent: Saturday, October 20, 2007 4:08 PM
To: [email protected]
Subject: Out of Memory issues with our mina proxy

 

We have written a server proxy layer using the mina library, and
everything works as it should except we are running into "Out of Memory"
exceptions.  We did the obvious things such as increasing the memory for
the proxy and still always had the same issue (just took a little longer
to produce it).  We analyzed the application with a profiler and
discovered that a thread from mina was creating LinkedBlockingQueue$Node
objects that were not being garbage collected.  I read a couple of
previous posts on the issue and could not find a good solution.  Based
on the posts I did verify that these objects were not being garbage
collected even after the server had been idol for a long time and all
sessions had been closed.  

 

Our proxy binds to the outside port of a version control server and
passes data back and fourth between clients and the version control
server.  I have attached our code, which is pretty simple, to this post.
You can see that we have some methods that take a few bites off of the
messages and verify the client for us, but other than that this is just
a very straight forward proxy application.  

 

I really need some help to figure out how to get the
LinkedBlockingQueue$Node objects garbage collected.  I have posted below
the stack trace that creates the LinkedBlockingQueue$Node objects from
the mina thread:

 

TRACE 319549: (thread=200037)

 
java.util.concurrent.LinkedBlockingQueue$Node.<init>(LinkedBlockingQueue
.java:70)

 
java.util.concurrent.LinkedBlockingQueue.insert(LinkedBlockingQueue.java
:129)

 
java.util.concurrent.LinkedBlockingQueue.offer(LinkedBlockingQueue.java:
335)

 
java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:
653)

 
org.apache.mina.filter.executor.ExecutorFilter.fireEvent(ExecutorFilter.
java:101)

 
org.apache.mina.filter.executor.ExecutorFilter.messageSent(ExecutorFilte
r.java:214)

 
org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageSent
(AbstractIoFilterChain.java:320)

 
org.apache.mina.common.support.AbstractIoFilterChain.access$1200(Abstrac
tIoFilterChain.java:53)

 
org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.message
Sent(AbstractIoFilterChain.java:652)

 
org.apache.mina.common.support.AbstractIoFilterChain$HeadFilter.messageS
ent(AbstractIoFilterChain.java:503)

 
org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageSent
(AbstractIoFilterChain.java:320)

 
org.apache.mina.common.support.AbstractIoFilterChain.fireMessageSent(Abs
tractIoFilterChain.java:314)

 
org.apache.mina.transport.socket.nio.SocketIoProcessor.doFlush(SocketIoP
rocessor.java:358)

 
org.apache.mina.transport.socket.nio.SocketIoProcessor.doFlush(SocketIoP
rocessor.java:314)

 
org.apache.mina.transport.socket.nio.SocketIoProcessor.access$600(Socket
IoProcessor.java:44)

 
org.apache.mina.transport.socket.nio.SocketIoProcessor$Worker.run(Socket
IoProcessor.java:431)

 
org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.j
ava:39)

        java.lang.Thread.run(Thread.java:619)

 

 

Thank you in advance for helping a Newbie.  This is a production
application that I need to get working ASAP.  Thanks - Scott

Conexant E-mail Firewall (Conexant.Com) made the following annotations
---------------------------------------------------------------------
********************** Legal Disclaimer ****************************
"This email may contain confidential and privileged material for the
sole use of the intended recipient. Any unauthorized review, use or
distribution by others is strictly prohibited. If you have received the
message in error, please advise the sender by reply email and delete the
message. Thank you."
**********************************************************************
---------------------------------------------------------------------

Reply via email to