ICode9

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

tomcat:connector的属性列表

2019-06-28 13:24:03  阅读:390  来源: 互联网

标签:设置 请求 tomcat 列表 connector 连接器 使用 默认值 属性


全部请查阅:https://tomcat.apache.org/tomcat-9.0-doc/config/http.html

下面时部分属性:

Connector的所有实现都 支持以下属性:

属性 描述
allowTrace

一个布尔值,可用于启用或禁用TRACE HTTP方法。如果未指定,则此属性设置为false。

asyncTimeout

异步请求的默认超时(以毫秒为单位)。如果未指定,则将此属性设置为Servlet规范默认值30000(30秒)。

defaultSSLHostConfigName

如果客户端连接未提供SNI或提供SNI但与任何已配置的SSLHostConfig不匹配,则将用于安全连接的默认SSLHostConfig的名称(如果此连接器配置为安全连接) 。如果未指定,将使用默认值 。_default_

enableLookups

设置为true,如果你想调用 request.getRemoteHost(),以便返回远程客户的实际主机名执行DNS查找。设置为false跳过DNS查找并以字符串形式返回IP地址(从而提高性能)。默认情况下,DNS查找被禁用。

maxHeaderCount

容器允许的请求中的最大标头数。将拒绝包含多于指定限制的标头的请求。值小于0表示没有限制。如果未指定,则使用默认值100。

maxParameterCount

容器将自动解析的参数和值对的最大数量(GET加POST)。超出此限制的参数和值对将被忽略。值小于0表示没有限制。如果未指定,则使用默认值10000。请注意, FailedRequestFilter 过滤器可用于拒绝达到限制的请求。

maxPostSize

POST的最大大小(以字节为单位)将由容器FORM URL参数解析处理。可以通过将此属性设置为小于零的值来禁用该限制。如果未指定,则此属性设置为2097152(2兆字节)。请注意, FailedRequestFilter 可以用于拒绝超出此限制的请求。

maxSavePostSize

在FORM或CLIENT-CERT身份验证期间,容器将保存/缓冲的POST的最大字节数(以字节为单位)。对于这两种类型的身份验证,POST将在用户通过身份验证之前保存/缓冲。对于CLIENT-CERT身份验证,POST会在SSL握手期间进行缓冲,并在处理请求时清空缓冲区。对于FORM身份验证,保存POST,同时将用户重定向到登录表单并保留,直到用户成功进行身份验证或与身份验证请求关联的会话到期为止。可以通过将此属性设置为-1来禁用该限制。将该属性设置为零将禁用在身份验证期间保存POST数据。如果没有指定,

parseBodyMethods

以逗号分隔的HTTP方法列表application/x-www-form-urlencoded将使用与POST相同的请求参数解析请求主体。这在希望支持PUT请求的POST样式语义的RESTful应用程序中很有用。请注意,除了POST导致Tomcat以违反servlet规范意图的方式运行之外的任何设置。这里根据HTTP规范明确禁止HTTP方法TRACE。默认是POST

port

连接器 将在其上创建服务器套接字并等待传入​​连接的TCP端口号。您的操作系统将只允许一个服务器应用程序侦听特定IP地址上的特定端口号。如果使用特殊值0(零),则Tomcat将随机选择一个空闲端口用于此连接器。这通常仅适用于嵌入式和测试应用程序。

protocol

设置协议以处理传入流量。默认值是 HTTP/1.1使用自动切换机制来选择基于Java NIO的连接器或基于APR / native的连接器。如果PATH(Windows)或LD_LIBRARY_PATH(在大多数unix系统上)环境变量包含Tomcat本机库,并且AprLifecycleListener用于初始化APR的useAprConnector属性设置为 true,则将使用APR /本机连接器。如果找不到本机库或未配置该属性,则将使用基于Java NIO的连接器。请注意,APR /本机连接器对HTTPS的设置与Java连接器不同。
要使用显式协议而不是依赖上述自动切换机制,可以使用以下值:
org.apache.coyote.http11.Http11NioProtocol- 非阻塞Java NIO连接器
org.apache.coyote.http11.Http11Nio2Protocol- 非阻塞Java NIO2连接器
org.apache.coyote.http11.Http11AprProtocol- APR /本机连接器。
也可以使用定制实现。
看看我们的连接器比较图表。对于http和https,两个Java连接器的配置完全相同。
有关APR连接器和APR特定SSL设置的更多信息,请访问APR文档

proxyName

如果在代理配置中使用此连接器,请配置此属性以指定要为其调用返回的服务器名称request.getServerName()。有关更多信息,请参阅代理支持

proxyPort

如果在代理配置中使用此连接器,请配置此属性以指定要为其调用返回的服务器端口request.getServerPort()。有关更多信息,请参阅代理支持

redirectPort

如果此连接器支持非SSL请求,并且收到匹配 <security-constraint>需要SSL传输的请求,则Catalina将自动将请求重定向到此处指定的端口号。

scheme

将此属性设置为您希望通过调用返回的协议的名称request.getScheme()。例如,您可以https为SSL连接器将此属性设置为“ ”。默认值为“ http”。

secure

将此属性设置为true如果您希望调用request.isSecure()返回true 了此连接器接收到的请求。您希望在SSL连接器或从SSL加速器接收数据的非SSL连接器(如加密卡,SSL设备甚至Web服务器)上使用此连接器。默认值为false

sendReasonPhrase

true如果您希望在响应中包含原因短语,请将此属性设置为。默认值为false

注意:此选项已弃用,将在Tomcat 9中删除。不会发送原因短语。

URIEncoding

这指定在%xx解码URL之后用于解码URI字节的字符编码。如果未指定,将使用UTF-8,除非将org.apache.catalina.STRICT_SERVLET_COMPLIANCE 系统属性设置为true 将使用ISO-8859-1。

useBodyEncodingForURI

这指定了contentType中指定的编码是否应该用于URI查询参数,而不是使用URIEncoding。此设置用于与Tomcat 4.1.x兼容,其中在contentType中指定的编码或使用Request.setCharacterEncoding方法显式设置的编码也用于URL中的参数。默认值为false

注意: 1)此设置仅应用于请求的查询字符串。与URIEncoding它不同,它不会影响请求URI的路径部分。2)如果请求字符编码未知(由浏览器提供,并且未SetCharacterEncodingFilter使用Request.setCharacterEncoding方法设置 或使用类似的过滤器),则默认编码始终为“ISO-8859-1”。该URIEncoding设置对此默认设置没有影响。

useIPVHosts

将此属性设置true为使Tomcat使用收到请求的IP地址来确定要将请求发送到的主机。默认值为false

xpoweredBy

将此属性设置true为使Tomcat使用规范中建议的标头来宣传对Servlet规范的支持。默认值为false

标准实施

除了上面列出的常见Connector属性之外,标准HTTP连接器(NIO,NIO2和APR / native)都支持以下属性。

属性 描述
acceptCount

当所有可能的请求处理线程都在使用时,传入连接请求的最大队列长度。队列已满时收到的任何请求都将被拒绝。默认值为100。

acceptorThreadCount

用于接受连接的线程数。在多CP​​U机器上增加此值,尽管您真的不需要超过2。此外,对于大量非保持连接的连接,您可能还希望增加此值。默认值是 1

acceptorThreadPriority

接受者线程的优先级。用于接受新连接的线程。默认值为5java.lang.Thread.NORM_PRIORITY常量的值 )。有关java.lang.Thread此优先级含义的更多详细信息,请参阅该类的JavaDoc 。

address

对于具有多个IP地址的服务器,此属性指定将用于侦听指定端口的地址。默认情况下,连接器将侦听所有本地地址。除非使用系统属性以其他方式配置JVM,否则基于Java的连接器(NIO,NIO2)将在使用0.0.0.0或配置时侦听IPv4和IPv6地址::。APR /本机连接器仅在配置时侦听IPv4地址,0.0.0.0并且如果配置了 ,将侦听IPv6地址(以及可选的IPv4地址,具体取决于ipv6onlyv6的设置)::

allowHostHeaderMismatch

默认情况下,Tomcat将允许在请求行中指定主机但在主机头中指定不同主机的请求。可以通过将此属性设置为启用此检查false。如果未指定,则默认为true

allowedTrailerHeaders

默认情况下,Tomcat在处理分块输入时将忽略所有尾部标头。对于要处理的标头,必须将其添加到此逗号分隔的标头名称列表中。

bindOnInit

控制连接器使用的套接字何时绑定。默认情况下,它在连接器启动时绑定,在销毁连接器时解除绑定。如果设置为false,则套接字将在连接器启动时绑定,并在停止时解除绑定。

clientCertProvider

如果客户端证书信息以不同于其实例的形式呈现,则在使用java.security.cert.X509Certificate它之前需要对其进行转换,并且此属性控制使用哪个JSSE提供程序来执行转换。例如,它与AJP连接器,HTTP APR连接器和 org.apache.catalina.valves.SSLValve一起使用。如果未指定,将使用默认提供程序。

compressibleMimeType

该值是以逗号分隔的MIME类型列表,可以使用HTTP压缩。默认值为 text/html,text/xml,text/plain,text/css,text/javascript,application/javascript 

compression

所述连接器可在试图节省服务器的带宽使用HTTP / 1.1 GZIP压缩。参数的可接受值是“off”(禁用压缩),“on”(允许压缩,导致文本数据被压缩),“force”(在所有情况下强制压缩)或数字整数值(这是等效于“on”,但指定压缩输出之前的最小数据量)。如果内容长度未知且压缩设置为“on”或更具攻击性,则输出也将被压缩。如果未指定,则将此属性设置为“off”。

注意:在使用压缩(节省带宽)和使用sendfile功能(节省CPU周期)之间需要权衡。如果连接器支持sendfile功能,例如NIO连接器,则使用sendfile将优先于压缩。症状将是静态文件大于48 Kb将被解压缩。您可以通过设置useSendfile连接器的属性来关闭sendfile,如下所述,或者更改默认 或Web应用程序中DefaultServlet配置中的sendfile使用率阈值 。 conf/web.xmlweb.xml

compressionMinSize

如果压缩设置为“on”,则此属性可用于指定压缩输出之前的最小数据量。如果未指定,则此属性默认为“2048”。

connectionLinger

连接器使用的套接字在关闭时将停留的秒数 。默认值是-1禁用套接字延迟。

connectionTimeout

接受连接后,此连接器将等待呈现请求URI行的毫秒数。使用值-1表示没有(即无限)超时。默认值为60000(即60秒),但请注意Tomcat附带的标准server.xml将其设置为20000(即20秒)。除非将disableUploadTimeout设置为false,否则在读取请求正文(如果有)时也将使用此超时。

connectionUploadTimeout

指定在数据上载过程中使用的超时(以毫秒为单位)。这仅在disableUploadTimeout设置为时生效 false

disableUploadTimeout

此标志允许servlet容器在数据上载期间使用不同的,通常更长的连接超时。如果未指定,则将此属性设置为true禁用此较长超时。

executor

Executor 元素中的名称的引用。如果设置了此属性,并且存在指定的执行程序,则连接器将使用执行程序,并且将忽略所有其他线程属性。请注意,如果未为连接器指定共享执行程序,则连接器将使用专用的内部执行程序来提供线程池。

executorTerminationTimeoutMillis

在继续停止连接器的过程之前,专用内部执行程序将等待请求处理线程终止的时间。如果未设置,则默认为 5000(5秒)。

keepAliveTimeout

连接器在关闭连接之前等待另一个HTTP请求的毫秒数。默认值是使用为connectionTimeout属性设置的值 。使用值-1表示没有(即无限)超时。

maxConnections

服务器在任何给定时间接受和处理的最大连接数。达到此数量后,服务器将接受但不处理另一个连接。此附加连接将被阻止,直到正在处理的连接数低于maxConnections,此时服务器将再次开始接受和处理新连接。请注意,一旦达到限制,操作系统仍可以根据acceptCount设置接受连接。默认值因连接器类型而异。对于NIO和NIO2,默认值为10000。对于APR / native,默认为8192

请注意,对于Windows上的APR / native,配置的值将减小到1024的最大倍数,小于或等于maxConnections。这是出于性能原因而完成的。
如果设置为值-1,则禁用maxConnections功能并且不计算连接。

maxCookieCount

请求允许的最大Cookie数。值小于零表示没有限制。如果未指定,将使用默认值200。

maxExtensionSize

限制分块HTTP请求中块扩展的总长度。如果值为-1,则不会施加任何限制。如果未指定,8192将使用默认值。

maxHttpHeaderSize

请求和响应HTTP标头的最大大小,以字节为单位指定。如果未指定,则此属性设置为8192(8 KB)。

maxKeepAliveRequests

在服务器关闭连接之前可以流水线化的最大HTTP请求数。将此属性设置为1将禁用HTTP / 1.0 keep-alive,以及HTTP / 1.1 keep-alive和pipelining。将此值设置为-1将允许无限量的流水线或保持活动的HTTP请求。如果未指定,则此属性设置为100。

maxSwallowSize

Tomcat针对中止上载将吞下的最大请求正文字节数(不包括传输编码开销)。中止上传是指Tomcat知道请求体将被忽略但客户端仍然发送它。如果Tomcat没有吞下身体,则客户端不太可能看到响应。如果未指定,将使用默认值2097152(2兆字节)。值小于零表示不应强制执行限制。

maxThreads

Connector要创建的最大请求处理线程数,因此确定可以处理的最大并发请求数。如果未指定,则此属性设置为200.如果执行程序与此连接器关联,则忽略此属性,因为连接器将使用执行程序而不是内部线程池执行任务。请注意,如果配置了执行程序,则会正确记录为此属性设置的任何值,但会报告(例如,通过JMX) -1以明确表示未使用该值。

maxTrailerSize

限制分块HTTP请求的最后一个块中的尾部标头的总长度。如果值为-1,则不会施加任何限制。如果未指定,8192将使用默认值。

minSpareThreads

最小线程数始终保持运行。这包括活动和空闲线程。如果未指定,10 则使用默认值。如果执行程序与此连接器关联,则忽略此属性,因为连接器将使用执行程序而不是内部线程池执行任务。请注意,如果配置了执行程序,则会正确记录为此属性设置的任何值,但会报告(例如,通过JMX)-1以明确表示未使用该值。

noCompressionUserAgents

该值是正则表达式(使用java.util.regex)匹配user-agent不应使用压缩的HTTP客户端的标头,因为这些客户端虽然确实宣传了对该功能的支持,但实现方式有所不足。默认值为空String(禁用正则表达式匹配)。

processorCache

协议处理程序缓存处理器对象以加快性能。此设置指示这些对象中有多少被缓存。 -1意味着无限制,默认是200。如果不使用Servlet 3.0异步处理,则默认使用与maxThreads设置相同的默认值。如果使用Servlet 3.0异步处理,一个很好的默认设置是使用较大的maxThreads和最大预期并发请求数(同步和异步)。

rejectIllegalHeaderName

如果收到包含非法标头名称的HTTP请求(即标头名称不是令牌),则此设置将确定是否将使用400响应(true)拒绝请求,或者是否忽略非法标头(false)。默认值是 false导致请求被处理但非法标头将被忽略。

relaxedPathChars

HTTP / 1.1规范要求某些字符%NN在URI路径使用时编码。遗憾的是,许多用户代理(包括所有主要浏览器)都不符合此规范,并以未编码的形式使用这些字符。为了防止Tomcat拒绝此类请求,可以使用此属性指定要允许的其他字符。如果未指定,则不允许使用其他字符。该值可以是以下字符的任意组合: " < > [ \ ] ^ ` { | }。该值中存在的任何其他字符都将被忽略。

relaxedQueryChars

HTTP / 1.1规范要求某些字符%NN在URI查询字符串中使用时编码。遗憾的是,许多用户代理(包括所有主要浏览器)都不符合此规范,并以未编码的形式使用这些字符。为了防止Tomcat拒绝此类请求,可以使用此属性指定要允许的其他字符。如果未指定,则不允许使用其他字符。该值可以是以下字符的任意组合: " < > [ \ ] ^ ` { | }。该值中存在的任何其他字符都将被忽略。

restrictedUserAgents

该值是一个正则表达式(使用java.util.regex),匹配user-agent不应使用HTTP / 1.1或HTTP / 1.0保持活动状态的HTTP客户端的头,即使客户端宣传支持这些功能。默认值为空String(禁用正则表达式匹配)。

server

覆盖http响应的Server标头。如果设置,则此属性的值将覆盖Web应用程序设置的任何服务器标头。如果未设置,则使用应用程序指定的任何值。如果应用程序未指定值,则不设置服务器标头。

serverRemoveAppProvidedValues

如果true,将删除Web应用程序设置的任何服务器标头。请注意,如果设置了服务器,则会有效忽略此属性。如果未设置,false将使用默认值 。

SSLEnabled

使用此属性可在连接器上启用SSL通信。要在连接器上启用SSL握手/加密/解密,请将此值设置为true。默认值为false。转换此值时,true您还需要设置 schemesecure属性以将正确值request.getScheme()request.isSecure()值传递给servlet有关详细信息,请参阅SSL支持

tcpNoDelay

如果设置为true,则将在服务器套接字上设置TCP_NO_DELAY选项,这样可以在大多数情况下提高性能。true默认设置为。

threadPriority

JVM中请求处理线程的优先级。默认值为5java.lang.Thread.NORM_PRIORITY常量的值 )。有关java.lang.Thread此优先级含义的更多详细信息,请参阅该类的JavaDoc 。如果执行程序与此连接器关联,则忽略此属性,因为连接器将使用执行程序而不是内部线程池执行任务。请注意,如果配置了执行程序,则会正确记录为此属性设置的任何值,但会报告(例如,通过JMX) -1以明确表示未使用该值。

 

需要关注的是:

asyncTimeout:如果使用servlet3.0的异步,根据需要,可以设置,也可以采取默认值,甚至可以在应用代码里去改。

maxPostSize:这个如果非必须,不要调大。

port:端口号,80必备

protocol:协议处理

1.同步阻塞 BIO 适合少数短连接

2.同步非阻塞 NIO 适合短链接,在数量极少时不如BIO,但数量少也无所谓了。

3.异步非阻塞 NIO2 或者AIO NIO是线程获取IO权限执行,AIO是让操作系统进行IO操作。

4.APR 要测APR给tomcat带来的好处最好的方法是在慢速网络上(模拟Internet),将Tomcat线程数开到300以上的水平,然后模拟一大堆并发请求。如果不配APR,基本上300个线程狠快就会用满,以后的请求就只好等待。但是配上APR之后,并发的线程数量明显下降,从原来的300可能会马上下降到只有几十,新的请求会毫无阻塞的进来。APR对于Tomcat最大的作用就是socket调度。你在局域网环境测,就算是400个并发,也是一瞬间就处理/传输完毕,但是在真实的Internet环境下,页面处理时间只占0.1%都不到,绝大部分时间都用来页面传输。如果不用APR,一个线程同一时间只能处理一个用户,势必会造成阻塞。所以生产环境下用apr是非常必要的。

maxConnections:这个东西某个协议是默认10000,代表着如果同时有10001个请求,那么只接收10000个。

acceptCount:这个默认是100,

        如果配置maxConnections=10000,acceptCount=100,在此配置基础上,如果请求有11000个,那么只接收10000 个请求,把100个请求放到队列里等待其他请求处理完成,另外900个请求拒绝。

acceptorThreadCount:接收请求的线程,单CPU就是1,多CPU且请求量非常大,改成2即可。

connectionTimeout连接超时断开

maxThreads:处理请求线程数,默认200.

        如果配置是maxConnections=10000,acceptCount=100,maxThreads=200.在此配置基础上,如果请求有11000个,那么只接收10000个请求,把100个请求放到队列里等待其他请求处理完成,另外900个请求拒绝,同时最多开启200条处理线程来处理这10000+100个请求。在高并发情况下,该值需要调大。

minSpareThreads:最小存活线程默认10。在多线程处理过后,部分线程会销毁,只保留10个。但是由于创建线程的开销很贵,所以高并发情况下,该值需要调大。它并非服务启动时创建的线程,it is lazy

compression:gzip压缩,但这是拿cpu压缩时间来换传输空间。注意取舍。而且如果没有关闭useSendfile="false" ,那么gzip压缩也是不生效的。

标签:设置,请求,tomcat,列表,connector,连接器,使用,默认值,属性
来源: https://blog.csdn.net/dmw412724/article/details/88396060

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

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

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

ICode9版权所有