Preâmbulo:
Eu tenho um balanceador de carga elástico da AWS na frente de uma única instância do Amazon EC2.
Tenho três outras instâncias do EC2 enviando solicitações por meio de curvas para o balanceador de carga.
As solicitações diretas ao ip do EC2 têm tempos de resposta estáveis e uma velocidade aceitável.
Os pedidos para o ELB têm tempos de resposta mais altos, em média, com velocidade abaixo da ideal.
Minhas observações são quase idênticas a esta: link
"ELB's backend requests to the EC2 instance expect to be on HTTP 1.1 keep-alive connections. The instance/server needs to either support keep-alive connections OR explicitly return response headers to ELB that note the connection is closed.
Not returning that header and also not keeping alive the connection on the server results in ELB thinking the connection has been kept alive, waiting for ~30 seconds, and then retrying at that point with a new connection (hence the quick response times on the server, but slow perceived latency outside the ELB)."
Meu problema:
Descarregando o cabeçalho de resposta do ELB, ele ainda tem o cabeçalho keep-alive.
Descarregando o cabeçalho de resposta diretamente da instância do EC2, ele possui o Connection: close
.
Ainda estou experimentando as velocidades / latências altamente variáveis mencionadas no thread acima ao passar pela instância do ELB, mas, até onde sei, enviei explicitamente "Connection: close"
headers da instância do EC2 para o ELB.
Qualquer ideia é muito apreciada.