Existem algumas maneiras de lidar com essa.
A maneira mais fácil é aumentar o alcance efêmero, mas você já meio que fez isso e obviamente há limites até onde você pode ir com essa solução.
Outra solução seria o DNS round-robin e a adição de vários endereços IP aos nós do balanceador de carga. Às vezes isso não é facilmente aplicável (você precisa esperar para obter IPs adicionais, aguardar o período de propagação do DNS, etc.).
Duas coisas que você pode fazer com segurança imediatamente, enquanto considera outras soluções de longo prazo, seriam diminuir os timers TCP e ativar tcp_reuse.
tcp_reuse é bastante seguro de usar no balanceador de carga, e o que ele faz é permitir que o kernel reutilize sockets no estado TIME_WAIT para novas conexões. Para ligá-lo, corra na sua caixa linux:
# sysctl -w net.ipv4.tcp_tw_reuse=1
Para tornar a inicialização persistente:
# echo "net.ipv4.tcp_tw_reuse = 1" >> /etc/sysctl.d/net.ipv4.tcp_tw_reuse.conf
Outros parâmetros de ajuste do kernel que podem ajudar são:
- net.core.somaxconn (tamanho da fila de escuta)
- net.ipv4.tcp_max_syn_backlog (número de solicitações de conexão lembradas sem o ACK)
Além disso, você pode diminuir o net.ipv4.tcp_fin_timeout para 1 ou 2 (quanto tempo manter os sockets no estado FIN-WAIT-2 se o seu host for a única conexão de fechamento).
Espero que ajude.