Mantieni il timeout attivo non rispettato su Amazon ELB


9

Sto usando Tomcat 6.0.24 su Ubuntu (JDK 1.6) con un'app che esegue richieste in stile Comet su un connettore HTTPS (direttamente contro Tomcat, non usando APR).

Vorrei impostare il keep-alive su 5 minuti in modo da non dover aggiornare le connessioni a lungo polling. Ecco la mia configurazione:

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

Sfortunatamente sembra che il server chiuda la connessione dopo 65 secondi. Il pcap di una sessione di esempio è simile al seguente:

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

(Immagino che il timeout di 5 minuti sul client sia dovuto alla lib HTTP che non rileva la chiusura del socket sull'estremità del server, ma in ogni caso - il server non dovrebbe chiudere la connessione così presto)

(modifica: funziona come previsto quando si utilizza il connettore HTTP standard)

Risposte:


13

ELB (Elastic Load Balancer) di Amazon ha un timeout di 60 secondi non documentato ( tranne nei forum ) che interromperà la connessione se non vengono inviati dati. Hacking inviando spazi bianchi ogni 55 secondi sembra che funzionerà fino a quando non renderanno configurabile.


(il timeout è ancora lì, BTW .. jeesh)
sehugg

ancora non configurabile ... questo è un problema in sospeso dal 2009 o giù di lì adesso ...
Dennis Münkle,


10

Il timeout del bilanciamento del carico, che chiude la connessione, è ora documentato :

Per configurare l'impostazione del timeout di inattività per il bilanciamento del carico

  1. Apri la console Amazon EC2 all'indirizzo https://console.aws.amazon.com/ec2/ .
  2. Nel riquadro di navigazione, sotto LOAD BALANCING , fare clic su Load Balancer .
  3. Seleziona il tuo bilanciamento del carico.
  4. Nel riquadro inferiore, selezionare la scheda Descrizione .
  5. Trova le impostazioni di connessione , quindi fai clic su (Modifica) .
  6. Nella finestra di dialogo Configura impostazioni connessione , immettere un valore per Timeout inattività . L'intervallo per il timeout di inattività è compreso tra 1 e 3.600 secondi.
  7. Fai clic su Salva .

Questa dovrebbe ora essere la risposta accettata.
jonatan,


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.