現在、ハードウェアロードバランサーを使用しています。ハードウェアロードバランサーは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)で動作するようです。
ありがとう、ダン
あなたは正しい方向に向かっていました。 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の両方のタイムアウト値を同期する必要があります。