Front-End do HaProxy para enfileiramento de back-end e tempos limite

3

Eu só estou tentando enrolar minha cabeça em torno de filas / timeouts no HaProxy entre um frontend, back-end e um servidor. Eu ainda estou aprendendo sobre TCP, sockets, conexões etc, então me perdoe se qualquer uma dessas perguntas não fizer sentido. Estou apenas procurando confirmação / esclarecimento sobre alguns desses itens:

Conexões com clientes e balanceamento de carga frontend

O próprio Haproxy tem um global maxconn limite (eu chamarei isso de gmc ). Pelo que entendi, esse gmc está em conexões recebidas de clientes (roteados para front-ends).

Cada frontend tem sua própria configuração de maxconn (eu chamarei femc ).

Se meu gmc for 40 e eu tiver dois frontends com femc de 10 e receber 50 solicitações em de uma vez só.

Perguntas:

  • É verdade que 20 serão aceitos (10 por cada frontend), 20 serão backlogged (10 em cada frontend) e os restantes 10 serão backlogged globalmente no nível do proxy?
  • Existe um backlog global E um backlog de frontend? Ou o parâmetro backlog é relevante somente no frontend.
  • Se houver um backlog global, isso é apenas específico do sistema operacional com base no número de descritores de arquivo disponíveis?
  • Se definirmos nosso backlog max como 1, o que aconteceria com as solicitações restantes? Eles seriam negados imediatamente? (isso depende eu acho que na resposta anterior)
  • o maxconn global também se aplica a conexões de back-end? É o limite superior de TODAS as conexões em todo o sistema?

Conexões de servidor e enfileiramento de solicitações

Continuando com o exemplo acima, adicionaremos um back-end para cada front-end, ambos com dois servidores com maxconn de 2 cada ( smc ) e um maxqueue de 1 ( smq ).

Assim, cada back-end pode manipular 4 solicitações simultâneas (2 por servidor) e enfileirar 2 solicitações (1 por servidor) 6 solicitações totais por back-end

Perguntas:

  • O que acontece com as 4 solicitações extras que o frontend recebeu? Eles estão "enfileirados" lá? Existe um parâmetro no frontend que controla esse enfileiramento?
  • Um back-end tem sua própria fila que não é configurável? (maxqueue só parece estar em um nível de servidor)

Estou perguntando tudo isso porque temos um servidor legado com propriedades de solicitação MUITO heterogêneas. Alguns podem acontecer em 10ms , alguns 10s . Atualmente, não temos nenhum limite em conexões de servidores, e estamos vendo alguns dos backlogs de nosso servidor web sendo preenchidos por solicitações muito lentas, enquanto outras estão quase ociosas. Por fim, estou tentando amenizar isso um pouco.

Todas as respostas para as perguntas acima seriam SUPERÁVEIS!

    
por brad 24.11.2017 / 21:25

0 respostas

Tags