Hmmm, been looking at the network layer in Blitz and am seeing some odd behaviour in respect of JERI under concurrent load. Worse, enabling nio seems to make no odds which means the bottleneck is elsewhere. So I did some profiling and we seem to be spending all our time waiting for socket io.
So I wrote my own bare bones transport with nio which is way faster than JERI and doesn’t seem to have the same bottleneck (whatever it is!). Strange cos I can’t see any obvious reason for the large difference, both use serialization, both have to transport about the same amount of data, both can use nio and with a single thread handling use of Selector. Bit more work to do on my transport and then I’ll do a full comparison.
Whilst my transport might be a lot quicker, I’d rather use JERI with in-built support for security etc. So I really want to try and solve the problem but if I can’t, then maybe I’ll make my transport a “fast I/O if you don’t need security option”.
Entries (RSS)