Bryant, Jason - AES wrote:
How does MINA handle write throttling?
It currently does not.
If a server is being developed to handle thousands of concurrent connections
then some of the clients will be slow and have their data output buffers
getting backed up. Is this still an issue for MINA, or do you handle partial
writes and reads along with queueing future requests until space clears on a
connections buffer?
We are working on that. It's expected to be there for 2.0. Not an easy
thing though, as this imply to deal with thread starvation too, or with
some heuristic to deal with too slow clients.
Currently I am using an NIO server which has a WritableByteChannel between the
socket and my classes handling output. I tried to pump data in different sizes
while having anywhere from 100-500 clients. Even with DirectBuffering off when
creating my channels I am still getting Direct Buffer out of memory errors
because the WritableByteChannel seems to create a temporary direct buffer to
handle the overflow, which eventually becomes too large if I have too many
clients or too much data hitting the server.
But if this is a problem MINA has fixed it would make sense to switch to that.
Are there any performance statistics showing if MINA outperforms a regular NIO
implementation, or at least comes close?
As MINA is just a framework written on top of NIO, it should not be
faster. But it is supposed to handle the load more easily than an
(average) hand written NIO server...
hope it helps.
--
--
cordialement, regards,
Emmanuel Lécharny
www.iktek.com
directory.apache.org