Pode haver algumas coisas acontecendo aqui. Seu comando acima se traduz em 50 conexões simultâneas, cada uma emitindo 1000 solicitações. Uma coisa a notar aqui é que, se bem me lembro, o apachebench não permite manter ativo por padrão. Pode valer a pena adicionar isto (passe -k para o seu comando acima). Isso será mais um teste do mundo real de qualquer maneira, já que a maioria dos agentes usa o keep-alive, assim como o Tomcat, por padrão. Isso deve ajudar o problema se minhas teorias abaixo estiverem corretas.
1) Eu suspeito que o seu bater esse pool de discussão com muitos pedidos, uma vez que cada um está derrubando. Este é um grande sucesso para esses segmentos, bem como a pilha TCP / IP no sistema. O que me leva a ...
2) Você pode estar (ok, provavelmente está) ficando sem portas efêmeras ou atingindo soquetes TIME_WAIT. Se cada solicitação for realmente uma solicitação nova e exclusiva, é muito provável que você esteja correndo para uma situação TIME_WAIT com milhares de sockets nesse estado (dê uma olhada no netstat -an | grep -ic TIME_WAIT para uma contagem deles durante sua carga). Esses soquetes não poderão ser reutilizados, a menos que você tenha ativado o recurso time_wait_reuse no seu sistema. O fato de você estar usando o host local só piora isso.
Para mais informações sobre como reutilizar o time_wait, dê uma olhada aqui . Observe também que este thread corretamente aponta que a configuração do tempo limite fin_wait está incorreta no contexto de time_wait, portanto evite isso. Cócegas fin_wait no contexto de TIME_WAIT está errado e não irá ajudá-lo.
Portanto, dê uma olhada e ajuste o tcp_tw_recycle / reuse especificamente. Estes irão ajudá-lo a passar por seus testes, assim como manter-se vivo.