ODKL-ONLY: removed rabbitmq (we dont use it)
ODKL-ONLY: No recent index - it makes less load to elastics
avoid asking for localhost address on evety message. it wouldn't change so fast =)
introduce explicit output buffer batches, instead of implecit built into disruptor. Explicit batches are larger ( avg disruptor batch under load is 1.2 - i.e. no batching at all ). This allows to minimize number of context switches and eliminate extra (unneeded) pipelining, minimize roundtrips to elastic cluster (which netty based client is not excel in making a lot of roundtrips per second ).
also lower memry usage; avoid too often mongo db interaction (mongo hits CPU on updates)
make counters non blocking;
make periods of writes to mongo longer, because mongo hits CPU. made it simple by changing constant from 5 to 60 seconds.  for generic purpose it may be limited adaptively (by updates/sec) or just configured in .conf
Implemented plain old BIO UDP inputs for syslog and GELF udp. This gives 4x increase in throughput comparing to netty. Netty <=15kops; BIO is capable of DatagramSocket >60kops.
Optimized GELFMessageChunk and GELFMessage code to avoid excessive byte[] copying; too CPU expensive parsing of GELF chunks. This allows to process it all as fast as about 50k/sec on recent server class machine.