
現在、ハードウェア ロード バランサを使用しており、これが 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=Y
HTTP/1.0であるため、送信されないと想定しています。tomcat ドキュメントこの場合、ロードバランサーと Tomcat の両方のタイムアウト値を同期する必要があります。