我們目前正在使用硬體負載平衡器,該負載平衡器隨後轉到 Apache,然後透過 AJP 連接器轉到 Tomcat 5.5。
由於各種原因,我們決定放棄 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" />
所以;如果我們將 http 連接器與 tomcat 5.5 一起使用,有什麼方法可以指定 keepalive 逾時,並強制發送此標頭條目?
需要明確的是 - 我從伺服器返回的確切標頭條目是 apache 的:
Keep-Alive: timeout=2, max=100
但 tomcat/coyote 沒有任何資訊。
我對此進行了更多研究,我認為 Keep-Alive 標頭條目並不真正重要。問題似乎是 tomcat 5.5 http 連接器根本不支援 keep-alives?它們似乎確實可以在 tomcat6 (+java 6) 中運作。
謝謝,丹
答案1
你正朝著正確的方向前進。 tomcat 5.5中的connectionTimeout與tomcat 6.0中的keepalivetimeout相同。但您應該將該值從 2 更改為 2000,因為 tomcat 值以毫秒為單位,apache 值以秒為單位。
你是對的,因為你沒有在 tomcat 發送的 http 標頭中看到超時值。但超時會在伺服器端採取行動。我假設它沒有發送,因為 tomcat 連接器是 HTTP/1.1,並且Kee-Alive: timeout=X, max=Y
是 HTTP/1.0。作為tomcat文檔告訴您,您應該同步雙方的逾時值,在您的情況下,負載平衡器和 tomcat 。