![Keep-Alive-Header nicht vom Tomcat 5.5-HTTP-Connector gesendet?](https://rvso.com/image/515665/Keep-Alive-Header%20nicht%20vom%20Tomcat%205.5-HTTP-Connector%20gesendet%3F.png)
Wir verwenden derzeit einen Hardware-Load Balancer, der dann zu Apache geht und dieser wiederum über den AJP-Connector zu Tomcat 5.5.
Wir haben uns aus verschiedenen Gründen dazu entschieden, Apache abzuschaffen – in unserem aktuellen System bietet es keinerlei Vorteile.
Wenn ich mir jedoch die Header anschaue, die gesendet werden, wenn wir dies tun, wird der Header „Keep-Alive: timeout=15 max=96“ nicht gesendet, wenn Sie den Tomcat-HTTP-Connector verwenden.
Interessanterweise kann ich für Tomcat 5.5 keine Dokumentation zu „keepalivetimeout“ finden, für Tomcat 6 jedoch schon. Ich kann aber auch keinen Hinweis darauf finden, dass Tomcat 5.5 diese Einstellung nicht unterstützt.
hier ist mein Anschluss:
<Connector port="8090" maxHttpHeaderSize="8192"
maxThreads="400" minSpareThreads="150" maxSpareThreads="300"
enableLookups="false"
connectionTimeout="2" maxKeepAliveRequests="400" disableUploadTimeout="true" />
Gibt es also eine Möglichkeit, das Keepalive-Timeout festzulegen, wenn wir den HTTP-Connector mit Tomcat 5.5 verwenden, und das Senden dieses Header-Eintrags zu erzwingen?
Nur um das klarzustellen – der genaue Header-Eintrag, den ich vom Server zurück sehe, ist dieser bei Apache:
Keep-Alive: timeout=2, max=100
Aber nichts vom Kater/Kojote.
Ich habe mir das noch einmal genauer angesehen und glaube nicht, dass der Keep-Alive-Header-Eintrag wirklich wichtig ist. Das Problem scheint zu sein, dass Keep-Alives im Tomcat 5.5-HTTP-Connector einfach nicht unterstützt werden. In Tomcat6 (+Java 6) scheinen sie zu funktionieren.
Danke, Dan
Antwort1
Sie waren auf dem richtigen Weg. In Tomcat 5.5 ist das ConnectionTimeout dasselbe wie das KeepaliveTimeout in Tomcat 6.0. Sie sollten den Wert jedoch von 2 auf 2000 ändern, da der Tomcat-Wert in Millisekunden und der Apache-Wert in Sekunden angegeben ist.
Sie haben Recht, da Sie den Timeout-Wert in den von Ihrem Tomcat gesendeten HTTP-Headern nicht sehen. Aber das Timeout wird auf der Serverseite ausgeführt. Ich gehe davon aus, dass es nicht gesendet wird, da der Tomcat-Connector HTTP/1.1 und der Kee-Alive: timeout=X, max=Y
HTTP/1.0 ist. Da derTomcat-Dokumentationsagt, dass Sie die Timeout-Werte auf beiden Seiten synchronisieren sollten, in Ihrem Fall Loadbalancer und Tomcat.