我们目前正在使用硬件负载平衡器,然后转到 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" />
那么;如果我们使用带有 tomcat 5.5 的 http 连接器,有什么方法可以指定 keepalive 超时,并强制发送此标头条目?
需要明确的是 - 我从服务器看到的确切标头条目是使用 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 相同。但您应该将值从 2 更改为 2000,因为 tomcat 值以毫秒为单位,而 apache 值以秒为单位。
你是对的,因为你没有在 tomcat 发送的 http 标头中看到超时值。但超时将在服务器端起作用。我认为它没有发送,因为 tomcat 连接器是 HTTP/1.1,而 是Kee-Alive: timeout=X, max=Y
HTTP/1.0。因为tomcat 文档告诉你,你应该同步双方的超时值,在你的情况下是负载均衡器和tomcat。