tomcat优化配置属性含义解释,转自官网

HTTP连接器元件代表一个 连接器支持HTTP / 1.1协议组件。它使Catalina除了能够执行servlet和JSP页面外,还可以用作独立的Web服务器。此组件的特定实例侦听服务器上特定TCP端口号的连接。一个或多个这样的连接器可以配置为单个服务的一部分,每个连接器都转发给关联的引擎以执行请求处理并创建响应。

如果您希望配置的连接器,用于使用AJP协议(如对Web服务器的连接 mod_jk 1.2.x接口为Apache 1.3),请参阅 AJP连接器文档。

每个传入请求在该请求期间都需要一个线程。如果接收到的并发请求数多于当前可用的请求处理线程可处理的请求数,则会创建额外的线程直至配置的最大值(maxThreads属性的值)。如果还有更多的并发请求被接收到,它们被堆叠在由连接器创建的服务器套接字中,达到配置的最大值(acceptCount 属性的值)。任何进一步的同时请求都会收到“连接被拒绝”错误,直到资源可用于处理它们。

属性

共同属性

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

属性描述
allowTrace

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

asyncTimeout

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

enableLookups

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

maxHeaderCount

容器允许的最大请求头数。包含比指定限制更多标题的请求将被拒绝。小于0的值意味着没有限制。如果未指定,则使用默认值100。

maxParameterCount

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

maxPostSize

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

maxSavePostSize

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

parseBodyMethods

一个用逗号分隔的HTTP方法列表,为其请求参数的POST请求参数同样被解析。这对于希望支持PUT请求的POST风格语义的RESTful应用程序非常有用。请注意,任何设置POST都会导致Tomcat的行为违背servlet规范的意图。根据HTTP规范,此处特别禁止HTTP方法TRACE。默认是POST

port

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

protocol

设置处理传入流量的协议。默认值是 HTTP/1.1使用自动切换机制来选择非阻塞的基于Java NIO的连接器或基于APR /本机的连接器。如果PATH(Windows)或LD_LIBRARY_PATH(在大多数unix系统上)环境变量包含Tomcat本机库,则将使用APR /本机连接器。如果找不到本地库,将使用非阻塞的基于Java的连接器。请注意,APR /本机连接器对HTTPS的设置不同于Java连接器。
要使用显式协议而不是依赖上述自动切换机制,可以使用以下值:
org.apache.coyote.http11.Http11Protocol- 阻止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()例如,您将为httpsSSL连接器设置此属性为“ ”。默认值是“ http”。

secure

true如果您希望有呼叫request.isSecure()来返回true 此连接器收到的请求,请设置此属性您需要SSL连接器或从SSL加速器接收数据的非SSL连接器,如加密卡,SSL设备甚至Web服务器。默认值是false

URIEncoding

这指定用于解码URI字节的字符编码,在%xx解码URL之后。如果未指定,则将使用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

标准实施

标准的HTTP连接器(BIO,NIO,NIO2和APR / native)除了上面列出的通用连接器属性外,还支持以下属性。

属性描述
acceptCount

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

acceptorThreadCount

用于接受连接的线程数。在多CP​​U机器上增加这个值,虽然你永远不会真的需要更多2另外,有很多非保持活动的连接,你可能也想增加这个值。默认值是 1

acceptorThreadPriority

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

address

对于具有多个IP地址的服务器,此属性指定将用于侦听指定端口的地址。默认情况下,该端口将用于与服务器关联的所有IP地址。

allowedTrailerHeaders

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

bindOnInit

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

compressibleMimeType

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

compression

所述连接器可在试图节省服务器的带宽使用HTTP / 1.1 GZIP压缩。该参数的可接受值是“关闭”(禁用压缩),“开启”(允许压缩,这会导致文本数据被压缩),“强制”(强制压缩)或数字整数值相当于“开”,但指定输出压缩之前的最小数据量)。如果内容长度未知并且压缩设置为“开启”或更积极,则输出也将被压缩。如果未指定,则将此属性设置为“关闭”。

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

compressionMinSize

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

connectionLinger

连接器使用的插座在关闭时将持续的秒数 默认值是-1禁用套接字逗留。

connectionTimeout

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

connectionUploadTimeout

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

disableUploadTimeout

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

executor

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

executorTerminationTimeoutMillis

在继续执行停止连接器的过程之前,私有内部执行程序将等待请求处理线程终止的时间。如果未设置,则0BIO连接器的默认值为(零),5000NIO,NIO2和APR /本机连接器的默认值为5秒)。

keepAliveTimeout

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

maxConnections

服务器在任何给定时间接受和处理的最大连接数。当达到这个数字时,服务器将接受但不处理另一个连接。此额外连接将被阻止,直到正在处理的连接数量低于maxConnections,此时服务器将开始接受并再次处理新连接。请注意,一旦达到限制,操作系统仍然可以根据acceptCount设置接受连接默认值因连接器类型而异。对于BIO,默认值是maxThreads的值, 除非是Executor 在这种情况下,默认值将是执行程序的maxThreads的值。对于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保持活动状态,以及HTTP / 1.1保持活动状态和流水线状态。将其设置为-1将允许无限量的流水线或保持活动的HTTP请求。如果未指定,则此属性设置为100。

maxSwallowSize

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

maxThreads

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

maxTrailerSize

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

minSpareThreads

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

noCompressionUserAgents

该值是一个正则表达式(使用java.util.regex),与user-agent不应使用压缩的HTTP客户端头部相匹配,因为这些客户端虽然宣称支持该功能,但实现方式却不一致。默认值是一个空字符串(禁用正则表达式匹配)。

processorCache

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

rejectIllegalHeaderName

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

restrictedUserAgents

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

server

覆盖http响应的服务器标头。如果设置,则此属性的值将覆盖Tomcat默认值和Web应用程序设置的任何服务器标头。如果未设置,则使用应用程序指定的任何值。如果应用程序没有指定一个值,那么 Apache-Coyote/1.1就使用它。除非你偏执,否则你不需要这个功能。

socketBuffer

为套接字输出缓冲提供的缓冲区的大小(以字节为单位)。-1可以被指定为禁止使用缓冲区。默认情况下,将使用9000个字节的缓冲区。

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以明确它未被使用。

upgradeAsyncWriteBufferSize

为一次操作无法完成的异步写入分配的缓冲区的默认大小(以字节为单位)。无法立即写入的数据将被存储在此缓冲区中,直至可以写入。如果需要存储更多的数据而不是缓冲区中可用的空间,那么在写入期间缓冲区的大小将会增加。如果未指定,将使用默认值8192。

Java TCP套接字属性

除了上面列出的通用连接器和HTTP属性之外,BIO,NIO和NIO2实现还支持以下Java TCP套接字属性。

属性描述
socket.rxBufSize

(int)以字节为单位的套接字接收缓冲区(SO_RCVBUF)大小。如果未设置,则使用JVM默认值。

socket.txBufSize

(int)套接字发送缓冲区(SO_SNDBUF)大小(以字节为单位)。如果未设置,则使用JVM默认值。

socket.tcpNoDelay

(bool)这相当于标准属性 tcpNoDelay

socket.soKeepAlive

(bool)套接字保持活动设置(SO_KEEPALIVE)的布尔值。如果未设置,则使用JVM默认值。

socket.ooBInline

(bool)套接字OOBINLINE设置的布尔值。如果未设置,则使用JVM默认值。

socket.soReuseAddress

(bool)套接字重用地址选项(SO_REUSEADDR)的布尔值。如果未设置,则使用JVM默认值。

socket.soLingerOn

(bool)套接字soLinger选项(SO_LINGER)的布尔值。 > = 0 的标准属性connectionLinger的等同于将其设置为true标准属性connectionLinger <0的值相当于将其设置为false这个属性soLingerTime必须设置,否则JVM的默认设置将被用于两者。

socket.soLingerTime

(int)套接字so linger选项(SO_LINGER)的值(以秒为单位)。这相当于标准属性 connectionLinger这个属性soLingerOn必须设置,否则JVM的默认设置将被用于两者。

socket.soTimeout

这相当于标准属性 connectionTimeout

socket.performanceConnectionTime

(int)性能设置的第一个值。请参阅 Socket性能选项所有三个性能属性都必须设置,否则JVM默认值将用于所有三个属性。

socket.performanceLatency

(int)性能设置的第二个值。请参阅 Socket性能选项所有三个性能属性都必须设置,否则JVM默认值将用于所有三个属性。

socket.performanceBandwidth

(int)性能设置的第三个值。请参阅 Socket性能选项所有三个性能属性都必须设置,否则JVM默认值将用于所有三个属性。

socket.unlockTimeout

(int)套接字解锁超时。当连接器停止时,它将尝试通过打开连接器来释放接受器线程。默认值是250,值以毫秒为单位

BIO特定配置

以下属性是特定于BIO连接器的。

属性描述
disableKeepAlivePercentage

在HTTP保持活动之前必须使用的处理线程的百分比被禁用,以提高可伸缩性。小于的值 0将被更改为,0并且大于的值 100将被更改为100如果未指定,则默认值为75

NIO特定配置

以下属性是特定于NIO连接器的。

属性描述
pollerThreadCount

(int)用于轮询事件的线程数。默认值是1每个处理器但不超过2个。
当接受一个套接字时,操作系统保存一个全局锁。所以2线以上的好处会迅速减少。拥有多个线程的系统需要非常迅速地接受连接。然而,通常只是增加acceptCount会解决这个问题。大量的发送文件操作正在进行时,增加此值也可能会有所帮助。

pollerThreadPriority

(int)轮询线程的优先级。默认值是5java.lang.Thread.NORM_PRIORITY常数的值 )。有关java.lang.Thread此优先级的含义的更多详细信息,请参阅该类的JavaDoc 

selectorTimeout

(int)轮询器的select()超时的时间(以毫秒为单位)。此值很重要,因为连接清理是在同一个线程上完成的,所以不要将此值设置为非常高的值。默认值是1000毫秒。

useComet

(bool)是否允许彗星servlet。默认值是 true

useSendfile

(bool)使用此属性来启用或禁用发送文件功能。默认值是true请注意,使用sendfile将禁用Tomcat可能对响应执行的任何压缩。

socket.directBuffer

(bool)布尔值,是否使用直接的ByteBuffers或Java映射的ByteBuffers。如果true然后 java.nio.ByteBuffer.allocateDirect()用于分配缓冲区,如果false然后 java.nio.ByteBuffer.allocate()使用。默认值是false
当您使用直接缓冲区时,请确保为直接内存空间分配适当的内存量。在Sun的JDK上,它会是这样的-XX:MaxDirectMemorySize=256m

socket.directSslBuffer

(bool)布尔值,是否为SSL缓冲区使用直接ByteBuffers或Java映射的ByteBuffers。如果true然后java.nio.ByteBuffer.allocateDirect()用于分配缓冲区,如果false然后 java.nio.ByteBuffer.allocate()使用。默认值是false
当您使用直接缓冲区时,请确保为直接内存空间分配适当的内存量。在Oracle的JDK上,会是这样的-XX:MaxDirectMemorySize=256m

socket.appReadBufSize

(int)在Tomcat中打开的每个连接都与读取的ByteBuffer相关联。该属性控制此缓冲区的大小。默认情况下,这个读取缓冲区的大小为8192字节。对于较低的并发性,您可以增加此以缓冲更多数据。对于极端数量的保持活动连接,请减少此数字或增加堆大小。

socket.appWriteBufSize

(int)在Tomcat中打开的每个连接都与写入ByteBuffer相关联。该属性控制此缓冲区的大小。默认情况下,此写入缓冲区的大小以8192字节单位 对于低并发性,你可以增加这个来缓冲更多的响应数据。对于极端数量的保持活动连接,请减少此数字或增加堆大小。
这里的默认值很低,如果你没有处理数以万计的并发连接,你应该考虑它。

socket.bufferPool

(int)NIO连接器使用一个名为NioChannel的类来保存链接到套接字的元素。为了减少垃圾回收,NIO连接器缓存这些通道对象。此值指定此缓存的大小。默认值是500,并且表示缓存将容纳500个NioChannel对象。其他值 -1用于无限制缓存和0无缓存。

socket.bufferPoolSize

(int)NioChannel池也可以是基于大小的,不是基于对象的。大小计算如下:
NioChannel buffer size = read buffer size + write buffer size
SecureNioChannel buffer size = application read buffer size + application write buffer size + network read buffer size + network write buffer size
值以字节为单位,默认值为1024*1024*100 (100MB)。

socket.processorCache

(int)Tomcat将缓存SocketProcessor对象以减少垃圾回收。整数值指定最多需要保留在缓存中的对象数量。默认是500其他值 -1用于无限制缓存和0无缓存。

socket.keyCache

(int)Tomcat将缓存KeyAttachment对象以减少垃圾收集。整数值指定最多需要保留在缓存中的对象数量。默认是500其他值 -1用于无限制缓存和0无缓存。

socket.eventCache

(int)Tomcat将缓存PollerEvent对象以减少垃圾收集。整数值指定最多需要保留在缓存中的对象数量。默认是500其他值 -1用于无限制缓存和0无缓存。

selectorPool.maxSelectors

(int)要在池中使用的最大选择器,以减少选择器争用。命令行org.apache.tomcat.util.net.NioSelectorShared值设置为false 时使用此选项 默认值是200

selectorPool.maxSpareSelectors

(int)要在池中使用的最大备用选择器,以减少选择器争用。当一个选择器返回到池中时,系统可以决定保留它或让它成为GC'd。命令行org.apache.tomcat.util.net.NioSelectorShared 值设置为false 时使用此选项默认值是-1(无限制)。

command-line-options

以下命令行选项可用于NIO连接器:
-Dorg.apache.tomcat.util.net.NioSelectorShared=true|false - 默认为truefalse如果您希望为每个线程使用选择器,请将此值设置为。当您将其设置为时false,您可以通过使用selectorPool.maxSelectors属性来控制选择器池的大小 

oomParachute

(int)NIO连接器实现名为“降落伞”的OutOfMemoryError策略。它将一大块数据保存为一个字节数组。如果是OOM,这部分数据将被释放并报告错误。这将给虚拟机足够的空间来清理。oomParachute表示在降落伞(字节数组)的字节大小。默认值是 1024*1024(1MB)。请注意,这仅适用于与Java堆空间有关的OOM错误,并且绝对不能保证您将能够恢复。如果你在Java堆外部有一个OOM,那么这个降落伞技巧将无济于事。

NIO2特定配置

以下属性是特定于NIO2连接器的。

属性描述
useCaches

(bool)使用此属性来启用或禁用对象缓存,以减少生成的GC对象的数量。默认值是false

useComet

(bool)是否允许彗星servlet。默认值是 true

useSendfile

(bool)使用此属性来启用或禁用发送文件功能。默认值是true请注意,使用sendfile将禁用Tomcat可能对响应执行的任何压缩。

socket.directBuffer

(bool)布尔值,是否使用直接的ByteBuffers或Java映射的ByteBuffers。如果true然后 java.nio.ByteBuffer.allocateDirect()用于分配缓冲区,如果false然后 java.nio.ByteBuffer.allocate()使用。默认值是false
当您使用直接缓冲区时,请确保为直接内存空间分配适当的内存量。在Sun的JDK上,它会是这样的-XX:MaxDirectMemorySize=256m

socket.directSslBuffer

(bool)布尔值,是否为SSL缓冲区使用直接ByteBuffers或Java映射的ByteBuffers。如果true然后 java.nio.ByteBuffer.allocateDirect()用于分配缓冲区,如果false然后 java.nio.ByteBuffer.allocate()使用。默认值是false
当您使用直接缓冲区时,请确保为直接内存空间分配适当的内存量。在Oracle的JDK上,会是这样的-XX:MaxDirectMemorySize=256m

socket.appReadBufSize

(int)在Tomcat中打开的每个连接都与读取的ByteBuffer相关联。该属性控制此缓冲区的大小。默认情况下,这个读取缓冲区的大小为8192字节。对于较低的并发性,您可以增加此以缓冲更多数据。对于极端数量的保持活动连接,请减少此数字或增加堆大小。

socket.appWriteBufSize

(int)在Tomcat中打开的每个连接都与写入ByteBuffer相关联。该属性控制此缓冲区的大小。默认情况下,此写入缓冲区的大小以8192字节单位 对于低并发性,你可以增加这个来缓冲更多的响应数据。对于极端数量的保持活动连接,请减少此数字或增加堆大小。
这里的默认值很低,如果你没有处理数以万计的并发连接,你应该考虑它。

socket.bufferPoolSize

(int)NIO2连接器使用一个名为Nio2Channel的类,该类包含链接到套接字的元素。为了减少垃圾回收,NIO2连接器缓存这些通道对象。此值指定此缓存的大小。默认值是500,并且表示缓存将容纳500个Nio2Channel对象。其他值 -1用于无限制缓存和0无缓存。

socket.processorCache

(int)Tomcat将缓存SocketProcessor对象以减少垃圾回收。整数值指定最多需要保留在缓存中的对象数量。默认是500其他值 -1用于无限制缓存和0无缓存。

socket.socketWrapperCache

(int)Tomcat将缓存SocketWrapper对象以减少垃圾回收。整数值指定最多需要保留在缓存中的对象数量。默认是500其他值 -1用于无限制缓存和0无缓存。

oomParachute

(int)NIO2连接器实现称为降落伞的OutOfMemoryError策略。它将一大块数据保存为一个字节数组。如果是OOM,这部分数据将被释放并报告错误。这将给虚拟机足够的空间来清理。oomParachute表示在降落伞(字节数组)的字节大小。默认值是 1024*1024(1MB)。请注意,这仅适用于与Java堆空间有关的OOM错误,并且绝对不能保证您将能够恢复。如果你在Java堆外部有一个OOM,那么这个降落伞技巧将无济于事。

APR /本机特定配置

以下属性特定于APR /本机连接器。

属性描述
deferAccept

设置TCP_DEFER_ACCEPT此连接器的侦听套接字上标志。默认值是操作系统支持的true地方 TCP_DEFER_ACCEPT,否则是false

pollerSize

轮询者负责轮询保持活动连接的套接字数量可以保持在给定时间。额外的连接将立即关闭。默认值是8192,对应于8192个保持连接。这是maxConnections的同义词。

pollerThreadCount

用于轮询保持活动连接的线程数。在Windows上,选择默认值,以便每个线程管理的套接字小于1024.对于Linux,默认值为1.在Windows上更改默认值可能会对性能产生负面影响。

pollTime

以微秒为单位的轮询呼叫持续时间。在某些情况下,降低此值会稍微减少连接保持活动的等待时间,但随着更多轮询呼叫的进行,将使用更多的CPU。默认值是2000(2ms)。

sendfileSize

轮询器负责异步发送静态文件的套接字数量可以在给定的时间保持不变。额外连接将立即关闭,不会发送任何数据(导致客户端上的零长度文件)。请注意,在大多数情况下,sendfile是一个即将返回的调用(由内核“同步”处理),并且sendfile轮询器将不会被使用,因此可以同时发送的静态文件数量很多大于指定数量。默认值是1024。

sendfileThreadCount

使用服务sendfile套接字的线程数。在Windows上,选择默认值,以便每个线程管理的套接字小于1024.对于Linux,默认值为1.在Windows上更改默认值可能会对性能产生负面影响。

threadPriority

(int)acceptor和poller线程的优先级。默认值是5java.lang.Thread.NORM_PRIORITY常数的值 )。有关java.lang.Thread此优先级的含义的更多详细信息,请参阅该类的JavaDoc 

useComet

(bool)是否允许彗星servlet。默认值是 true

useSendfile

(bool)使用此属性来启用或禁用发送文件功能。默认值是true请注意,使用sendfile将禁用Tomcat可能对响应执行的任何压缩。

嵌套组件

没有在这个时候。

特殊功能

HTTP / 1.1和HTTP / 1.0支持

连接器支持HTTP / 1.1协议的所有必需功能,如RFC 2616中所述,包括持久连接,流水线,期望和分块编码。如果客户端(通常是浏览器)仅支持HTTP / 1.0,则 连接器将优雅地回退以支持该协议。无需特殊配置即可启用此支持。连接器还支持HTTP / 1.0保持活动状态。

RFC 2616要求HTTP服务器始终以他们声称支持的最高HTTP版本开始其响应。因此,此 连接器将始终HTTP/1.1在其响应的开始处返回

代理支持

proxyNameproxyPort当Tomcat在代理服务器上运行的属性都可以使用。这些属性修改返回到调用request.getServerName()and request.getServerPort() 方法的web应用程序的值,这些值 通常用于构建重定向的绝对URL。如果不配置这些属性,则返回的值将反映接收到代理服务器连接的服务器名称和端口,而不是客户端指示原始请求的服务器名称和端口。

有关更多信息,请参阅 代理支持如何操作

SSL支持

您可以通过将该属性 设置为,为该连接器的特定实例启用SSL支持 SSLEnabledtrue

您还需要设置schemesecure 属性值https,并true 分别向正确的信息传递给servlet的。

BIO,NIO和NIO2连接器使用JSSE SSL,而APR /本机连接器使用OpenSSL。因此,除了使用不同的属性来配置SSL之外,APR /本机连接器还需要以不同格式提供密钥和证书。

有关更多信息,请参阅 SSL配置操作指南

SSL支持 - BIO,NIO和NIO2

BIO,NIO和NIO2连接器使用以下属性来配置SSL:

属性描述
algorithm

要使用的证书编码算法。这默认为Sun JVM的KeyManagerFactory.getDefaultAlgorithm()返回 值 SunX509IBM JVM返回 IbmX509对于其他供应商,请参阅JVM文档以获取默认值。

allowUnsafeLegacyRenegotiation

允许不安全的传统TLS重新协商,这很可能会将用户暴露给CVE-2009-3555,这是TLS协议中的一个中间人漏洞,允许攻击者向用户的请求中注入任意数据。如果未指定,false则使用默认值如果JVM不支持RFC 5746(由伪加密套件TLS_EMPTY_RENEGOTIATION_INFO_SCSV的存在所指示),则此属性仅起作用。这是可用的JRE / JDK 6更新22以上。在支持RFC 5746的情况下,重新协商 - 包括对不安全遗留重新协商的支持 - 由JVM配置控制。

useServerCipherSuitesOrder

设置为true执行服务器的密码顺序(来自ciphers设置)。设置为false 选择客户端提供的第一个可接受的密码套件。 使用此功能需要Java 8或更高版本。 缺省值是未定义的,将选择留给JSSE实现。

ciphers

如果指定并使用','作为分隔符,则只会使用SSL实现列出和支持的密码。密码是使用JSSE密码命名约定指定的。特殊值ALL将启用所有支持的密码。这将包括许多不安全的。ALL仅用于测试目的。

该列表还可以使用':'作为分隔符,在这种情况下,它将使用OpenSSL语法(有关支持的密码列表和语法,请参阅OpenSSL文档)。此过滤的行为与OpenSSL 1.0.2稳定分支的行为保持一致。

如果未指定,则HIGH:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!kRSA在Java 8或更高版本上运行时将使用默认(使用OpenSSL符号) 在Java 7上,!DHE使用基于JSSE的连接器时将添加到此默认值。

请注意,Java不会将密码的顺序定义为优先顺序。useServerCipherSuitesOrder

clientAuth

设置为true,如果你想在SSL栈需要从客户端的有效证书链接受连接之前。设置为want如果您希望SSL堆栈请求客户端证书,但不会失败,如果没有出现。false ,除非客户端请求由使用安全约束保护的资源值(默认值)将不需要证书链CLIENT-CERT认证。

clientCertProvider

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

crlFile

用于验证客户端证书的证书撤销列表。如果未定义,则不会根据证书撤销列表检查客户端证书。该文件可以使用URL,绝对路径或相对于(CATALINA_BASE)路径指定。

keyAlias

用于密钥库中服务器密钥和证书的别名。如果未指定,则将使用从密钥库中读取的第一个密钥。从密钥库中读取密钥的顺序取决于实现。可能并不是按照与添加密钥库相同的顺序从密钥库中读取密钥。如果密钥库中存在多个密钥,强烈建议将keyAlias配置为确保使用正确的密钥。

keyPass

用于从指定密钥库文件访问服务器证书的密码。默认值是“ changeit”。

keystoreFile

您已存储要加载的服务器证书的密钥库文件的路径名。默认情况下,路径名.keystore是运行Tomcat的用户的操作系统主目录中的文件“ ”。如果您 keystoreType不需要"" 此参数的文件使用(空字符串)。该文件可以使用URL,绝对路径或相对于(CATALINA_BASE)路径指定。

keystorePass

用于访问指定密钥库文件的密码。默认值是keyPass属性的值

keystoreProvider

用于服务器证书的密钥库提供程序的名称。如果未指定,则按优先顺序遍历已注册提供程序的列表,并keystoreType使用支持该提供程序的第一个提供程序 

keystoreType

用于服务器证书的密钥库文件的类型。如果未指定,则默认值为“ JKS”。

sessionCacheSize

会话缓存中要维护的SSL会话数量。使用0指定无限制的缓存大小。如果未指定,则使用默认值0。

sessionTimeout

创建SSL会话之后的时间(以秒为单位),它将超时。使用0指定无限制超时。如果未指定,则使用默认值86400(24小时)。

sslEnabledProtocols

用逗号分隔的SSL协议列表支持HTTPS连接。如果指定,则仅启用SSL实施列出和支持的协议。如果未指定,则使用JVM缺省值(不包括SSLv2和SSLv3,如果JVM默认启用其中的一个或两个)。允许的值可以从JVM文档中获得,SSLSocket.setEnabledProtocols()例如 Oracle Java 7的允许值 注意:此属性和sslProtocol之间有重叠 

sslImplementationName

要使用的SSL实现的类名称。如果未指定,org.apache.tomcat.util.net.jsse.JSSEImplementation 则将使用默认值,该值默认包装JVM的默认JSSE提供程序。请注意,JVM可以配置为使用不同的JSSE提供程序作为默认值。

sslProtocol

要使用的SSL协议(单个值可以启用多个协议 - 有关详细信息,请参阅JVM文档)。如果未指定,则默认为TLS可以从JVM文档获取允许的值,以获取创建SSLContext实例时允许的算法值, 例如 Oracle Java 7注意:此属性和sslEnabledProtocols之间有重叠 

trustManagerClassName

用于验证客户端证书的自定义信任管理器类的名称。该类必须有一个零参数构造函数,并且必须实现javax.net.ssl.X509TrustManager如果设置了此属性,则可以忽略信任库属性。

trustMaxCertLength

验证客户端证书时将允许的最大数量的中间证书。如果未指定,则将使用默认值5。

truststoreAlgorithm

用于信任库的算法。如果未指定,javax.net.ssl.TrustManagerFactory.getDefaultAlgorithm()则使用返回的默认值 

truststoreFile

用于验证客户端证书的信任库文件。缺省值是javax.net.ssl.trustStore系统属性的值如果此属性和默认系统属性均未设置,则不会配置信任存储。该文件可以使用URL,绝对路径或相对于(CATALINA_BASE)路径指定。

truststorePass

访问信任存储的密码。缺省值是javax.net.ssl.trustStorePassword系统属性的值 如果该属性为空,则不会配置信任库密码。如果指定了无效的信任存储密码,则会记录警告,并尝试访问信任存储而不使用密码,该密码将跳过对信任存储内容的验证。

truststoreProvider

用于服务器证书的信任库提供程序的名称。缺省值是javax.net.ssl.trustStoreProvider系统属性的值 如果该属性为空,则将其值keystoreProvider用作默认值。如果既没有这个属性,也没有keystoreProvider设置默认系统属性 ,那么已经注册的提供者列表按照优先顺序遍历,并且使用了第一个支持它的提供者 truststoreType

truststoreType

用于信任存储的密钥存储的类型。缺省值是javax.net.ssl.trustStoreType系统属性的值如果该属性为空,则将其值keystoreType用作默认值。

SSL支持 - APR /本机

当启用APR / native时,HTTPS连接器将使用套接字轮询器保持活动状态,从而提高服务器的可伸缩性。它还使用了OpenSSL,它可能比JSSE更优化,具体取决于所使用的处理器,并且可以使用许多商用加速器组件进行补充。与HTTP连接器不同,HTTPS连接器不能使用sendfile来优化静态文件处理。

HTTPS APR /本机连接器具有与HTTP APR /本机连接器相同的属性,但添加了特定于OpenSSL的连接器。有关使用OpenSSL的完整详细信息,请参阅OpenSSL文档和可用的许多书(请参阅官方OpenSSL网站)。APR /本地连接器的SSL特定属性为:

属性描述
SSLCACertificateFile

请参阅 mod_ssl文档

SSLCACertificatePath

请参阅 mod_ssl文档

SSLCARevocationFile

请参阅 mod_ssl文档

SSLCARevocationPath

请参阅 mod_ssl文档

SSLCertificateChainFile

请参阅 mod_ssl文档

SSLCACertificateFile

包含受信任证书颁发机构的连接证书的文件的名称。格式是PEM编码的。

SSLCACertificatePath

包含可信认证中心证书的目录名称。格式是PEM编码的。

SSLCARevocationFile

包含证书颁发机构的级联证书吊销列表的文件的名称。格式是PEM编码的。

SSLCARevocationPath

包含证书颁发机构的证书吊销列表的目录的名称。格式是PEM编码的。

SSLCertificateChainFile

包含形成服务器证书的证书链的证书颁发机构的连接证书的文件的名称。格式是PEM编码的。

SSLCertificateFile

包含服务器证书的文件的名称。格式是PEM编码的。

除了证书之外,文件还可以包含可选元素DH参数和/或临时密钥的EC曲线名称,分别openssl dhparam生成openssl ecparam相应的OpenSSL命令的输出可以简单地连接到证书文件。此功能需要APR /本机版本1.1.34或更高版本。

SSLCertificateKeyFile

包含服务器私钥的文件的名称。格式是PEM编码的。默认值是“SSLCertificateFile”的值,在这种情况下,证书和私钥必须位于该文件中(不推荐)。

SSLCipherSuite

可用于与客户沟通的密码。默认是HIGH:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5有关此属性的语法的详细信息,请参阅OpenSSL文档。

SSLDisableCompression

如果设置为true,则禁用压缩,OpenSSL支持禁用压缩。默认是false继承OpenSSL中的默认压缩设置。

SSLHonorCipherOrder

设置为true强制服务器的密码顺序(来自SSLCipherSuite设置),而不是允许客户端选择密码(这是默认密码)。

SSLPassword

加密私钥的密码短语。如果未提供“SSLPassword”,则回调函数应提示输入密码短语。

SSLProtocol

与客户端通信时支持的协议的名称。这应该是以下任意组合的列表:

  • 的SSLv2
  • 在SSLv3
  • 使用TLSv1
  • TLSv1.1
  • TLSv1.2工作
  • 所有

列表中的每个标记都可以用加号(“+”)或减号(“ - ”)作为前缀。加号会添加协议,减号会将其从当前列表中删除。该列表是从一个空列表开始构建的。

该令牌all是别名 TLSv1+TLSv1.1+TLSv1.2

如果为基于OpenSSL的安全连接器指定了多个协议,则它将始终支持SSLv2Hello如果指定了单个协议,则不支持 SSLv2Hello

请注意,SSLv2并且SSLv3本质上是不安全的。

如果未指定,则将使用默认值all

SSLVerifyClient

询问客户证书。默认值是“无”,这意味着客户将没有机会提交证书。其他可接受的值包括“可选”,“要求”和“可选无CA”。

SSLVerifyDepth

客户端证书的最大验证深度。默认值是“10”。

SSLDisableSessionTickets

如果设置为禁用TLS会话票据(RFC 5077)的使用 true默认是false请注意,当TLS会话票据正在使用时,完整的对等证书链将仅在第一个连接上可用。后续连接(使用故障单建立TLS会话)将只具有对等证书,而不是完整的连锁。

posted @ 2018-04-13 08:54  知识,让我掌握未来  阅读(587)  评论(0编辑  收藏  举报