tomcat(4)连接器

1、推荐配置

1
2
3
4
5
6
7
8
9
10
11
12
<Connector 
executor="tomcatThreadPool"
port="8080"
protocol="org.apache.coyote.http11.Http11NioProtocol"
acceptCount="100"
acceptorThreadCount="2"
maxConnections="1000"
connectionTimeout="20000"
disableUploadTimeout="true"
redirectPort="8443"
enableLookups="false"
URIEncoding="UTF-8" />

2、配置属性

配置属性详见http://127.0.0.1:8080/docs/config/http.html

公共属性

属性 描述
allowTrace 一个布尔值,可用于启用或禁用TRACE HTTP方法。如果未指定,则此属性设置为false。
asyncTimeout 异步请求的默认超时时间(以毫秒为单位)。如果未指定,则此属性设置为10000(10秒)。
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的连接器或基于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连接器org.apache.coyote.http11.Http11AprProtocol- APR /本地连接器。自定义实现也可以使用。看看我们的连接器比较图表。对于http和https,两个Java连接器的配置都是相同的。
proxyName 如果在代理配置中使用此连接器,请配置此属性以指定要调用的服务器名称request.getServerName()。
proxyPort 如果此代理服务器配置中使用此连接器,请配置此属性以指定要调用的服务器端口request.getServerPort()。
redirectPort 如果此连接器支持非SSL请求,并且收到匹配 需要SSL传输的请求,Catalina将自动将请求重定向到此处指定的端口号。
scheme 将此属性设置为您希望通过调用返回的协议的名称request.getScheme()。例如,您将为httpsSSL连接器设置此属性为“ ”。默认值是“ http”。
secure true如果您希望有呼叫request.isSecure()来返回true 此连接器收到的请求,请设置此属性。您需要SSL连接器或从SSL加速器接收数据的非SSL连接器,如加密卡,SSL设备甚至Web服务器。默认值是false。
URIEncoding 这指定用于解码URI字节的字符编码,在%xx解码URL之后。如果没有指定,将使用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。
acceptCount 所有可能的请求处理线程正在使用时传入连接请求的最大队列长度。队列满时收到的任何请求都将被拒绝。默认值是100。
acceptorThreadCount 用于接受连接的线程数。在多CP​​U机器上增加这个值,虽然你永远不会真的需要更多2。另外,有很多非保持活动的连接,你可能也想增加这个值。默认值是 1。
acceptorThreadPriority 接受者线程的优先级。用于接受新连接的线程。默认值是5(java.lang.Thread.NORM_PRIORITY常数的值 )。
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和APR /本地连接器的默认值为(5秒)。
keepAliveTimeout 此连接器在关闭连接之前等待另一个HTTP请求的毫秒数。默认值是使用为connectionTimeout属性设置的值 。使用值-1来表示无(即无限)超时。
maxConnections 服务器在任何给定时间接受和处理的最大连接数。当达到这个数字时,服务器将接受但不处理另一个连接。此额外连接将被阻止,直到正在处理的连接数量低于maxConnections,此时服务器将开始接受并再次处理新连接。请注意,一旦达到限制,操作系统仍然可以根据acceptCount设置接受连接。默认值因连接器类型而异。对于BIO,默认值是maxThreads的值, 除非是Executor 在这种情况下,默认值将是执行程序的maxThreads的值。对于NIO,默认值是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中较大的值以及预期的并发请求(同步和异步)的最大数量。
restrictedUserAgents 该值是一个正则表达式(使用java.util.regex)user-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,你会想设置 scheme和secure属性,以及通过正确的request.getScheme()和 request.isSecure()值,以Servlet的见SSL支持以获取更多信息。
tcpNoDelay 如果设置为true,TCP_NO_DELAY选项将在服务器套接字上设置,这可以在大多数情况下提高性能。这是true默认设置。
threadPriority JVM中请求处理线程的优先级。默认值是5(java.lang.Thread.NORM_PRIORITY常数的值 )。有关java.lang.Thread此优先级的含义的更多详细信息,请参阅该类的JavaDoc 。如果执行程序与此连接程序相关联,则此属性将被忽略,因为连接程序将使用执行程序而不是内部线程池来执行任务。请注意,如果配置了执行程序,则为该属性设置的任何值都将被正确记录,但会被报告(例如,通过JMX) -1以明确它未被使用。
upgradeAsyncWriteBufferSize 为一次操作无法完成的异步写入分配的缓冲区的默认大小(以字节为单位)。无法立即写入的数据将被存储在此缓冲区中,直至可以写入。如果需要存储更多的数据而不是缓冲区中可用的空间,那么在写入期间缓冲区的大小将会增加。如果未指定,将使用默认值8192。
#### bio属性
属性 描述
disableKeepAlivePercentage 在HTTP保持活动之前必须使用的处理线程的百分比被禁用,以提高可伸缩性。小于的值 0将被更改为,0并且大于的值 100将被更改为100。如果未指定,则默认值为75。
#### nio属性
属性 描述
pollerThreadCount (int)用于轮询事件的线程数。默认值是1每个处理器直到并包括版本7.0.27。7.0.28版本的默认值是1每个处理器但不超过2. 当接受一个套接字时,操作系统保存一个全局锁。所以2线以上的好处会迅速减少。拥有多个线程的系统需要非常迅速地接受连接。然而,通常只是增加acceptCount会解决这个问题。大量的发送文件操作正在进行时,增加此值也可能会有所帮助。
pollerThreadPriority (int)轮询线程的优先级。默认值是5(java.lang.Thread.NORM_PRIORITY常数的值 )。
selectorTimeout (int)轮询器的select()超时的时间(以毫秒为单位)。此值很重要,因为连接清理是在同一个线程上完成的,所以不要将此值设置为非常高的值。默认值是1000毫秒。
useComet (bool)是否允许彗星servlet。默认值是 true。
useSendfile (bool)使用此属性来启用或禁用发送文件功能。默认值是true。
socket.directBuffer (bool)布尔值,是否使用直接的ByteBuffers或Java映射的ByteBuffers。如果true然后 java.nio.ByteBuffer.allocateDirect()用于分配缓冲区,如果false然后 java.nio.ByteBuffer.allocate()使用。默认值是false。当您使用直接缓冲区时,请确保为直接内存空间分配适当的内存量。在Sun的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。值以字节为单位,默认值为10241024100 (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 默认为true。false如果您希望为每个线程使用选择器,请将此值设置为。当您将其设置为时false,您可以通过使用selectorPool.maxSelectors属性来控制选择器池的大小 。
oomParachute (int)NIO连接器实现名为“降落伞”的OutOfMemoryError策略。它将一大块数据保存为一个字节数组。如果是OOM,这部分数据将被释放并报告错误。这将给虚拟机足够的空间来清理。该oomParachute表示在降落伞(字节数组)的字节大小。默认值是 1024*1024(1MB)。请注意,这仅适用于与Java堆空间有关的OOM错误,并且绝对不能保证您将能够恢复。如果你在Java堆外部有一个OOM,那么这个降落伞技巧将无济于事。
#### apr属性
属性 描述
deferAccept 设置TCP_DEFER_ACCEPT此连接器的侦听套接字上的标志。默认值是操作系统支持的true地方 TCP_DEFER_ACCEPT,否则是false。
pollerSize 轮询者负责轮询保持活动连接的套接字数量可以保持在给定时间。额外的连接将立即关闭。默认值是8192,对应于8192个保持连接。这是maxConnections的同义词。
pollTime 以微秒为单位的轮询呼叫持续时间。在某些情况下,降低此值会稍微减少连接保持活动的等待时间,但随着更多轮询呼叫的进行,将使用更多的CPU。默认值是2000(2ms)。
sendfileSize 轮询器负责异步发送静态文件的套接字数量可以在给定的时间保持不变。额外连接将立即关闭,不会发送任何数据(导致客户端上的零长度文件)。请注意,在大多数情况下,sendfile是一个即将返回的调用(由内核“同步”处理),并且sendfile轮询器将不会被使用,因此可以同时发送的静态文件数量很多大于指定数量。默认值是1024。
threadPriority (int)acceptor和poller线程的优先级。默认值是5(java.lang.Thread.NORM_PRIORITY常数的值 )。
useComet (bool)是否允许彗星servlet。默认值是 true。
useSendfile (bool)使用此属性来启用或禁用发送文件功能。默认值是true。
>