Compreendendo as conexões max-simultâneas de clientes-servidor e o estado TIME_WAIT

1

Eu sei que há muitas perguntas e respostas em torno do estado TIME_WAIT de uma conexão de soquete, mas de alguma forma nenhuma delas (ou talvez de uma perspectiva de especialistas) me ajuda a entender meu problema (ou encontrar possíveis soluções).

Meu cenário é que eu tenho um servidor voltado para a internet, que tem que lidar com milhares de conexões por segundo (ele fornece algum tipo de API). Eu observo que as conexões com o servidor geralmente são possíveis, mas o time_connect e o time_total (usando curl ) estão alcançando de 0.009 a 0.526 para o primeiro e 0.134 to 0.926 para o último. Eu também observo uma quantidade enorme de conexões em TIME_WAIT state - em torno de 32,000+ .

Portanto, minha primeira pergunta é, quantas conexões simultâneas (com uma distribuição Debian padrão configurada) um servidor pode manipular dentro de um segundo, um minuto ou uma hora. Existe alguma fórmula "simples" para calcular o limite lógico de possíveis conexões simultâneas .

Além disso, no futuro, posso não apenas manipular uma conexão de entrada diretamente no servidor em si, mas posso ter que encaminhá-la para um proxy, obter o resultado e retorná-lo. Estou até pensando em utilizar o mecanismo de balanceamento de carga do nginx (se necessário). A segunda questão é, portanto, ter um proxy / carregamento / balanceamento de carga no local, como a fórmula teria que ser modificada?

Minha última pergunta seria: que alternativas existem para aumentar o número de conexões simultâneas, por exemplo,

  • adicionar outro servidor para o domínio (isso duplicaria a quantidade de conexões simultâneas corretas?),
  • diminuir o tempo gasto em TIME_WAIT (isso ajudaria e como),
  • ...

Muito obrigado por qualquer ajuda ou qualquer referência!

    
por Philipp 30.08.2017 / 22:51

0 respostas