全部请查阅: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的名称(如果此连接器配置为安全连接) 。如果未指定,将使用默认值 。 |
enableLookups | 设置为 |
maxHeaderCount | 容器允许的请求中的最大标头数。将拒绝包含多于指定限制的标头的请求。值小于0表示没有限制。如果未指定,则使用默认值100。 |
maxParameterCount | 容器将自动解析的参数和值对的最大数量(GET加POST)。超出此限制的参数和值对将被忽略。值小于0表示没有限制。如果未指定,则使用默认值10000。请注意, |
maxPostSize | POST的最大大小(以字节为单位)将由容器FORM URL参数解析处理。可以通过将此属性设置为小于零的值来禁用该限制。如果未指定,则此属性设置为2097152(2兆字节)。请注意, |
maxSavePostSize | 在FORM或CLIENT-CERT身份验证期间,容器将保存/缓冲的POST的最大字节数(以字节为单位)。对于这两种类型的身份验证,POST将在用户通过身份验证之前保存/缓冲。对于CLIENT-CERT身份验证,POST会在SSL握手期间进行缓冲,并在处理请求时清空缓冲区。对于FORM身份验证,保存POST,同时将用户重定向到登录表单并保留,直到用户成功进行身份验证或与身份验证请求关联的会话到期为止。可以通过将此属性设置为-1来禁用该限制。将该属性设置为零将禁用在身份验证期间保存POST数据。如果没有指定, |
parseBodyMethods | 以逗号分隔的HTTP方法列表 |
port | 此连接器 将在其上创建服务器套接字并等待传入连接的TCP端口号。您的操作系统将只允许一个服务器应用程序侦听特定IP地址上的特定端口号。如果使用特殊值0(零),则Tomcat将随机选择一个空闲端口用于此连接器。这通常仅适用于嵌入式和测试应用程序。 |
protocol | 设置协议以处理传入流量。默认值是 |
proxyName | 如果在代理配置中使用此连接器,请配置此属性以指定要为其调用返回的服务器名称 |
proxyPort | 如果在代理配置中使用此连接器,请配置此属性以指定要为其调用返回的服务器端口 |
redirectPort | 如果此连接器支持非SSL请求,并且收到匹配 |
scheme | 将此属性设置为您希望通过调用返回的协议的名称 |
secure | 将此属性设置为 |
sendReasonPhrase |
注意:此选项已弃用,将在Tomcat 9中删除。不会发送原因短语。 |
URIEncoding | 这指定在%xx解码URL之后用于解码URI字节的字符编码。如果未指定,将使用UTF-8,除非将 |
useBodyEncodingForURI | 这指定了contentType中指定的编码是否应该用于URI查询参数,而不是使用URIEncoding。此设置用于与Tomcat 4.1.x兼容,其中在contentType中指定的编码或使用Request.setCharacterEncoding方法显式设置的编码也用于URL中的参数。默认值为 注意: 1)此设置仅应用于请求的查询字符串。与 |
useIPVHosts | 将此属性设置 |
xpoweredBy | 将此属性设置 |
标准实施
除了上面列出的常见Connector属性之外,标准HTTP连接器(NIO,NIO2和APR / native)都支持以下属性。
属性 | 描述 |
---|---|
acceptCount | 当所有可能的请求处理线程都在使用时,传入连接请求的最大队列长度。队列已满时收到的任何请求都将被拒绝。默认值为100。 |
acceptorThreadCount | 用于接受连接的线程数。在多CPU机器上增加此值,尽管您真的不需要超过 |
acceptorThreadPriority | 接受者线程的优先级。用于接受新连接的线程。默认值为 |
address | 对于具有多个IP地址的服务器,此属性指定将用于侦听指定端口的地址。默认情况下,连接器将侦听所有本地地址。除非使用系统属性以其他方式配置JVM,否则基于Java的连接器(NIO,NIO2)将在使用 |
allowHostHeaderMismatch | 默认情况下,Tomcat将允许在请求行中指定主机但在主机头中指定不同主机的请求。可以通过将此属性设置为启用此检查 |
allowedTrailerHeaders | 默认情况下,Tomcat在处理分块输入时将忽略所有尾部标头。对于要处理的标头,必须将其添加到此逗号分隔的标头名称列表中。 |
bindOnInit | 控制连接器使用的套接字何时绑定。默认情况下,它在连接器启动时绑定,在销毁连接器时解除绑定。如果设置为 |
clientCertProvider | 如果客户端证书信息以不同于其实例的形式呈现,则在使用 |
compressibleMimeType | 该值是以逗号分隔的MIME类型列表,可以使用HTTP压缩。默认值为 |
compression | 所述连接器可在试图节省服务器的带宽使用HTTP / 1.1 GZIP压缩。参数的可接受值是“off”(禁用压缩),“on”(允许压缩,导致文本数据被压缩),“force”(在所有情况下强制压缩)或数字整数值(这是等效于“on”,但指定压缩输出之前的最小数据量)。如果内容长度未知且压缩设置为“on”或更具攻击性,则输出也将被压缩。如果未指定,则将此属性设置为“off”。 注意:在使用压缩(节省带宽)和使用sendfile功能(节省CPU周期)之间需要权衡。如果连接器支持sendfile功能,例如NIO连接器,则使用sendfile将优先于压缩。症状将是静态文件大于48 Kb将被解压缩。您可以通过设置 |
compressionMinSize | 如果压缩设置为“on”,则此属性可用于指定压缩输出之前的最小数据量。如果未指定,则此属性默认为“2048”。 |
connectionLinger | 此连接器使用的套接字在关闭时将停留的秒数 。默认值是 |
connectionTimeout | 接受连接后,此连接器将等待呈现请求URI行的毫秒数。使用值-1表示没有(即无限)超时。默认值为60000(即60秒),但请注意Tomcat附带的标准server.xml将其设置为20000(即20秒)。除非将disableUploadTimeout设置为 |
connectionUploadTimeout | 指定在数据上载过程中使用的超时(以毫秒为单位)。这仅在disableUploadTimeout设置为时生效 |
disableUploadTimeout | 此标志允许servlet容器在数据上载期间使用不同的,通常更长的连接超时。如果未指定,则将此属性设置为 |
executor | 对Executor 元素中的名称的引用。如果设置了此属性,并且存在指定的执行程序,则连接器将使用执行程序,并且将忽略所有其他线程属性。请注意,如果未为连接器指定共享执行程序,则连接器将使用专用的内部执行程序来提供线程池。 |
executorTerminationTimeoutMillis | 在继续停止连接器的过程之前,专用内部执行程序将等待请求处理线程终止的时间。如果未设置,则默认为 |
keepAliveTimeout | 此连接器在关闭连接之前等待另一个HTTP请求的毫秒数。默认值是使用为connectionTimeout属性设置的值 。使用值-1表示没有(即无限)超时。 |
maxConnections | 服务器在任何给定时间接受和处理的最大连接数。达到此数量后,服务器将接受但不处理另一个连接。此附加连接将被阻止,直到正在处理的连接数低于maxConnections,此时服务器将再次开始接受和处理新连接。请注意,一旦达到限制,操作系统仍可以根据 请注意,对于Windows上的APR / native,配置的值将减小到1024的最大倍数,小于或等于maxConnections。这是出于性能原因而完成的。 |
maxCookieCount | 请求允许的最大Cookie数。值小于零表示没有限制。如果未指定,将使用默认值200。 |
maxExtensionSize | 限制分块HTTP请求中块扩展的总长度。如果值为 |
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) |
maxTrailerSize | 限制分块HTTP请求的最后一个块中的尾部标头的总长度。如果值为 |
minSpareThreads | 最小线程数始终保持运行。这包括活动和空闲线程。如果未指定, |
noCompressionUserAgents | 该值是正则表达式(使用 |
processorCache | 协议处理程序缓存处理器对象以加快性能。此设置指示这些对象中有多少被缓存。 |
rejectIllegalHeaderName | 如果收到包含非法标头名称的HTTP请求(即标头名称不是令牌),则此设置将确定是否将使用400响应( |
relaxedPathChars | 的HTTP / 1.1规范要求某些字符%NN在URI路径使用时编码。遗憾的是,许多用户代理(包括所有主要浏览器)都不符合此规范,并以未编码的形式使用这些字符。为了防止Tomcat拒绝此类请求,可以使用此属性指定要允许的其他字符。如果未指定,则不允许使用其他字符。该值可以是以下字符的任意组合: |
relaxedQueryChars | 的HTTP / 1.1规范要求某些字符%NN在URI查询字符串中使用时编码。遗憾的是,许多用户代理(包括所有主要浏览器)都不符合此规范,并以未编码的形式使用这些字符。为了防止Tomcat拒绝此类请求,可以使用此属性指定要允许的其他字符。如果未指定,则不允许使用其他字符。该值可以是以下字符的任意组合: |
restrictedUserAgents | 该值是一个正则表达式(使用 |
server | 覆盖http响应的Server标头。如果设置,则此属性的值将覆盖Web应用程序设置的任何服务器标头。如果未设置,则使用应用程序指定的任何值。如果应用程序未指定值,则不设置服务器标头。 |
serverRemoveAppProvidedValues | 如果 |
SSLEnabled | 使用此属性可在连接器上启用SSL通信。要在连接器上启用SSL握手/加密/解密,请将此值设置为 |
tcpNoDelay | 如果设置为 |
threadPriority | JVM中请求处理线程的优先级。默认值为 |
需要关注的是:
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压缩也是不生效的。