worker.properties配置
介绍
一个的Tomcat worker是等待执行servlet或代表一些web服务器的其他任何内容的Tomcat实例。例如,我们可以有一个Web服务器,例如Apache HTTP Server,将servlet请求转发到在其后面运行的Tomcat进程(工作程序)。
上述场景非常简单。实际上,可以配置多个Tomcat工作者来代表某个Web服务器为servlet提供服务。进行此配置的原因可能是:
- 我们希望不同的Tomcat工作者可以服务于不同的上下文,以提供一个开发环境,其中所有开发人员都共享同一台Web服务器,但拥有自己的Tomcat工作者。
- 我们希望不同的Tomcat进程为不同的虚拟主机提供服务,以在属于不同公司的站点之间提供清晰的分隔。
- 我们要提供负载平衡,这意味着在自己的机器上运行多个Tomcat工作器,并在它们之间分配请求。
拥有多个工作人员的原因可能更多,但我想这个清单就足够了。
Tomcat worker是在一个名为worker.properties的属性文件中定义的,本教程介绍了如何使用它。
配置文件基础
可以使用属性文件(在conf /目录中有一个名为worker.properties的示例文件)来为Tomcat Web服务器插件定义工作程序。
格式,注释,空格
文件中的行定义属性。通用格式为
<名称> = <值>
点用作名称的一部分,以表示配置层次结构。
无效的指令将在Web服务器启动期间记录,并阻止Web服务器正常工作。某些指令已被弃用。尽管它们仍然可以使用,但是您应该用它们的后继者替换它们 。
有些指令可以多次使用。这将在下表中明确指出。
属性名称或值开头和结尾的空格将被忽略。注释可以放在任何行中,并以井号“#”开头。井号后面的任何行内容都将被忽略。
可以使用数字0(false)和1(true)作为值或off(false)和on(true)或以字母f(false),n(false),t开头的任何其他字符串来设置布尔属性(true)或y(true)。该值不区分大小写。在本文档中,我们将坚持false和true。
全球物业
这些指令具有全局范围。
指示 | 默认 | 描述 |
---|---|---|
worker.list |
ajp13 |
JK将使用的逗号分隔的工人名称列表。启动时,Web服务器插件将实例化名称出现在worker.list属性中的工作程序,这些工作程序也是您可以将请求映射到的工作程序。
该指令可以多次使用。 |
worker.maintain |
60 |
辅助连接池的维护间隔(以秒为单位)。如果设置为正值,JK将扫描worker.list指令中指定的所有工作程序的所有连接,并检查是否需要回收连接。
此外,任何负载均衡器每工作一个工人都会进行一次全局维护。在全局维护期间,负载计数器会衰减,并且会检查错误的工作人员的recover_time。 此功能已在jk 1.2.13中添加。 |
工人属性
每个工作程序配置指令由三个单词组成,这些单词由点分隔:
worker。<工人名称>。<指令> = <值>
第一个词总是工人。第二个单词是您可以选择的工人名称。在负载平衡的情况下,工作者名称具有附加含义。请咨询 负载均衡器方法。
工作程序的名称只能包含字母数字字符 [az] [AZ] [0-9] [_ \-],并且区分大小写。变量,环境变量
您可以在worker.properties文件中定义和使用变量。要定义变量,请使用以下语法:
<变量名称> = <值>
变量名中允许使用点号,但是您必须注意不要使用与标准指令冲突的变量名。因此,变量名绝不能以“ worker”开头。
要使用变量,可以在属性行的值侧的任何位置插入“ $(variable_name)”。如果尚未在使用变量之前对其进行定义,我们将在过程环境中搜索具有相同名称的变量并使用其值。
财产继承
通常,每个工人都想使用相同的属性值。为了减少配置行的重复并简化文件的维护,您可以将属性从一个工作线程继承到另一个工作线程,甚至从模板继承到实际工作线程。
指令“引用”允许以分层方式在工作器或工作器模板之间复制配置。如果worker castor设置了 worker.castor.reference = worker.pollux,那么它继承了pollux的所有属性,除了为castor明确设置的属性。
请注意,该指令的值不仅是所引用工作程序的名称,而且是包括“工作程序”在内的完整前缀。
要使用模板工作程序,只需像实际工作程序一样定义它,但不要将其添加到“ worker.list”或作为任何负载均衡器的成员。这样的模板工作者不必包含强制性指令。如果一个人在负载均衡器中有很多平衡的工作人员,并且这些工作人员共享大多数属性,则此方法特别有用。您可以在模板工作程序中设置所有这些属性,例如使用前缀“ worker.template1”,然后仅在所有平衡工作程序中引用这些公共属性。
引用可用于以分层方式在多个跃点上继承属性。嵌套引用的最大深度为20。请注意不要引入引用循环!
此功能已在jk 1.2.19中添加。
所有工人指令清单
强制性指令
强制性指令是每个工人必须包含的指令。没有他们,工人将无法工作或行为不端。这些指令会被打上了强烈的下表字体。
指示 | 默认 | 描述 |
---|---|---|
type |
ajp13 |
工作者的类型(可以是ajp12,ajp13,ajp14,jni,lb或status之一)。工作程序的类型定义了可以应用于工作程序的指令。
类型ajp13是JK在Web服务器和Tomcat之间进行通信的首选工作程序类型。这种类型的工作者使用套接字作为通信通道。有关ajp13协议栈的详细说明,请浏览至 AJPv13协议规范。类型lb用于负载平衡工作人员,状态则用于状态工作人员。 类型ajp14是实验性的,不建议使用,类型ajp12 已过时。 JNI工作者不再受支持,可能会无法工作。不要使用它们。 |
连接指令
连接指令定义了连接和维护JK与远程Tomcat之间的持久连接的连接池所需的参数。
指示 | 默认 | 描述 |
---|---|---|
host |
localhost |
后端Tomcat实例的主机名或IP地址。远程Tomcat必须支持AJP13协议栈。主机名可以嵌入以冒号(':')分隔的端口号。 |
port |
8009 |
侦听已定义协议请求的远程Tomcat实例的端口号。默认值取决于工作程序类型。对于ajp13 worker,默认端口为 8009,而对于ajp14 type worker,该值为8011。 |
source |
- |
用于连接源的名称或IP地址(发送地址)。仅应在多宿主主机上使用。
此功能是实验性的,已在jk 1.2.41中添加。 |
socket_timeout |
0 |
JK和远程主机之间的通信通道使用的套接字超时(以秒为单位)。如果远程主机在指定的超时时间内未响应,则JK将生成错误,然后重试。如果设置为零(默认值),JK将在所有套接字操作上等待无限量的时间。 |
socket_connect_timeout |
socket_timeout*1000 |
用于JK与远程主机之间的通信通道的套接字连接超时(以毫秒为单位)。如果远程主机在指定的超时时间内未响应,则JK将生成错误,然后重试。
请注意, 此功能已在jk 1.2.27中添加。 |
socket_keepalive |
false |
当Web服务器和Tomcat引擎之间有防火墙,而防火墙往往会丢失不活动的连接时,应使用此指令。该标志将告诉操作系统KEEP_ALIVE 在不活动的连接上发送消息(间隔取决于全局OS设置,通常为120分钟),从而防止防火墙切断不活动的连接。要启用keepalive,请将此属性值设置为true。
防火墙剪切无效连接的问题是,有时,Web服务器或Tomcat都没有有关剪切的信息,并且无法处理。 |
ping_mode |
- |
该标志确定在哪些条件下探测已建立的连接以确保它们仍在工作。探测是使用空的AJP13数据包(CPing)完成的,并希望在某个超时时间内收到适当的答案(CPong)。
该标志的值可以是以下标志的任意组合(多个值的组合没有任何分隔符): C(连接):如果设置,则连接到后端后将探测一次连接。可以通过设置超时 P(prepost):如果设置,则在将每个请求发送到后端之前将先探测连接。可以通过设置超时 I(间隔):如果设置,则将在常规内部维护周期内探测连接,但前提是空闲时间长于 A如果设置,将使用所有上述探针。 此功能已在jk 1.2.27中添加。Connect和岗前探测技术已经获得通过 |
ping_timeout |
10000 |
等待CPing连接探针的CPong应答时使用的超时(以毫秒为单位)。探针的激活通过进行 ping_mode 。ping_mode 可以通过connect_timeout 和分别覆盖connect和prepost 的超时prepost_timeout 。
出于兼容性原因,无论何时 此功能已在jk 1.2.27中添加。 |
connection_ping_interval |
0 / (ping_timeout/1000)*10 |
使用间隔连接探测时,CPing数据包会探测空闲时间超过此间隔(以秒为单位)的连接是否仍然有效。
可以通过 此功能已在jk 1.2.27中添加。 |
connection_pool_size |
see text |
这定义了到AJP后端建立的,作为连接池维护的连接数。这将限制每个Web服务器子进程可以建立的那些连接的数量。
连接池大小属性仅用于多线程Web服务器,例如Apache HTTP Server,Microsoft IIS和iPlanet Web Server。connection_pool_size属性需要反映一个Web服务器进程应能够并行发送到后端的请求数。通常,这与每个Web服务器进程的线程数相同。JK将自动为Apache HTTP Server发现此数字,并将池大小设置为该值。对于IIS,默认值为250(在1.2.20版本之前:10),对于iPlanet,默认值为1。 强烈建议将IIS和iPlanet的此值调整为一个Web服务器进程应能够并行发送到后端的请求数。您应该测量高峰活动期间需要多少个连接而不会出现性能问题,然后根据您的增长率添加一些百分比。最后,您应该检查您的Web服务器进程是否能够使用至少与配置为池大小一样多的线程。 在带有prefork MPM或Apache 1.3.x的Apache 2.x上,请勿使用值大于 1的connection_pool_size ! |
connection_pool_minsize |
(pool+1)/2 |
将要维护的连接池的最小大小。
其默认值为(connection_pool_size + 1)/ 2。 在带有prefork MPM或Apache 1.3.x的Apache 2.x上,请勿使用值大于 1的connection_pool_minsize !此功能已在jk 1.2.16中添加。 |
connection_pool_timeout |
0 |
高速缓存超时属性应与connection_pool_minsize一起使用,以指定JK在关闭非活动套接字之前将其保留在高速缓存中的秒数。此属性应用于减少Tomcat Web服务器上的线程数。默认值零禁用关闭(无限超时)。
如果每个孩子都必须将请求转发给Tomcat,则可以打开ajp13连接,从而在Tomcat端创建一个新的ajp13线程。 问题在于,创建ajp13连接后,子进程直到被杀死都不会丢弃它。并且由于Web服务器将使其子进程/线程保持运行状态以处理高负载,即使子进程/线程仅处理静态内容,您也可以在Tomcat端完成许多未使用的ajp13线程。 您应该将此时间间隔与Tomcat的server.xml中的AJP连接器的keepAliveTimeout属性(如果已明确设置)或connectionTimeout属性保持同步。但是请注意,mod_jk的值以秒为单位,server.xml中的值必须使用毫秒。 |
connection_acquire_timeout |
retries*retry_interval |
超时,工作人员将在放弃之前等待缓存中的可用套接字。
其默认值为retries * retry_interval。 此功能已在jk 1.2.27中添加。 |
lbfactor |
1 |
仅用于负载均衡器的成员。
整数lbfactor(负载平衡因子)是 我们期望该工作人员工作的数量或 工作人员的工作配额。将负载均衡因子与其他组成负载均衡器的工作人员进行比较。例如,如果一个工作人员的lb_factor比其他工作人员高5倍,那么它将收到的请求多五倍。 |
负载平衡指令
负载平衡器是一个虚拟工作程序,实际上并未与Tomcat工作程序通信。相反,它负责管理多个“实际”工人。如果worker类型为lb,则应该是负载平衡器。请参阅工作程序的类型指令。
Loadbalancer指令定义创建连接到后端Tomcat服务器的远程群集的工作程序所需的参数。每个群集节点必须定义一个工作器。
负载均衡器管理包括:
- 实例化Web服务器中的工作程序。
- 使用工作人员的负载平衡因子,执行加权循环负载平衡,其中高lbfactor意味着更强大的机器(它将处理更多请求)
- 保持属于同一会话的请求在同一Tomcat工作线程上执行。
- 识别失败的Tomcat工作程序,暂停对他们的请求,然后对lb工作程序管理的其他工作程序进行故障转移。
总体结果是,由同一个lb工人管理的工人是负载平衡的(基于lbfactor和当前用户会话),并且还会进行故障转移,因此单个Tomcat进程死亡将不会“杀死”整个站点。
如果要使用会话粘性,则必须在Tomcat的server.xml的Engine元素中设置不同的jvmRoute属性。此外,由平衡器管理的工作程序的名称必须等于与其连接的Tomcat实例的jvmRoute。如果您为工作人员使用route属性,则可以取消对工作人员名称的限制。
下表指定了lb工作者可以接受的属性:
指示 | 默认 | 描述 |
---|---|---|
balance_workers |
- |
逗号分隔的负载均衡器需要管理的工作人员列表。
相同的负载平衡器可以多次使用此指令。 该指令代替了以前的balanced_workers指令,并且只能与1.2.7及更高版本的mod_jk一起使用。 只要仅通过负载平衡器工作程序使用这些工作程序,就无需将它们也放入worker.list属性。 |
sticky_session |
true |
指定是否应将具有SESSION ID的请求路由回相同的Tomcat工作器。如果sticky_session设置为true,则会话为粘性,否则sticky_session设置为false。当Tomcat使用会话管理器时,可将sticky_session设置为false,该管理器可以在多个Tomcat实例之间持久化会话数据。
该sticky_session设置可以使用Apache HTTP服务器的环境变量被覆盖JK_STICKY_IGNORE和工人地图扩展 sticky_ignore。这已在1.2.33版本中添加。 |
sticky_session_force |
false |
指定是否应拒绝处于错误状态的具有SESSION ID的工作程序的请求。如果sticky_session_force设置为true, 并且与该SESSION ID匹配的工作服务器处于错误状态,则客户端将收到500(服务器错误)。如果设置为false,则将在丢失客户端会话的情况下发出对其他工作程序的故障转移。仅当您设置sticky_session = true时,才使用此伪指令。
此功能已在jk 1.2.9中添加。 |
method |
Request |
指定负载均衡器用于选择最佳工作程序的方法。请注意,会话粘性和完美的负载平衡是相互冲突的目标,尤其是在会话数较少或会话使用情况千差万别的情况下。对于大量会话,这通常不是问题。
一些方法指出,它们聚合在滑动时间窗口中。它们相加访问,然后在每次运行全局维护方法时,将负载计数器除以2。通常每分钟发生一次,具体取决于worker.maintain的设置。可以使用状态工作器检查负载计数器的值。 如果将method设置为R [equest],则平衡器将使用请求数来找到最佳工作程序。访问量将根据lbfactor在滑动时间窗口中进行分配。这是默认值,对于大多数应用程序应该可以正常工作。 如果将方法设置为S [ession],则平衡器将使用会话数来找到最佳工作程序。访问量将根据lbfactor在滑动时间窗口中进行分配。如果会话是您的限制资源,则应使用此方法,例如,当您的内存有限且会话需要大量内存时。因为平衡器不保留任何状态,所以它实际上不知道会话数。相反,它将没有会话cookie或URL编码的每个请求计为新会话。当会话无效时,此方法既不会知道,也不会根据会话超时或工作程序故障转移来纠正其加载数。如果您知道请求网址,那么该网址将在没有会话ID的情况下被调用,但不应视为新会话,因此应将其添加到无状态映射规则扩展或为它们设置Apache HTTP Server环境变量JK_STATELESS。 如果将method设置为N [ext],则平衡器将再次使用会话数来查找最佳工作程序。有关Session方法的所有说明也适用。与Session方法的区别在于在滑动时间窗口中如何处理会话计数。在接下来方法不除以2,而不是将其减去当前最小数目。这应该有效地导致循环会话平衡,因此命名为Next。在高负载下,这两种会话平衡方法将导致相似的分配,但是如果您需要分配少量的会话,则下一步会更好。 如果设置为T [raffic],则平衡器将使用JK和Tomcat之间的网络流量来找到最佳工作程序。访问量将根据lbfactor在滑动时间窗口中进行分配。如果到后端的网络是您的限制资源,则应使用此方法。 如果设置为B [usyness],则平衡器将根据工作人员当前服务的请求数量,选择当前负载最低的工作人员。该数字除以worker lbfactor,然后选择最低值(最忙)的worker。如果您的请求需要很长时间才能处理,例如下载应用程序,则此方法特别有趣。不建议将该方法用于一般用途,因为在某些硬件体系结构上的高负载下,繁忙计数器可能会出错。 此功能已在1.2.9版中添加。会话方法已在版本增加了1.2.20,在下一版本的方法1.2.33。 |
lock |
Optimistic |
指定负载均衡器将使用哪种锁定方法来同步共享内存运行时数据。如果将锁设置为O [乐观],则均衡器将不使用共享内存锁来找到最佳工作线程。如果设置为P [essimistic],平衡器将使用共享内存锁定。在悲观锁定的情况下,平衡器将更准确地工作,但会减慢平均响应时间。
此功能已在jk 1.2.13中添加。 |
retries |
2 |
该指令也适用于普通工人。对于那些人来说,它具有不同的含义。 发出请求时,负载平衡器工作人员会将请求分配给成员工作人员。如果该成员工作程序无法处理请求或无法处理请求,则该请求将被传递给另一个成员工作程序,直到请求被处理,每个成员工作程序都尝试处理该请求或lb_retries成员工作程序都尝试处理请求。
如果请求未得到处理,则负载平衡器工作人员将在最大重试时间(包括原始尝试)中重复上述过程。在每次重试之前,负载均衡器工作者将暂停retry_interval指令定义的时间。 请注意,这意味着,如果所有工作程序都失败,则在将504响应返回给客户端之前,将总共有worker.retries * min(lb.lb_retries,member worker count)* lb.retries请求。因此,对于具有四个成员和默认配置的lb工人,如果所有工人都失败了,则在将504响应返回给客户端之前,将总共有8个请求。 在1.2.16版之前,默认值为3。 |
lb_retries |
2 |
发出请求时,负载平衡器工作人员会将请求分配给成员工作人员。如果该成员工作程序无法处理请求或无法处理请求,则该请求将被传递给另一个成员工作程序,直到请求被处理,每个成员工作程序都尝试处理该请求或lb_retries成员工作程序都尝试处理请求。
如果请求未得到处理,则负载平衡器工作人员将在最大重试时间(包括原始尝试)中重复上述过程。在每次重试之前,负载均衡器工作者将暂停retry_interval指令定义的时间。 请注意,这意味着,如果所有工作程序都失败,则在将504响应返回给客户端之前,将总共有worker.retries * min(lb.lb_retries,member worker count)* lb.retries请求。因此,对于具有四个成员和默认配置的lb工人,如果所有工人都失败了,则在将504响应返回给客户端之前,将总共有8个请求。 此功能已在jk 1.2.44中添加。在添加此功能之前,负载均衡器工作程序的行为就像lb_retries等于成员工作程序的数量一样。 |
身份工人指令
状态工作者不与Tomcat通信。相反,它负责负载平衡器管理。
指示 | 默认 | 描述 |
---|---|---|
css |
- |
指定要使用的级联样式表的URL。 |
read_only |
false |
状态为read_only = true的状态工作程序将不允许任何操作,这些操作会更改运行时状态或其他工作程序的配置。这些是编辑/更新/重置/恢复。
此功能已在jk 1.2.20中添加。 |
user |
- |
它是与Web服务器认证的用户名进行比较的用户列表。如果该名称未包含在此列表中,则拒绝访问。默认情况下,列表为空,然后允许任何人访问。
该指令可以多次使用。 此功能已在jk 1.2.20中添加。 |
user_case_insensitive |
false |
缺省情况下,用户名区分大小写。您可以设置user_case_insensitive = true来使比较不区分大小写。这在Windows平台上可能特别有用。
此功能已在jk 1.2.21中添加。 |
good |
a.o,a.n,a.b,a.r |
对于每个负载平衡器工作人员,状态工作人员都会显示其成员状态的摘要。有三种状态,“好”,“坏”和“降级”。
根据成员的激活状态(活动,禁用,已停止)及其运行时状态(正常,不适用,忙碌,恢复,探测,强制恢复,错误)确定这些状态。默认情况下,如果成员的激活为“活动”且其运行时状态不是“错误”,则假定成员为“良好”。 您可以通过为属性“ good”分配值列表来更改此映射。每个值都为成员提供一个可能的匹配,并且一个匹配就足够了。每个值可以是一个字符,也可以是两个字符和点“。”的组合。单个字符是单词“活动”,“已禁用”,“已停止”,“确定”,“ na”,“忙”,“正在恢复”,“错误”中的第一个字符。附加状态“探测”和“强制恢复”始终被评定为等同于“恢复”。如果一个值仅包含一个字符,则所有具有此激活或运行时状态的成员都将被假定为良好。激活和运行时状态的组合,并以点“”连接。仅适用于会员, 负载平衡器的成员将首先与状态“差”匹配,如果不匹配,则将尝试状态“好”,如果仍然不匹配,则它们的状态将被“降级”。 该指令可以多次使用。 此功能已在jk 1.2.20中添加。 |
bad |
s,e |
参见:“好”。
默认情况下,如果成员的激活被“停止”或其运行时状态为“错误”,则假定成员为“不良”。 该指令可以多次使用。 此功能已在jk 1.2.20中添加。 |
prefix |
worker |
前缀,状态工作人员在生成属性输出时将使用该前缀(mime = prop)。每个属性键都将以该值作为前缀。
此功能已在jk 1.2.20中添加。 |
ns |
jk: |
此伪指令可用于自定义状态工作器的XML输出。如果设置为-不使用名称空间。
此功能已在jk 1.2.20中添加。 |
xmlns |
- |
此伪指令可用于自定义状态工作器的XML输出。如果设置为-不使用xmlns。
默认值设置为xmlns:jk =“ http://tomcat.apache.org” 此功能已在jk 1.2.20中添加。 |
doctype |
- |
此伪指令可用于自定义状态工作器的XML输出。此值将插入到xml标头之后的输出xml中。
此功能已在jk 1.2.20中添加。 |
高级工人指令
下表列出了更多高级配置选项。其中大多数仅适用于某些类型的工人。对于直接通过worker.list使用的ajp13 / ajp14工作者,我们使用缩写AJP;对于负载均衡器工作者,则使用LB;对于作为子工作者或成员在负载均衡器工作者中间接使用的工作者,使用SUB。
指示 | 工人类型 | 默认 | 描述 |
---|---|---|---|
connect_timeout |
AJP,SUB |
0 |
建立连接后,连接超时属性告诉Web服务器在ajp13连接上发送PING请求。该参数是等待PONG回复的延迟(以毫秒为单位)。默认值零禁用超时(无限超时)。
jk 1.2.6中 已添加了此功能,以避免挂起的Tomcat出现问题,并且需要ajp13 ping / pong支持,该支持已在Tomcat 3.3.2 +,4.1.28 +和5.0.13+上实现。默认禁用。 |
prepost_timeout |
AJP,SUB |
0 |
Prepost超时属性告诉Web服务器在转发给ajp13连接之前向其发送PING请求。该参数是等待PONG回复的延迟(以毫秒为单位)。默认值零禁用超时(无限超时)。
jk 1.2.6中 已添加了此功能,以避免挂起的Tomcat出现问题,并且需要ajp13 ping / pong支持,该支持已在Tomcat 3.3.2 +,4.1.28 +和5.0.13+上实现。默认禁用。 |
reply_timeout |
AJP,SUB |
0 |
该参数是读取事件期间等待成功的毫秒数。因此,这不是请求的完整应答时间的超时,而只是从Tomcat接收到的两个数据包之间的最大时间。通常,最长的暂停是在发送请求和获取响应的第一个数据包之间。
如果超时过去而没有从Tomcat接收到任何数据,则Web服务器将不再等待其余的响应并将错误发送给客户端(浏览器)。通常这并不意味着该请求也会在Tomcat后端中止。如果工作线程是负载均衡器的成员,则负载均衡器可能会将工作线程置于错误状态,然后在另一个成员上重试该请求。另请参见max_reply_timeouts,重试和recovery_options。 默认情况下(值为零),Web服务器将永远等待,这可能对您来说是个问题。如果设置了reply_timeout,则如果您的servlet长时间运行,请仔细调整它。 该reply_timeout可以使用Apache HTTP服务器的环境变量被覆盖 JK_REPLY_TIMEOUT和工人地图扩展reply_timeout。 jk 1.2.6中 已添加了此功能,以避免挂起的Tomcat出现问题,并且可在所有支持ajp13的servlet引擎上使用。在版本1.2.27中添加了变量JK_REPLY_TIMEOUT和辅助映射。 |
retries |
AJP,SUB |
2 |
负载平衡器工作者也可以使用此指令。对于那些人来说,它具有不同的含义。 发生通信错误时,工作者将请求发送到Tomcat的最大次数。每次重试将通过另一个连接完成。第一次已经计算在内,因此retries = 2表示一次在错误后重试。重试之前,工作人员会等待可配置的睡眠时间。
另请参阅属性recovery_options以获取对重试的更细粒度控制,并为睡眠时间配置提供retry_interval。 在1.2.16版之前,默认值为3。 |
retry_interval |
AJP,SUB |
100 |
重试之前,工作人员睡眠的时间(以毫秒为单位)。
此功能已在jk 1.2.27中添加。 |
recovery_options |
AJP,SUB |
0 |
如果我们检测到Tomcat问题,恢复选项会影响我们应如何处理重试。重试的频率由属性重试控制。
此属性是位掩码。允许以下位: 此功能已在jk 1.2.6中添加。在版本1.2.16中添加了选项4 ,在版本1.2.24中添加了选项8和16 。 |
fail_on_status |
AJP,SUB |
0 |
将此值设置为HTTP状态代码,如果从Servlet容器返回该状态代码将导致工作程序失败。使用此伪指令可以处理Servlet容器可以在短时间内(例如在重新部署期间)临时返回非200响应的情况。
错误页面,原始响应的标题和状态代码将不会发送回客户端。而是该请求将导致503响应。如果工作人员是负载均衡器的成员,则该成员将进入错误状态。请求故障转移和工作程序恢复将通过常规负载平衡器过程进行处理。 此功能已在jk 1.2.20中添加。 从jk 1.2.22开始,可以定义由空格或逗号分隔的多个状态代码。例如: 从jk 1.2.25开始,如果返回的响应中带有fail_on_status中的状态码之一,则还可以告诉负载平衡器不要将成员置于错误状态。通过在这些状态代码的前面加上减号来启用此功能。例如: |
busy_limit |
AJP,SUB |
0 |
如果将其设置为正数,则该工作器将仅用于请求,如果该请求当前正在处理的并行请求数小于此数目。
请注意,这与“ 繁忙”负载平衡 方法无关。 此功能是实验性的,已在jk 1.2.41中添加。 |
max_packet_size |
AJP,SUB |
8192 |
此属性设置最大AJP数据包大小(以字节为单位)。它应该是1024的倍数。不是1024的倍数的配置值将与下一个1024的倍数对齐。最大值为65536。如果将其更改为默认值,则还必须更改您的packetSize属性Tomcat端的AJP连接器!从Tomcat 6.0.2开始,可以使用属性packetSize。
通常,没有必要更改最大数据包大小。发送证书或证书链时,已报告默认值问题。 此功能已在jk 1.2.19中添加。 |
prefer_ipv6 |
AJP,SUB |
false |
当使用IPV6支持进行编译时,此指令对具有IPV6和IPV4地址的主机名强制使用IPV6地址解析。如果没有为给定的主机名定义IPV6地址,则该指令无效。如果仅定义了IPV6地址或IP地址用作IPV4或IPV6表示法的“主机”,则该指令也将无效。
此功能已在jk 1.2.38中添加。 |
secret |
AJP,SUB,LB |
- |
您可以在Tomcat AJP Connector上设置secret关键字。然后,将仅接受来自具有相同秘密关键字的工作人员的请求。
在Tomcat AJP连接器配置中 使用属性secret =“秘密关键字”。(历史记录:该属性名称在2020年2月之前发布的Tomcat 9.0、8.x,7.0版本中为requiredSecret, 在Tomcat 6.0及更低版本中为request.secret。) 如果在负载均衡器上设置机密,则其所有成员都将继承此机密。 此功能已在jk 1.2.12中添加。 |
mount |
AJP,LB |
- |
工作者应处理的以uri为单位的空格分隔列表。仅当worker.list中包含worker时才使用。
同一工作人员可以多次使用此指令。 |
max_reply_timeouts |
LB |
0 |
如果您对负载均衡器工作人员的成员使用Reply_timeout,并且您希望允许一些请求花费的时间超过Reply_timeout,则可以将此属性设置为某个正值。
长时间运行的请求仍会在reply_timeout毫秒等待数据后超时,但是如果超过max_reply_timeouts个请求超时,则相应的成员工作器将仅处于错误状态。更准确地说,只要负载均衡器进行内部维护(默认每60秒进行一次),这些错误请求的计数器就会被除以2。 在jk 1.2.24中已添加此功能,以使reply_timeout对偶发的长期运行请求不敏感。 |
recover_time |
LB |
60 |
恢复时间是指负载均衡器进入错误状态后,它将不尝试使用工作器的时间(以秒为单位)。只有在这段时间过去之后,处于错误状态的工作程序才会被标记为正在恢复,以便尝试新请求。
每次处理请求时都不会检查此间隔。而是在全局维护期间对其进行检查。两次全局维护之间的时间间隔由worker.maintain控制。 除非您了解其中的含义,否则请勿将recover_time设置为很短的时间。错误工作者的每次恢复尝试都是由真实请求完成的! |
error_escalation_time |
LB |
recover_time / 2 |
将负载均衡器的成员设置为错误状态非常严重。例如,这意味着如果您需要粘性,将阻止对相应节点的会话的所有访问。
某些类型的错误检测无法提供精确的信息,无论节点是否完全损坏。在那些情况下,LB不会立即将节点置于错误状态。仅在发生此类错误后的error_escalation_time秒内没有成功的响应时,该节点才会进入错误状态。 此功能已在jk 1.2.28中添加。 |
session_cookie |
LB |
JSESSIONID |
Cookie的名称,其中包含会话粘性所需的路由标识符。路由标识符是“。”之后的所有内容。Cookie值中的字符。
此功能已在jk 1.2.27中添加。 |
session_path |
LB |
;jsessionid |
路径参数的名称,其中包含会话粘性所需的路由标识符。路由标识符是“。”之后的所有内容。path参数值中的字符。
此功能已在jk 1.2.27中添加。 |
set_session_cookie |
LB |
false |
激活会话粘性cookie的生成。通常,您不需要这个。
一些Web框架取代了Tomcat会话管理,并使用了另一种生成会话ID的方式。结果,Tomcat添加到会话ID末尾的路由ID丢失了,我们不再能够进行粘性负载平衡。解决方法是,可以使用以下步骤:
仅当请求中尚未包含相同名称的cookie或该cookie不包含负载均衡器可以满足的路由ID时,才会发送该cookie。尤其是在节点故障转移之后,我们将发送新的cookie,以将粘性切换到新节点。 此功能已在jk 1.2.38中添加。 |
session_cookie_path |
LB |
- |
仅当“ set_session_cookie”设置为true时,才使用此属性。有关说明,请参见“ set_session_cookie”。如果“ session_cookie_path”的值为空(默认值),则发送cookie将不包含PATH信息。
此功能已在jk 1.2.38中添加。 |
activation |
SUB |
Active |
使用此伪指令,可以将负载平衡器的平衡器配置为禁用或停止。禁用的工作人员仅获取属于该工作人员会话的请求。停止的工作程序不会收到任何请求。除非使用通过群集的会话复制,否则被停止工作的用户的用户将丢失会话。
使用d或D禁用,使用s或S停止。如果不存在此伪指令,则使用不推荐使用的伪指令“ disabled”或“ stopped”。 可以在运行时使用状态工作程序更改此标志。 此功能已在jk 1.2.19中添加。 |
route |
SUB |
worker name |
通常,负载均衡器中的均衡工作器名称等于相应的Tomcat实例的jvmRoute。如果要将与Tomcat实例相对应的工作程序包括到具有不同平衡配置(例如,禁用,已停止)的多个负载平衡器中,则可以使用此属性。
为每个磅和每个Tomcat实例定义一个单独的工作程序,并使用任意工作程序名称,并将工作程序的路由属性设置为等于目标Tomcat实例的jvmRoute。 如果将此属性留空,则将使用工作程序的名称。 可以在运行时使用状态工作程序更改此属性。 如果路由名称包含一个句点,则除非明确设置了domain,否则第一个句点之前的部分将用作域名。 此功能已在jk 1.2.16中添加。 |
distance |
SUB |
0 |
一个整数,用于表示磅工人的平衡工人之间的偏好。如果还有另一个可用的距离较小的工作人员,则负载平衡器将永远不会选择一些平衡的工作人员。
只有在给定距离以下的所有工人均发生错误,被禁用或停止的情况下,更大距离的工人才有资格进行平衡。 此功能已在jk 1.2.16中添加。 |
domain |
SUB |
- |
仅当worker是负载均衡器的成员时,才可以使用Domain指令。共享相同域名的工作程序被视为单个工作程序。如果使用sticky_session,则将域名用作会话路由。
该指令用于具有6个以上Tomcat的大型系统,以便能够将Tomcat分为两个组,从而降低它们之间的会话复制传输。 此功能已在jk 1.2.8中添加。 |
redirect |
SUB |
- |
设置为首选故障转移工作器的名称。如果与SESSION ID匹配的工作程序处于错误状态,则将使用重定向工作程序。即使禁用它也会被使用,从而提供热备用。
如果通过“ route”属性显式设置路由,则必须将“重定向”设置为首选故障转移工作程序的此路由,而不是其名称。 此功能已在jk 1.2.9中添加。 |
不推荐使用的工人指令
过去不建议使用以下指令。如果您需要使用旧版本的mod_jk,我们将提供它们的文档。我们敦促您更新而不使用它们。请迁移您现有的配置。
指示 | 接班人 | 默认 | 描述 |
---|---|---|---|
cachesize |
connection_pool_size |
see text |
从1.2.16开始不推荐使用此指令。 Cachesize定义与AJP后端建立的连接数,这些连接被保留为连接池。它将限制每个Web服务器子进程可以建立的那些连接的数量。
Cachesize属性仅用于多线程Web服务器,例如Apache HTTP Server 2.x(除prefork之外的所有MPM),IIS和iPlanet。cachesize属性应反映每个子进程的线程数。JK将在具有线程MPM的Apache HTTP Server上发现每个子进程的线程数,并将其默认值设置为与当前ThreadsPerChild Apache配置相匹配。对于IIS,默认值为10。对于非Apache或IIS的Web服务器,必须手动设置此值。 在具有prefork MPM或Apache 1.3.x的Apache 2.x上,请勿使用大于1的cachesize ! |
cache_timeout |
connection_pool_timeout |
0 |
从1.2.16开始不推荐使用此指令。 高速缓存超时属性应与cachesize一起使用,以指定JK在关闭其之前在缓存中保持打开的套接字的时间。此属性应用于减少Tomcat Web服务器上的线程数。
如果每个孩子都必须将请求转发到Tomcat,则可以打开ajp13连接,从而在Tomcat端创建一个新的ajp13线程。 问题在于,创建ajp13连接后,子进程直到被杀死都不会丢弃它。并且由于Web服务器将使其子进程/线程保持运行状态以处理高负载,即使子进程/线程仅处理静态内容,您也可以在Tomcat端完成许多未使用的ajp13线程。 |
recycle_timeout |
connection_pool_timeout |
0 |
从1.2.16开始不推荐使用此指令。 闲置一段时间后,告诉Web服务器断开ajp13连接的秒数。当为请求选择端点并且分配的套接字已打开时,如果在配置的时间内未使用该套接字,则它将被关闭。这是确保在Tomcat端没有过多旧线程的好方法,而您在下次转发请求时需要重新打开套接字,这会产生额外的开销。此属性与cache_timeout非常相似,但也可以在非缓存模式下使用。如果设置为零(默认值),则不会进行回收。 |
balanced_workers |
balance_workers |
- |
从1.2.7开始不推荐使用此指令。 逗号分隔的负载均衡器需要管理的工作人员列表。 |
disabled |
activation |
false |
从1.2.19开始不推荐使用此指令。 如果设置为true,则如果负载平衡器成员,则将禁用该工作器。可以在运行时使用状态工作程序更改此标志。
此功能已在jk 1.2.9中添加。 |
stopped |
activation |
false |
从1.2.19开始不推荐使用此指令。 如果设置为true,则如果负载均衡器的成员将终止该工作程序。该标记对于停止粘性会话工作程序的完整流量是必需的。仅当您具有复制会话的群集时,此功能才有用。可以在运行时使用状态工作程序更改此标志。
此功能已在jk 1.2.11中添加。 |
jvm_route |
route |
worker name |
从1.2.20开始不推荐使用此指令。 通常,负载均衡器中的均衡工作器名称等于相应的Tomcat实例的jvmRoute。如果要将与Tomcat实例相对应的工作程序包括到具有不同平衡配置(例如,禁用,已停止)的多个负载平衡器中,则可以使用此属性。
为每个磅和每个Tomcat实例定义一个单独的工作程序,并使用任意工作程序名称,并将工作程序的jvm_route属性设置为等于目标Tomcat实例的jvmRoute。 如果将此属性留空,则将使用工作程序的名称。 可以在运行时使用状态工作程序更改此属性。 此功能已在jk 1.2.16中添加。 |