Visão geral dos sockets de rede
Quando uma conexão é estabelecida via TCP, um soquete é criado no host local e remoto.
O endereço IP remoto e a porta pertencem ao lado do servidor da conexão e devem ser determinados pelo cliente antes mesmo de iniciar a conexão. Na maioria dos casos, o cliente escolhe automaticamente qual endereço IP local usar para a conexão, mas às vezes é escolhido pelo software que estabelece a conexão. Finalmente, a porta local é selecionada aleatoriamente a partir de um intervalo definido disponibilizado pelo sistema operacional. A porta é associada ao cliente apenas pela duração da conexão e, portanto, é denominada efêmera. Quando a conexão é finalizada, a porta efêmera fica disponível para ser reutilizada.
Solução
Ativando conexões keepalive
Use a diretiva keepalive para habilitar conexões keepalive do NGINX para servidores upstream, definindo o número máximo de conexões keepalive ociosas para servidores upstream que são preservadas no cache de cada processo de trabalho. Quando esse número é excedido, as conexões usadas menos recentemente são fechadas. Sem keepalives você está adicionando mais sobrecarga e sendo ineficiente com conexões e portas efêmeras.
http {
upstream backend {
server 10.0.0.100:1234;
server 10.0.0.101:1234;
}
server {
# ...
location / {
# ...
proxy_pass http://backend;
proxy_bind $split_ip;
proxy_set_header X-Forwarded-For $remote_addr;
}
}
split_clients "$remote_addr$remote_port" $split_ip {
10% 10.0.0.210;
10% 10.0.0.211;
10% 10.0.0.212;
10% 10.0.0.213;
10% 10.0.0.214;
10% 10.0.0.215;
10% 10.0.0.216;
10% 10.0.0.217;
10% 10.0.0.218;
* 10.0.0.219;
}
}
mais: link