ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

worker.properties配置

2020-05-23 09:06:12  阅读:232  来源: 互联网

标签:Tomcat 1.2 程序 配置 worker 使用 jk properties 请求


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)。该值不区分大小写。在本文档中,我们将坚持falsetrue

全球物业

这些指令具有全局范围。

指示默认描述
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将生成错误,然后重试。

请注意,socket_timeout以秒为单位, socket_connect_timeout以毫秒为单位,因此从绝对角度来看,默认socket_connect_timeout值等于"socket_timeout

此功能已在jk 1.2.27中添加。

socket_keepalive false 当Web服务器和Tomcat引擎之间有防火墙,而防火墙往往会丢失不活动的连接时,应使用此指令。该标志将告诉操作系统KEEP_ALIVE在不活动的连接上发送消息(间隔取决于全局OS设置,通常为120分钟),从而防止防火墙切断不活动的连接。要启用keepalive,请将此属性值设置为true

防火墙剪切无效连接的问题是,有时,Web服务器或Tomcat都没有有关剪切的信息,并且无法处理。

ping_mode - 该标志确定在哪些条件下探测已建立的连接以确保它们仍在工作。探测是使用空的AJP13数据包(CPing)完成的,并希望在某个超时时间内收到适当的答案(CPong)。

该标志的值可以是以下标志的任意组合(多个值的组合没有任何分隔符):

C(连接):如果设置,则连接到后端后将探测一次连接。可以通过设置超时connect_timeout。如果未设置,ping_timeout将使用的值。

P(prepost):如果设置,则在将每个请求发送到后端之前将先探测连接。可以通过设置超时prepost_timeout。如果未设置,ping_timeout将使用的值。

I(间隔):如果设置,则将在常规内部维护周期内探测连接,但前提是空闲时间长于 connection_ping_interval。可以通过设置超时ping_timeout

A如果设置,将使用所有上述探针。

此功能已在jk 1.2.27中添加。Connect和岗前探测技术已经获得通过connect_timeout ,并prepost_timeout自版本JK 1.2.6

ping_timeout 10000 等待CPing连接探针的CPong应答时使用的超时(以毫秒为单位)。探针的激活通过进行 ping_modeping_mode 可以通过connect_timeout和分别覆盖connect和prepost 的超时prepost_timeout

出于兼容性原因,无论何时connect_timeoutprepost_timeout设置为CPing / CPong(即使ping_mode为空)也将使用 。

此功能已在jk 1.2.27中添加。

connection_ping_interval 0 / (ping_timeout/1000)*10 使用间隔连接探测时,CPing数据包会探测空闲时间超过此间隔(以秒为单位)的连接是否仍然有效。

可以通过ping_mode或通过将connection_ping_interval值设置为大于零的值来激活间隔探测。如果激活间隔通过探测ping_mode,则默认值connection_ping_interval是 (ping_timeout/1000) * 10。请注意,ping_timeout 以毫秒为单位,connection_ping_interval以秒为单位,因此按绝对值计,默认connection_ping_interval值为10 times ping_timeout

此功能已在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 MPMApache 1.3.x的Apache 2.x上,请勿使用值大于 1的connection_pool_size !
connection_pool_minsize (pool+1)/2 将要维护的连接池的最小大小。

其默认值为(connection_pool_size + 1)/ 2。

带有prefork MPMApache 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问题,恢复选项会影响我们应如何处理重试。重试的频率由属性重试控制。

此属性是位掩码。允许以下位:
1:如果在收到请求后Tomcat失败,
则不恢复2:如果将标头发送到客户端后,如果Tomcat失败,则不恢复
4:如果回写时检测到错误,则关闭与Tomcat的连接客户端(浏览器)的答案
8:始终恢复对HTTP方法HEAD的请求(即使设置了位1或2)
16:始终恢复对HTTP方法GET的请求(即使设置了位1或2)

此功能已在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开始,可以定义由空格或逗号分隔的多个状态代码。例如:worker.xxx.fail_on_status=500,503

jk 1.2.25开始,如果返回的响应中带有fail_on_status中的状态码之一,则还可以告诉负载平衡器不要将成员置于错误状态。通过在这些状态代码的前面加上减号来启用此功能。例如:worker.xxx.fail_on_status=-404,-500,503

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丢失了,我们不再能够进行粘性负载平衡。解决方法是,可以使用以下步骤:

  • 使用“ session_cookie”属性选择一个非标准的cookie名称。
  • 通过将属性“ set_session_cookie”设置为true来激活cookie发送。
  • 将属性“ session_cookie_path”设置为正确的应用程序URI,例如“ / myapp /”。

 

仅当请求中尚未包含相同名称的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 使用此伪指令,可以将负载平衡器的平衡器配置为禁用或停止。禁用的工作人员仅获取属于该工作人员会话的请求。停止的工作程序不会收到任何请求。除非使用通过群集的会话复制,否则被停止工作的用户的用户将丢失会话。

使用dD禁用,使用sS停止。如果不存在此伪指令,则使用不推荐使用的伪指令“ disabled”或“ stopped”。

可以在运行时使用状态工作程序更改此标志。

此功能已在jk 1.2.19中添加。

route SUB worker name 通常,负载均衡器中的均衡工作器名称等于相应的Tomcat实例的jvmRoute。如果要将与Tomcat实例相对应的工作程序包括到具有不同平衡配置(例如,禁用,已停止)的多个负载平衡器中,则可以使用此属性。

为每个磅和每个Tomcat实例定义一个单独的工作程序,并使用任意工作程序名称,并将工作程序的路由属性设置为等于目标Tomcat实例的jvmRoute。

如果将此属性留空,则将使用工作程序的名称。

可以在运行时使用状态工作程序更改此属性。

如果路由名称包含一个句点,则除非明确设置了domain,否则第一个句点之前的部分将用作域名。

此功能已在jk 1.2.16中添加。
自动域规则已在jk 1.2.20中添加。
该属性已从jvm_route重命名为jk 1.2.20中的route

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 MPMApache 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中添加。

标签:Tomcat,1.2,程序,配置,worker,使用,jk,properties,请求
来源: https://www.cnblogs.com/wzihan/p/12940992.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有