Mantener vivo el tiempo de espera no se respeta en Amazon ELB

9

Estoy usando Tomcat 6.0.24 en Ubuntu (JDK 1.6) con una aplicación que hace solicitudes de estilo Comet en un conector HTTPS (directamente contra Tomcat, no usando APR).

Me gustaría establecer el mantenimiento de vida en 5 minutos para no tener que actualizar mis largas conexiones de sondeo. Aquí está mi configuración:

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

Desafortunadamente, parece que el servidor cierra la conexión después de 65 segundos. El pcap de una sesión de muestra es algo como esto:

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

(Supongo que el tiempo de espera de 5 minutos en el cliente se debe a que la biblioteca HTTP no detecta el cierre del socket en el extremo del servidor, pero en cualquier caso, el servidor no debería cerrar la conexión tan temprano)

(editar: esto funciona como se esperaba cuando se usa el conector HTTP estándar)

sehugg
fuente

Respuestas:

13

El ELB (Elastic Load Balancer) de Amazon tiene un tiempo de espera de 60 segundos indocumentado ( excepto en foros ) que cortará la conexión si no se enviaron datos. Hackear enviando espacios en blanco cada 55 segundos parece que funcionará hasta que lo hagan configurable.

sehugg
fuente
(el tiempo de espera aún está allí, por cierto ... jeesh)
sehugg
todavía no es configurable ... este es un tema pendiente desde 2009 más o menos ahora ...
Dennis Münkle
10

El tiempo de espera del equilibrador de carga, que cierra la conexión, ahora está documentado :

Para configurar la configuración de tiempo de espera inactivo para su equilibrador de carga

  1. Abra la consola Amazon EC2 en https://console.aws.amazon.com/ec2/ .
  2. En el panel de navegación, en BALANCE DE CARGA , haga clic en Balanceadores de carga .
  3. Seleccione su equilibrador de carga.
  4. En el panel inferior, seleccione la pestaña Descripción .
  5. Busque Configuración de conexión y luego haga clic en (Editar) .
  6. En el cuadro de diálogo Configurar opciones de conexión , ingrese un valor para Tiempo de espera inactivo . El rango para el tiempo de espera inactivo es de 1 a 3.600 segundos.
  7. Haz clic en Guardar .
Zoltán
fuente
Esta debería ser ahora la respuesta aceptada.
jonatan