HTTP/1.1 Connector

概述

Coyote HTTP/1.1 Connector元素是一个支持HTTP/1.1协议的Connector组件。它使Catalina除了能够执行servlet和JSP页面外,还能够作为一个单独的web server运行。Connector对象的实例在服务器上监听特定的TCP端口。一个Service可以配置一个或多个这样的Connector,每个Connector都把请求转发给对应Engine进行处理,并产生响应。

在 服务器启动的时候,Connector会创建一些请求处理线程(基于minProcessors属性值)。每个请求需要一个线程为其服务,直到服务完成。 如果同一时刻的请求数多于可用的请求处理线程,会创建额外的处理线程,线程数的上限是maxProcessors。如果已经到达了最大请求数,仍然有请求 发生,它们被缓存在由Connector创建的server socket中,直到缓存的上限(由acceptCount属性的值定义)。这以后所有的请求都会收到“拒绝连接”的错误,直到有资源能够处理它们。

属性
公共属性

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

属性 描述
enableLookups

如果希望调用request.getRemoteHost()进行DNS查询,以返回远程客户的实际主机名,将enableLookups设为true。如果希望忽略DNS查询,仅仅返回IP地址,设为false(这样提高了性能)。缺省情况下,DNS查询是使能的。

redirectPort 如果Connector支持非SSL请求,在收到一个要求使用SSL传输的请求以后,Catalina会自动将该请求重定向到这里指定的端口号。
scheme

调用request.getScheme()时返回的协议名称。比如,在SSL Connector上可能将这个属性设为“https”。缺省值为“http”,更多信息,参考SSL支持

secure

如果希望在该Connector接收到的请求上调用request.isSecure()返回true,设置该属性为true。缺省值为false。

标准实现

Coyote HTTP/1.1 Connector的标准实现是org.apache.coyote.tomcat5.CoyoteConnector。它还支持如下的附加属性

属性 描述
acceptCount

当所有可能的请求处理线程都被使用的时候,连接请求队列的最大长度。如果该队列为满,所有的请求都被拒绝,缺省值为10。

address 对于具有多个IP地址的server,这个属性指定了用于监听特定端口的地址。缺省情况下,端口作用于server的所有IP地址。
bufferSize

connector创建的输入流缓冲区的大小(以字节为单位)。缺省情况下,bufferSize=2048。

compression

为 了节省服务器带宽,Connector可能使用HTTP/1.1GZIP压缩。这个参数的可接受值为“off”(不使用压缩),“on”(压缩文本数据),“force”(在所有的情况下强制压缩),或者使用一个数值 整数(等价于“on”,但是指定了输出被压缩是的最小的数据数)。如果content-length未知, 而compression设置成“on”或者 更强,输出也会被压缩。如果没有指定,这个属性被设成“off”

connectionLinger

当Connector使用的socket被关闭的时候,保留该socket的时间,以毫秒为单位。缺省值为-1(不使用socket linger)

connectionTimeout

在Connector接受一个连接以后,等待发生第一个请求的时间,以毫秒为单位。缺省值为60000(60秒)

debug

日志消息的详细程度,数字越大,输出越详细,如果没有指定,使用缺省值0。

disableUploadTimeout 这个标志允许servlet container在一个servlet执行的时候,使用一个不同的,更长的连接超时。最终的结果是给servlet更长的时间以便完成其执行,或者在数据上载的时候更长的超时时间。如果没有指定,设为false。
maxKeepAliveRequests 在server关闭连接之前,接受的HTTP请求的最大数目。如果该值设为1,会禁止HTTP/1.0保活,同时也会禁止HTTP/1.1保活和pipelining。如果没有指定,设为100。
keepAliveTimeout 长连接最大保持时间(毫秒)。此处为15秒。
maxSpareThreads

在线程池开始停止不必要的线程之前,允许存在的最大未使用的请求处理线程。缺省值为50。

maxThreads

Connector能够创建的最大请求处理线程数,这个值决定了同时能够处理的最大请求数。如果没有指定,缺省值为200。

minSpareThreads

当Connector第一次启动时,创建的请求处理线程数。connector同时必须保证指定数目的空闲处理线程。这个值应该设置成比maxThreads小的数值,缺省值为4。

port

Connector创建server socket并等待连接的TCP端口号。操作系统在特定的IP地址上只允许一个服务器应用程序监听特定的端口。

protocol

为了使用HTTP处理器,该属性值必须为HTTP/1.1(缺省值)

proxyName

如果connector在代理配置中使用,将这个属性设置成调用request.getServerName()时返回的服务器名称。更多信息参考代理支持。

proxyPort

如果Connector在代理配置中使用,这个属性指定了调用request.getServerPort()返回的端口值。更多信息参考代理支持。

socketBuffer

socket输出缓冲区的大小。如果为-1,不使用缓冲。缺省值为9000字节。

tcpNoDelay

如果为true,服务器socket会设置TCP_NO_DELAY选项,在大多数情况下可以提高性能。缺省情况下设为true。

嵌套组件

可以嵌套在Connector中的唯一元素是Factory,用来配置服务器套接口工厂组件。这个组件从来都不需要,现在支持这个组件是为了与Tomcat的早期版本兼容。

专有特征
HTTP/1.1 和HTTP/1.0 支持

Connector 支持HTTP/1.1协议的所有必需特征(如RFC2616所描述的),包括永久性连接,流水线,expectations and chunked encoding。如果客户端(通常是一个浏览器)只支持HTTP/1.0,Connector会自动跳回到HTTP/1.0。不需要特殊的配置来使能这 个支持。Connector也支持HTTP/1.0保活机制。

RFC2616要求HTTP服务器的响应总是以它们宣称支持的最高HTTP版本开始。因此,这个Connector在它的响应的开始总是返回HTTP/1.1。

日志输出

Connector产生的任何调试或者异常信息都会被自动路由到与Connector所属的Engine的Logger。不需要特殊的配置来使能这个支持。

代理支持

Tomcat位于代理服务器后面时,可以使用proxyName和proxyPort属性。这些属性修改了调用 requset.getServerName()和request.getServerPort()的返回值,用来构造重定向的绝对URL。如果不设置这 些值,返回值反映了代理服务器收到的连接的服务器名称和端口号,而不是客户端发起的服务器名称和端口号。

更多信息,参考代理支持HOW-TO

SSL支持

对Connector的特定实例,可以将secure属性设为true,来使能SSL支持。另外,可以配置如下属性:

属性 描述
algorithm

使用的认证编码算法。缺省值为SunX509。

clientAuth

如果在接受某个连接之前,需要客户端发送有效证书链,将该值设为true。如果为false(缺省值),不需要使用证书链。除非客户端请求被CLIENT-CERT认证保护的资源。

keystoreFile

存储服务器证书的keystore文件路径。缺省情况下,路径指向运行Tomcat的用户主目录下的".keystore"。

keystorePass

用来访问服务器证书的密码,缺省值未"changeit"

keystoreType

用于存储服务器证书的keystore文件的类型。缺省值未"JKS"

sslProtocol

SSL协议的版本号,缺省值是TLS

ciphers

可以使用的加密算法列表,用逗号分开。如果没有指定,可以使用任何算法。

Tomcat HTTP/1.1 Connector 参数整理的更多相关文章

  1. Tomcat 调优及 JVM 参数优化

    Tomcat 本身与 JVM 优化 Tomcat:调整Server.xml JVM:bat启动服务方式的话修改catalina.bat 服务式启动的话参考:http://www.cnblogs.com ...

  2. 【 Tomcat 】tomcat8.0 基本参数调优配置-----(2)

    Tomcat 的缺省配置是不能稳定长期运行的,也就是不适合生产环境,它会死机,让你不断重新启动,甚至在午夜时分唤醒你.对于操作系统优化来说,是尽可能的增大可使用的内存容量.提高CPU 的频率,保证文件 ...

  3. $_SERVER的详细参数整理下

    PHP编程中经常需要用到一些服务器的一些资料,特把$_SERVER的详细参数整理下,方便以后使用. $_SERVER['PHP_SELF'] #当前正在执行 脚本的文件名,与 document roo ...

  4. String格式化参数整理

    Java String格式话参数整理如下: conversion:转换格式,可选的格式有: d 整数型(十进制) c Unicode字符 b Boolean值 s String f 浮点数(十进制) ...

  5. hadoop作业调优参数整理及原理

    hadoop作业调优参数整理及原理 10/22. 2013 1 Map side tuning参数 1.1 MapTask运行内部原理 当map task开始运算,并产生中间数据时,其产生的中间结果并 ...

  6. tomcat与jetty接收请求参数的区别

    [场景] 服务端点对点通知.A服务发起请求B服务,B同步返回接收成功:然后B开始处理逻辑:B处理完成后异步通知给A:A接收请求并处理,同步回写响应给B:完成. [先上代码] 服务端(接收端)代码: i ...

  7. Tomcat server.xml中Connector配置参数详解

    Tomcat中Connector常用配置 Tomcat中server.xml有些配置信息是需要我们了解的,最起码知道如何进行简单的调试. <Connector port="8080&q ...

  8. Tomcat Connector 参数优化说明

    默认参数 注: Connector 通常在%HOME_TOMCAT%/conf/servser.xml 文件内 # 正常参数 <Connector port=" protocol=&q ...

  9. Tomcat性能优化及常用命令整理

    1汤姆猫性能优化 1.1连接参数 1.1.1默认连接配置 默认连接器采用阻塞式 IO,默认最大线程数为200,配置如下: <Connector port="8080" pro ...

随机推荐

  1. linux运维常用命令

    1.linux启动过程 开启电源 --> BIOS开机自检 --> 引导程序lilo或grub--> 内核的引导(kernel boot)--> 执行init(rc.sysin ...

  2. PHP 实现对象的持久层,数据库使用MySQL

    http://www.xuebuyuan.com/1236808.html 心血来潮,做了一下PHP的对象到数据库的简单持久层. 不常用PHP,对PHP也不熟,关于PHP反射的大部分内容都是现学的. ...

  3. cisco通过控制口或者通过远程配置交换机

    学而不思则罔,思而不学则殆,每天坚持一小步,则成功一大步 下面我们通过Cisco Packet来模拟交换机和路由器的远程和控制台登录配置交换机. 交换机console口的连接与配置方法 (1),在Ci ...

  4. 使用 vmstat 监测系统性能

    在linux/unix下,vmstat是常用的系统性能监测工具.常用用法如下 vmstat 1 10 表示以1秒为间隔,做相关参数的采样,一共10次.输出范例如下: procs ----------- ...

  5. MS SQLService中的*= 及 =*

    今天看到数据库中的存储过程中,有*= ,于是百度了一下,原来这个SQL2000以前的左连接,以后的版本中开启兼容也是可以用的. 于是拿出来在系统中的表中测试了一下果然如此 例: 有用户表D_user及 ...

  6. 【我们都爱Paul Hegarty】斯坦福IOS8公开课个人笔记1 IOS8概述

    首先感谢网易公开课和SwiftV课堂的朋友们辛苦翻译,这个系列是我学习斯坦福IOS8公开课的个人心得体会和笔记,希望能给大家带来启发. 首先我们要知道IOS系统中的结构情况,从贴近硬件的底层到贴近用户 ...

  7. JS中null与undefined的区别

    1.typeof操作符 用来检测变量的数据类型 例:typeof 3.14 //返回number typeof [1,2,3]  //返回object 2.null 只有一个值的特殊类型,表示一个空对 ...

  8. 重置mysql管理员密码

    重置管理员密码 1.关闭mysql 2.开启mysql,跳过授权表mysql服务 提示:如果此步骤操作成功,那么任何用户登陆MySQL都不需要用户名与密码 保持此窗口不能关闭 3.重新cmd,登陆 m ...

  9. lucene4.0 基于smb文件服务器的全文检索

    使用lucene 4.0版本的全文检索 所需要的jar包  网速太慢,下次有空再把jar传上来 1.FileIndex  建立索引,查询,删除,更新 package com.strongit.tool ...

  10. 用分治法实现大数乘法,加法,减法(java实现)

    大数乘法即多项式乘法问题,求A(x)与B(x)的乘积C(x),朴素解法的复杂度O(n^2),基本思想是把多项式A(x)与B(x)写成 A(x)=a*x^m+b B(x)=c*x^m+d 其中a,b,c ...