Halten Sie das Timeout am Leben, das bei Amazon ELB nicht eingehalten wird


9

Ich verwende Tomcat 6.0.24 unter Ubuntu (JDK 1.6) mit einer App, die Anforderungen im Comet-Stil auf einem HTTPS-Connector ausführt (direkt gegen Tomcat, ohne APR).

Ich möchte die Keep-Alive-Funktion auf 5 Minuten einstellen, damit ich meine Verbindungen mit langen Abfragen nicht aktualisieren muss. Hier ist meine Konfiguration:

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

Leider scheint der Server die Verbindung nach 65 Sekunden zu schließen. Das pcap einer Beispielsitzung sieht ungefähr so ​​aus:

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

(Ich vermute, das 5-minütige Timeout auf dem Client ist darauf zurückzuführen, dass die HTTP-Bibliothek den Socket auf der Serverseite nicht erkennt, aber auf jeden Fall sollte der Server die Verbindung nicht so früh schließen.)

(Bearbeiten: Dies funktioniert wie erwartet, wenn der Standard-HTTP-Connector verwendet wird.)

Antworten:


13

Die ELB (Elastic Load Balancer) von Amazon verfügt über ein undokumentiertes 60-Sekunden-Timeout ( außer in Foren ), das die Verbindung abbricht, wenn keine Daten gesendet wurden. Das Herumhacken durch Senden von Leerzeichen alle 55 Sekunden scheint zu funktionieren, bis sie dies konfigurierbar machen.


(das Timeout ist immer noch da, BTW .. jeesh)
sehugg

immer noch nicht konfigurierbar ... dies ist ein ausstehendes Problem seit 2009 oder so ...
Dennis Knochenwefel


10

Das Load Balancer-Timeout, mit dem die Verbindung geschlossen wird, ist jetzt dokumentiert :

So konfigurieren Sie die Einstellung für das Leerlaufzeitlimit für Ihren Load Balancer

  1. Öffnen Sie die Amazon EC2-Konsole unter https://console.aws.amazon.com/ec2/ .
  2. Klicken Sie im Navigationsbereich unter LOAD BALANCING auf Load Balancers .
  3. Wählen Sie Ihren Load Balancer.
  4. Wählen Sie im unteren Bereich die Registerkarte Beschreibung .
  5. Suchen Sie die Verbindungseinstellungen und klicken Sie dann auf (Bearbeiten) .
  6. Im Configure Connection Settings Dialogfeld einen Wert eingeben für Idle Timeout . Der Bereich für das Leerlaufzeitlimit liegt zwischen 1 und 3.600 Sekunden.
  7. Klicken Sie auf Speichern .

Dies sollte nun die akzeptierte Antwort sein.
Jonatan


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.