Tomcat 5.5 http コネクタから Keep-Alive ヘッダーが送信されませんか?

Tomcat 5.5 http コネクタから Keep-Alive ヘッダーが送信されませんか?

現在、ハードウェア ロード バランサを使用しており、これが Apache に接続され、さらに AJP コネクタ経由で Tomcat 5.5 に接続されます。

さまざまな理由から、Apache を廃止することにしました。現在のシステムでは、Apache には利点がありません。

しかし、これを実行したときに送信されるヘッダーを見ると、Tomcat HTTPコネクタを使用すると「Keep-Alive: timeout=15 max=96」ヘッダーは送信されません。

興味深いことに、tomcat5.5 の「keepalivetimeout」に関するドキュメントは見つかりませんが、tomcat6 のドキュメントは見つかります。しかし、tomcat5.5 がこの設定をサポートしていないという証拠も見つかりません。

これが私のコネクタです:

<Connector port="8090" maxHttpHeaderSize="8192"
               maxThreads="400" minSpareThreads="150" maxSpareThreads="300"
               enableLookups="false"
               connectionTimeout="2" maxKeepAliveRequests="400" disableUploadTimeout="true" />

それで、Tomcat 5.5 で http コネクタを使用し、このヘッダー エントリを強制的に送信する場合、キープアライブ タイムアウトを指定する方法はありますか?

明確にするために、Apache でサーバーから返される正確なヘッダー エントリは次のとおりです。

Keep-Alive: timeout=2, max=100

しかし、Tomcat/Coyoteからは何も得られません。

これをさらに調べてみましたが、Keep-Alive ヘッダー エントリはそれほど重要ではないと思います。問題は、Tomcat 5.5 HTTP コネクタで Keep-Alive がサポートされていないということのようです。Tomcat6 (+Java 6) では動作しているようです。

ありがとう、ダン

答え1

正しい方向に進んでいます。Tomcat 5.5 の connectionTimeout は、Tomcat 6.0 の keepalivetimeout と同じです。ただし、Tomcat の値はミリ秒単位、Apache の値は秒単位なので、値を 2 から 2000 に変更する必要があります。

Tomcatから送信されるHTTPヘッダーにタイムアウト値が表示されないのは正しいです。ただし、タイムアウトはサーバー側で実行されます。TomcatコネクタはHTTP/1.1で、Kee-Alive: timeout=X, max=YHTTP/1.0であるため、送信されないと想定しています。tomcat ドキュメントこの場合、ロードバランサーと Tomcat の両方のタイムアウト値を同期する必要があります。

関連情報