Hello,
Robert Greig wrote:
In my tests the throughput in our application is more than doubled
when using our thread pool as compared with the default MINA one.
Impressive.
If other people are interested in trying our filter I'd be very
interested in seeing the performance they get.
I've adopted Asyncweb (a Mina base HTTP server) do use your thread pool and tried to
run some benchmarks against it, although it works, when I fire the load tester I get
lots of errors.
Read errors:
ERROR [SocketAcceptorIoProcessor-0.0] 17 Oct 2006 17:02:24 - Exception event
constructed: java.io.IOException: Connection reset by peer
java.io.IOException: Connection reset by peer
at sun.nio.ch.FileDispatcher.read0(Native Method)
at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:21)
at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:233)
at sun.nio.ch.IOUtil.read(IOUtil.java:206)
at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:236)
at
org.apache.mina.transport.socket.nio.SocketIoProcessor.read(SocketIoProcessor.java:272)
at
org.apache.mina.transport.socket.nio.SocketIoProcessor.process(SocketIoProcessor.java:246)
at
org.apache.mina.transport.socket.nio.SocketIoProcessor.access$4(SocketIoProcessor.java:235)
at
org.apache.mina.transport.socket.nio.SocketIoProcessor$Worker.run(SocketIoProcessor.java:564)
at
org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:43)
at java.lang.Thread.run(Thread.java:619)
INFO [SocketAcceptorIoProcessor-0.0] 17 Oct 2006 17:02:24 - Destroy called on
PoolingFilter AsynchronousWriteFilter
INFO [SocketAcceptorIoProcessor-0.0] 17 Oct 2006 17:02:24 - Destroy called on
PoolingFilter AsynchronousReadFilter
Write errors:
ERROR [SocketAcceptorIoProcessor-0.0] 17 Oct 2006 18:12:13 - Exception event
constructed: java.io.IOException: Broken pipe
java.io.IOException: Broken pipe
at sun.nio.ch.FileDispatcher.write0(Native Method)
at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:29)
at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:104)
at sun.nio.ch.IOUtil.write(IOUtil.java:75)
at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:334)
at
org.apache.mina.transport.socket.nio.SocketIoProcessor.doFlush(SocketIoProcessor.java:487)
at
org.apache.mina.transport.socket.nio.SocketIoProcessor.doFlush(SocketIoProcessor.java:419)
at
org.apache.mina.transport.socket.nio.SocketIoProcessor.access$5(SocketIoProcessor.java:380)
at
org.apache.mina.transport.socket.nio.SocketIoProcessor$Worker.run(SocketIoProcessor.java:572)
at
org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:43)
at java.lang.Thread.run(Thread.java:619)
These errors don't show up with the default thread pool.
Probably due to this errors I didn't get any throughput increase ... however as a
quick experiment I commented out the:
session.getFilterChain().fireExceptionCaught( session, e );
lines in the SocketIoProcessor and I did get a slight throughput increase with lower
CPU utilization.
--
Luis Neves