The complete exception logs like follows:
WARNING: Read buffer flooded - session: 433071408 / 65536 bytes,
service: 433586448 / 67108864 bytes, global: 433586448 / 134217728
bytes.
Aug 4, 2008 2:23:36 PM org.apache.mina.filter.traffic.ReadThrottleFilter
log
WARNING: Read buffer flooded - session: 433408416 / 65536 bytes,
service: 433658336 / 67108864 bytes, global: 433658336 / 134217728
bytes.
Aug 4, 2008 2:23:36 PM org.apache.mina.filter.traffic.ReadThrottleFilter
log
WARNING: Read buffer flooded - session: 295520 / 65536 bytes, service:
433703768 / 67108864 bytes, global: 433703768 / 134217728 bytes.
Aug 4, 2008 2:23:41 PM org.apache.mina.filter.traffic.ReadThrottleFilter
log
WARNING: Read buffer flooded - session: 434435736 / 65536 bytes,
service: 435337336 / 67108864 bytes, global: 435337176 / 134217728
bytes.
Aug 4, 2008 2:23:44 PM org.apache.mina.filter.traffic.ReadThrottleFilter
log
WARNING: Read buffer flooded - session: 503360 / 65536 bytes, service:
435082904 / 67108864 bytes, global: 435082904 / 134217728 bytes.
Aug 4, 2008 2:23:47 PM org.apache.mina.filter.traffic.ReadThrottleFilter
log
WARNING: Read buffer flooded - session: 434579712 / 65536 bytes,
service: 435462112 / 67108864 bytes, global: 435462592 / 134217728
bytes.
Aug 4, 2008 2:23:55 PM org.apache.mina.common.DefaultExceptionMonitor
exceptionCaught
WARNING: Unexpected exception.
java.lang.OutOfMemoryError: Java heap space
at java.util.HashMap.newKeyIterator(HashMap.java:889)
at java.util.HashMap$KeySet.iterator(HashMap.java:921)
at java.util.HashSet.iterator(HashSet.java:154)
at
sun.nio.ch.SelectorImpl.processDeregisterQueue(SelectorImpl.java:127)
at
sun.nio.ch.PollSelectorImpl.doSelect(PollSelectorImpl.java:60)
at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:69)
at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:80)
at
org.apache.mina.transport.socket.nio.NioProcessor.select(NioProcessor.ja
va:65)
at
org.apache.mina.common.AbstractPollingIoProcessor$Worker.run(AbstractPol
lingIoProcessor.java:672)
at
org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.j
ava:51)
at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecuto
r.java:650)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.ja
va:675)
at java.lang.Thread.run(Thread.java:595)
Aug 4, 2008 2:23:51 PM org.apache.mina.filter.traffic.ReadThrottleFilter
log
WARNING: Read buffer flooded - session: 435391656 / 65536 bytes,
service: 436694856 / 67108864 bytes, global: 436694856 / 134217728
bytes.
Aug 4, 2008 2:23:55 PM org.apache.mina.common.DefaultExceptionMonitor
exceptionCaught
WARNING: Unexpected exception.
java.lang.OutOfMemoryError: Java heap space
at sun.nio.ch.Util.releaseTemporaryDirectBuffer(Util.java:67)
at sun.nio.ch.IOUtil.write(IOUtil.java:82)
at
sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:302)
at
org.apache.mina.transport.socket.nio.NioProcessor.write(NioProcessor.jav
a:162)
at
org.apache.mina.transport.socket.nio.NioProcessor.write(NioProcessor.jav
a:41)
at
org.apache.mina.common.AbstractPollingIoProcessor.writeBuffer(AbstractPo
llingIoProcessor.java:567)
at
org.apache.mina.common.AbstractPollingIoProcessor.flushNow(AbstractPolli
ngIoProcessor.java:528)
at
org.apache.mina.common.AbstractPollingIoProcessor.flush(AbstractPollingI
oProcessor.java:469)
at
org.apache.mina.common.AbstractPollingIoProcessor.access$500(AbstractPol
lingIoProcessor.java:43)
at
org.apache.mina.common.AbstractPollingIoProcessor$Worker.run(AbstractPol
lingIoProcessor.java:681)
at
org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.j
ava:51)
at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecuto
r.java:650)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.ja
va:675)
at java.lang.Thread.run(Thread.java:595)
Aug 4, 2008 2:23:55 PM org.apache.mina.filter.traffic.ReadThrottleFilter
log
BR
anderson
-----Original Message-----
From: Wenrui Guo [mailto:[EMAIL PROTECTED]
Sent: Monday, August 04, 2008 2:13 PM
To: [email protected]
Subject: OutOfMemoryError Java heap space after using ReadThrottleFilter
Hi, all
Since I want to control incoming messages retrieved from SMSC, I decided
to use ReadThrottleFilter to block excessive messages.
The code snippet listed as below:
// Executor used to control read throttle
private ScheduledExecutorService throttleExecutor = Executors
.newScheduledThreadPool(1);
connector = new NioSocketConnector();
connector.setConnectTimeout(connectTimeout);
connector.getFilterChain().addLast("codec",
new ProtocolCodecFilter(new
SMPPCodecFactory(false)));
connector.getFilterChain().addLast("exec", new
ExecutorFilter());
connector.getFilterChain().addLast("throttle",
new
ReadThrottleFilter(throttleExecutor));
But under high workload, the system still throw such exception:
Exception in thread "pool-5-thread-3" java.lang.OutOfMemoryError: Java
heap space
Who can tell me how can I achieve flow control aim? Does
readThrottleFilter can't limit message flow?
BR
andeson