Tio be clear : when some sockets are ready for read (ie, the OP_READ flag
has been set, and there is something in the socket to be read), the
IoProcessor call to select()) will return and we will have a set of
SelectionKey returned. Thsi set contains the set of all the channel that
are ready for some processing. The IoProcessor thread will process them one
after the other, from top to bottom. That means we don't process multiple
sessions in parallel when all those sessions are handled by one
singleIoProcessor. You have to be careful in what you do in your
application, because any costly processing, or any synchronous access to a
remote system will block the other sessions processing.
Now, we always start the server with more than one IoProcessor (typically,
Nb core + 1 Ioprocessor). You can also fix a higher number of IoProcessor
if you like, but at some point, if your CPU is 100% used, adding more
IoProcessor does not help.
What kind of performance are you expecting to reach ? (ie, how many
requests per second ?)