Trustin,

Yes that does work for me to some extent. But on my multi-CPU box there are
several output queues and it is the sum of them causes OutOfMemory. It looks

like I need to put a "quota" on each queue in order to cap the total.

Or, an alternative is to take a snapshot across all in/out queues to get the

sum-up.

Thanks for comments

On 4/17/07, Trustin Lee <[EMAIL PROTECTED]> wrote:

Hi Paul,

On 4/18/07, Paul Chen <[EMAIL PROTECTED]> wrote:
> Hi, folks,
>
> I got this error often when my Mina-based proxy server is under get lots
of
> requests
> from clients. And the service my Mina proxy forwards the client to
becomes
> very slow.
> So I added probes in Mina code and saw this queue.size() grew
significantly
> to > 200K.
> BTW I use SocketSessionImpl.writeRequestQueue.size() to get the queue
size.
>
> Add more computing power solves this problem but something it is not
within
> my
> control.
>
> In general, this kind of problem should happen when the other side Mina
is
> talking
> to is either too slow or too fast, either the input queue or output
queue
> piles up,
> right?
>
> On the reading side, I put some read throttle filter and it works just
fine.
>
> On the writing side, I'm trying to do something similar. Not sure if you
> experienced
> such issues ever and how you dealt w/ them.

You can check the number of bytes in the write queue using
IoSession.getScheduledWriteBytes() before you write a message.  If the
number of bytes exceeds certain threshold, you can write the message
later when messageSent() event is invoked.

Another alternative is to use the following user contribution.

http://issues.apache.org/jira/browse/DIRMINA-302

I didn't review the code yet though.

HTH,
Trustin
--
what we call human nature is actually human habit
--
http://gleamynode.net/
--
PGP Key ID: 0x0255ECA6

Reply via email to