Manter o tempo limite ativo não sendo respeitado no Amazon ELB

9

Estou usando o Tomcat 6.0.24 no Ubuntu (JDK 1.6) com um aplicativo que faz solicitações no estilo Comet em um conector HTTPS (diretamente no Tomcat, sem usar APR).

Gostaria de definir o keep-alive para 5 minutos, para não precisar atualizar minhas conexões de pesquisa longa. Aqui está a minha configuração:

<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
           maxThreads="1000"  keepAliveTimeout="330000"
        scheme="https" secure="true"
           clientAuth="false" sslProtocol="TLS" />

Infelizmente, parece que o servidor fecha a conexão após 65 segundos. O pcap de uma sessão de amostra é mais ou menos assim:

T=0   Client sends SYN to server, handshake etc.
T=65  Server sends FIN to client
T=307 Client sends FIN to server

(Suponho que o tempo limite de 5 minutos no cliente se deva à lib HTTP não detectar o fechamento do soquete no servidor, mas em qualquer caso - o servidor não deve fechar a conexão tão cedo)

(editar: isso funciona conforme o esperado ao usar o conector HTTP padrão)

sehugg
fonte

Respostas:

13

O ELB (Elastic Load Balancer) da Amazon tem um tempo limite de 60 segundos não documentado ( exceto nos fóruns ) que interromperá a conexão se nenhum dado for enviado. Hackear enviando espaços em branco a cada 55 segundos parece que funcionará até que eles tornem isso configurável.

sehugg
fonte
(o tempo limite ainda está lá, BTW .. jeesh)
sehugg 14/10
ainda não configurável ... esta é uma questão pendente desde 2009 ou assim agora ...
Dennis Münkle
4
Configurável até uma hora agora docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/...
Peter
10

O tempo limite do balanceador de carga, que fecha a conexão, agora está documentado :

Para definir a configuração de tempo limite inativo para seu balanceador de carga

  1. Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/ .
  2. No painel de navegação, em LOAD BALANCING , clique em Load Balancers .
  3. Selecione seu balanceador de carga.
  4. No painel inferior, selecione a guia Descrição .
  5. Localize as configurações de conexão e clique em (Editar) .
  6. Na caixa de diálogo Definir configurações de conexão , insira um valor para Tempo limite ocioso . O intervalo para o tempo limite inativo é de 1 a 3.600 segundos.
  7. Clique em Save .
Zoltán
fonte
Agora, essa deve ser a resposta aceita.
21716 jonatan