Vagabundando pela net encontrei uma situação mencionada pelo Matias Neiff que relatava atrasos em um gateway GPS desenvolvido em JAVA. Imagináva-se ser problema de banco, disco, rede, etc. O problema estava no próprio gateway que parava após um certo número de conexões.A solução foi fazer o balanceamento de conexões usando iptables para fazer um Round Robin nas conexões, ou seja, cria-se uma nova conexão (-m state –state NEW) e a envia para uma outra (-m statistic –mode nth) fazendo coincidir o número de pacotes (–packet 1), sobre a quantidade total de serviços (–every 3), cada vez que o limite é atingido o contador volta para zero.
Abaixo segue o exemplo mencionado:
iptables -t nat -I PREROUTING -p tcp –dport 5507 -m state –state NEW -m statistic –mode nth –every 3 –packet 0 -j DNAT –to-destination 192.168.1.4:5507
iptables -t nat -I PREROUTING -p tcp –dport 5507 -m state –state NEW -m statistic –mode nth –every 3 –packet 1 -j DNAT –to-destination 192.168.1.5:5507
iptables -t nat -I PREROUTING -p tcp –dport 5507 -m state –state NEW -m statistic –mode nth –every 3 –packet 2 -j DNAT –to-destination 192.168.1.4:5512