A existência de um balanceador de carga permite reutilizar conexões de soquete?

6

Eu tenho um serviço no qual servidores enviam arquivos xml de 20kb para o meu servidor.

Não há sessão, é uma única solicitação POST e é isso. Cada solicitação individual é autenticada com base no conteúdo do arquivo xml.

Existem ajustes relacionados a soquetes que terei que fazer, pois durante o teste de carga, o servidor esgota seu pool de soquetes (32K).

De qualquer forma, eu queria saber o que as coisas podem mudar quando eu trago um balanceador de carga para a equação que poderia arredondar solicitações entre dois ou mais servidores web.

O balanceador de carga pode reutilizar soquetes?

Mais uma vez, só quero ser claro, servidores do cliente estão postando um arquivo para o meu servidor, uma vez que o arquivo foi http post eles estão 100% concluídos. Qualquer postagem http subsequente será considerada uma nova "transação".

    
por user1361315 27.04.2012 / 22:52

3 respostas

1

Eu estou supondo que você está se referindo a SO_REUSEADDR em vez de multiplexação de conexão. O único benefício que isso oferece é que um soquete em TIME_WAIT não impede uma nova associação de soquete ao mesmo endereço. Eu nunca encontrei um sistema que realmente usa a fase TIME_WAIT para o que é destinado - se você tem muitos soquetes em TIME_WAIT talvez você deva reduzir o tempo limite.

Fazer tudo ir mais rápido ajudaria também - mas você não deu muita informação sobre a configuração aqui e o padrão de tráfego.

Qualquer tipo de balanceador de carga de proxy fornecerá ainda menos conexões clien do que você tem agora (já que cada conexão de entrada requer uma conexão com os dispositivos de back-end). OTOH RRDNS reduzirá pela metade a carga sem a complexidade e o custo de um SPOF.

it is a single POST request

Então, estamos falando de HTTP aqui? Se sim, então há um escopo ENORMOUS para ajuste.

    
por 28.04.2012 / 01:42
1

Todos os balanceadores de carga principais têm uma forma de reutilização de conexão e pool, eles apenas chamam de algo diferente. Eles são projetados para processar pacotes com rapidez e eficiência.

A F5 chama isso de multiplexação TCP do OneConnect, Netscaler ... Eu não sei o suficiente sobre os outros fornecedores ou soluções de código aberto.

Esse recurso permite que os balanceadores de carga reutilizem as conexões TCP no lado do servidor e melhorem consideravelmente o desempenho do aplicativo da Web no back-end. Quando uma conexão é concluída, ela é movida para um pool de reutilização no balanceador de carga e correspondida a uma conexão subsequente, se for adequada (se não for adequado, o balanceador de carga abrirá uma nova conexão TCP com o servidor). Não há desmontagem de conexão e, portanto, não há necessidade dos handshakes triplos subsequentes em novas conexões ou de o servidor atribuir ou remover a memória atribuída aos soquetes abertos. A outra coisa a notar é que as conexões do lado do servidor são sequenciais, não são pipelining.

Sem reutilização da conexão, é uma correlação de 1 a 1 (entre cliente e servidor) e, na minha experiência, o desempenho (do aplicativo) é drasticamente reduzido com a carga no servidor de back-end muito maior. Se for tráfego SSL, você verá uma CPU atingida devido às trocas de chaves.

    
por 10.05.2012 / 16:54
0

Acho que dependerá do balanceador de carga. Eu sei que a F5 tem um recurso chamado OneConnect que permite a carga balancer para multiplexar vários pedidos para abrir sockets. Isso reduz a sobrecarga de criação / desmontagem de soquete para cada transação de protocolo de nível superior.

Eu sei que outros balanceadores de carga têm recursos semelhantes, embora eu não esteja tão familiarizado com eles.

    
por 28.04.2012 / 01:40