Alessandro Torrisi wrote:
Hi ! I'm developing a free and opensource Direct Connect software (P2P
server). Now that protocol implementation is quite complete I'm testing
with lot of connections.
When connections are made in a concurrent way (50-100 a time), the
server seems to be blocked...
Can I do something to improve performance, adjusting some parameter or
applying some programming pattern directly on Mina ? I've listened about
Thread Pools on SocketAcceptor and IoThreadPool but I didn't find any
tutorial or documentation, is it possible to directly configure these
ones ?
Yes. By default the maximum thread pool size equals Integer.MAX_VALUE.
It can be changed but this has changed bewteen MINA 0.8 and 0.9.
In 0.8, when using SimpleServiceRegistry, you can configure the maximum
pool size like this:
IoThreadPoolFilter f = (IoThreadPoolFilter)
reg.getIoAcceptor(TransportType.SOCKET).getFilterChain().get("threadPool");
f.setMaximumPoolSize(10);
In 0.9 its not that easy since the ThreadPoolFilter used by
SimpleServiceRegistry isn't accessible until a session has been created.
You could try to extend SimpleServiceRegistry and configure the
protected threadPoolFilter yourself:
public class MyServiceRegistry extends SimpleServiceRegistry {
public MyServiceRegistry() {
super();
threadPoolFilter.setMaximumPoolSize(10);
}
}
And then instead of using SimpleServiceRegistry you use MyServiceRegistry.
Both of these approaches will use a thread pool of at most 10 threads.
HTH
/Niklas