web-dev-qa-db-ja.com

キープアライブヘッダーがTomcat5.5 httpコネクタから送信されませんか?

現在、ハードウェアロードバランサーを使用しています。ハードウェアロードバランサーはApacheに送られ、AJPコネクタを介してTomcat5.5に送られます。

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

ただし、これを行うときに送信されるヘッダーを見ると、Tomcat httpコネクターを使用すると、「キープアライブ: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コネクタでサポートされていないことだと思われますか?それらはTomcat6(+ Java 6)で動作するようです。

ありがとう、ダン

2
Codek

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

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

1
Christian