Are you sure this fixes anything?

JRuby's TCPServer.new(...) calls listen(2) with a backlog of 50 by default (on my system, anyway). Simply setting this to 20 wouldn't necessarily solve your problem.

What I believe is happening is that, when the input->filter queue is full, writes to that queue will stall but because writes are attempted *after* reading from the tcp socket, new connections continue to be accepted, read, and have a write attempted. The lumberjack input is also affected by this same problem.
I believe the fix would be to add a way to check if the queue would stall a write, and if so, wait until that condition clears before accepting any new connection.