10 月 28 日 - JK-1.2.27 发布
Apache Tomcat 团队荣幸地宣布 Tomcat Connectors 1.2.27 现已发布。这是一个稳定版本,新增了大量功能并修复了一些错误。
请参阅变更日志,了解所有更改的完整列表。
如果您在使用此版本时发现任何错误,请填写 Bugzilla 错误报告。
此版本中最重要的功能是
用于周期性任务的看门狗线程
连接器必须运行一些独立于请求处理的周期性任务。例如,探测或关闭空闲的后端连接、调整负载数量以及从错误状态恢复工作器。
在 1.2.27 版本之前,这些任务是在请求处理循环中完成的。当新请求进来并且任务到期时,处理请求的线程首先执行内部任务,然后处理请求。如果没有请求进来,任务就不会运行。如果任何任务花费的时间出乎意料地长,等待任务完成的请求的响应时间就会增加。
从本版本开始,您可以在 Web 服务器内部配置一个独立的看门狗线程,使其独立于请求处理来运行所有这些任务。当连接器与 Apache httpd 2.x 或 Microsoft IIS 一起使用时,此新功能可用。为了使新版本的行为与以前的版本保持一致,此功能默认是关闭的。您可以通过 Apache 的 JkWatchdogInterval
或 IIS 的 watchdog_interval
激活看门狗线程。
连接探测
在以前的版本中,连接探测(检查连接是否仍然工作)只能在新连接建立后立即进行,以及在发送每个请求之前直接进行。由于我们现在有了看门狗线程,我们还添加了一个周期性探测选项,您可以使用工作器属性 ping_mode
激活它。这对于防止臭名昭著的防火墙空闲连接断开也将非常有用。
较旧的属性 connect_timeout
和 prepost_timeout
仍然存在,并且与以前版本中的工作方式相同。由于现在有三种不同的探测选项,我们建议您将配置迁移到较新的属性 ping_mode
、ping_timeout
和 connection_ping_interval
。
挂载扩展
通常,我们为连接器定义工作器和挂载。工作器定义了我们想要与之通信的后端以及通信的配置参数、连接池等。挂载定义了我们想要将哪些 URI 转发到哪个工作器(因此我们也称挂载为 URI 映射规则)。在 1.2.27 版本中,您可以为每个挂载覆盖某些工作器参数。
一个易于理解的例子是回复超时。直到此版本,您都必须为整个工作器指定一个回复超时。但是回复时间很大程度上取决于请求的类型。因此,通常您会希望定义一个通用的回复超时,而对于某些特殊 URL,您需要放宽回复超时,因为您知道这些 URL 需要更长的处理时间(例如报告或其他计算密集型任务)。
另一种可能的情况是激活状态。您可以使用负载均衡器工作器将请求转发到 Tomcat 节点集群中的某些 Web 应用。如果您想更新一个节点上的某个 Web 应用,以前您必须停止转发此 Tomcat 节点上所有 Web 应用的请求。而直到现在,还无法做到只停止转发特定 Web 应用和您想要更新的节点上的请求。
从本版本开始,您可以将所谓的规则扩展添加到您的 uriworkermap 文件中,以影响每个挂载的工作器参数。这适用于所有 Apache 版本和 IIS。请记住,uriworkermap 文件在更改后会自动重新加载,无需重启 Web 服务器。
改进的 IIS 支持
我们以多种方式改进了 IIS 支持。现在可以使用 ISAPI 重定向器与多个 IIS 6 应用程序池。
此外,还添加了一些编译时功能改进。最值得注意的是分块编码支持,这是一次重大的重构,因此仍被认为是实验性的。您可以下载支持和不支持分块编码的二进制文件。在未来的版本中,分块编码很可能在所有构建中都可用。
另一个新功能是配置错误页面重定向的优雅方式。所有新功能都已在关于配置 IIS 的文档页面中记录。
增强的状态工作器
状态工作器现在还可以管理和显示不属于负载均衡器的 AJP 工作器的统计信息。其他改进包括新的 dump
操作、新配置属性的集成、显示自上次统计重置以来的平均请求和传输速率,以及仅显示负载均衡器单个成员的能力。
遗憾的是,我们不得不更改状态工作器 update
操作所使用的一些请求参数。
杂项改进
进一步的增强包括
- 可配置的会话粘性指示器:cookie 名称和 URL 路径参数名称可以自由选择,而不是符合 servlet 规范的
JSESSIONID
和;jsessionid
。 - 自动确定容纳所有工作器所需的共享内存段大小。
- 新的连接建立超时
socket_connect_timeout
。 - 从连接池获取空闲连接的新超时
connection_acquire_timeout
。 - 通过调整 AJP 工作器和负载均衡器属性
retries
的含义以及添加新的retry_interval
来改进重试处理。 - 允许 Web 服务器而不是 Tomcat 提供错误页面。