tomcat通信配置
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
BIO
连接器启动
连接器启动相关配置
配置项
acceptCount minSpareThreads
说明
ServerSocketChannel. socket().bind方法的backlog 参数,socket可以被积压的请求队列的最大长度, ThreadPoolExecutor构造方法的coolPoolSize参数,线 程池中始终保留的线程数量 ThreadPoolExecutor构造方法的maximumPoolSize, 线程池中允许处理socket线程的最大数量 connectionLimitLatch的构造参数,连接器所能接收处理 的最大连接数
配置优化
类别
节省带宽
配置
compression enableLookups 使用单独的http服务器处理静态资源
说明
可以启用压缩 禁止客户端DNS查找 减少因为加载静态资源导致 的网络阻塞 单独配置处理线程池 使用异步处理请求方式 在运算速度快,并一直被频 繁访问的系统中可以提高网 络通信速度和并发请求,在 机器可以承受的范围里调整 这些参数
Http Connector NIO Http Connector--提供非阻塞IO与 Comet支持 APR HTTP Connector—C实现,JNI调用, 主要提升对静态资源(如HTML、图片、CSS、 JS等)的访问性能 AJP Connector--与http服务器之间通信专门 定制的协议
连接器配置应用
minSpareThreads,maxThreads
处理请求的线程池的大小,每个线程同时处理一个请求。 情况1:如果操作是纯粹的计算,那么系统响应时间的主要 限制就是cpu的运算能力,此时maxThreads应该尽量设的 小,降低同一时间内争抢cpu的线程个数,可以提高计算效 率,提高系统的整体处理能力。 情况2:如果操作纯粹是IO或者数据库,那么响应时间的主 要限制就变为等待外部资源,此时maxThreads应该尽量设 的大,这样才能提高同时处理请求的个数,从而提高系统整 体的处理能力。此情况下因为tomcat同时处理的请求量会 比较大,所以需要关注一下tomcat的虚拟机内存设置和 linux的open file限制。当然如果设置过大还需要考虑操作 系统切换线程的时间消耗。
连接器执行效率
Executor 使用NIO连接器或者APR连接器 connectionTimeout尽量小, acceptCount, maxConnections, maxThreads, minSpareThreads 尽量大
配置优化
永远将enableLookups设置为false,除非服务器端需 要知道客户端的host 节省带宽 可以启用压缩 为连接器配置单独的线程池 使用NIO连接器或者APR连接器,或者使用单独的http 服务器处理静态资源 一直被频繁访问的系统提高网络通信速度,在机器可 以承受的范围里, connectionTimeout尽量小, acceptCount, maxConnections, maxThreads, minSpareThreads尽量大 考虑集群,分布式部署
maxHeaderCount
disableUploadTimeout, connectionUploadTimeout
Request中header的最大数量
Http11Processor的process方法中设置为接收客户端socket数 据的超时时间,作为socket的sotimeout属性设置
连接器配置应用
初探Tomcat 通信及其配置
目录
Tomcat连接器简介 Tomcat连接器启动和处理 Tomcat连接器启动和处理配置 Tomcat连接器配置应用和优化 Q&A
Tomcat版本
7.0.37
特性 Java相关 7.x Java版本6 Servlet API 3.0,JSP2.2,EL2.2 Servlet异步处理 内存泄露检测预防
maxConnections
服务器所能接收和处理的最大连接的数量 可以认为是在socket处理前的一道关卡
在Endpoint.Acceptor类的run方法中,在
socket.accept创建客户端socket之前,会先 调用countUpOrAwaitConnection方法记数, 如果小于这个数值那么进入 AbstractQueuedSynchronizer.acquireShare dInterruptibly方法等待。 这个值如果设置为0那么将等于maxThreads设 置的值
其他配置
配置项 enableLookups
maxKeepAliveRequests keepAliveTimeout Executor
说明
是否启用客户端dns查询 最大长连接数量 长连接最大保持时间 定义线程池,可以使多个connector使用同一个 Executor 对文本内容使用GZIP压缩
compression
配置和初始化 管理socket 处理请求
连接器在tomcat中的位置
Server Service Connectors组件 Connector Endpoint Protocol Container组件 Engine Host Context
Processor
Adapter
连接器种类
HTTPConnector
连接器配置应用
acceptCount
该属性被放到ServerSocket请求队列中的请求数量。 最后被使用在ServerSocket.bind方法的backlog 参数中。 如果并发很大的情况下,客户端的socket被接收后, 处理线程都被占用,那么客户端请求被 ServerSocket.accept方法等待,直到有socket被 处理完成。如果并发请求数量超过该数值,那么客 户端请求将收到refuse的异常。
安全性
防止sessionid攻击 使用随机数去防止跨站脚本攻击 …..
异步日志记录 更容)
负责监听到达tomcat的TCP请求,并将这些请
求转换成Servlet规范中所定的Request,再将 转换后的请求交给Engine组件处理,最后将 Engine返回的Response返回给客户端. 职责
连接器配置应用
maxKeepAliveRequests和
Keep-Alive功能使客户端到服务器端的连接持
keepAliveTimeout
续有效,当出现对服务器的后继请求时, Keep-Alive功能避免了建立或者重新建立连接 的时间损耗 它可能影响性能,因为在没有请求的处理暂停 期间,本来可以释放的资源仍旧被占用 可能会占用很多内存
连接器配置应用maxkeepaliverequests和keepalivetimeoutkeepalive功能使客户端到服务器端的连接持续有效当出现对服务器的后继请求时keepalive功能避免了建立或者重新建立连接的时间损耗它可能影响性能因为在没有请求的处理暂停期间本来可以释放的资源仍旧被占用可能会占用很多内存配置优化类别配置说明节省带宽compression可以启用压缩enablelookups禁止客户端dns查找使用单独的http服务器处理静态资源减少因为加载静态资源导致的网络阻塞连接器执行效率executor单独配置处理线程池使用nio连接器或者apr连接器使用异步处理请求方式connectiontimeout尽量小acceptcountmaxconnectionsmaxthreadsminsparethreads尽量大在运算速度快并一直被频繁访问的系统中可以提高网络通信速度和并发请求在机器可以承受的范围里调整这些参数配置优化永进将enablelookups设置为false除非服务器端需要知道客户端的host使用nio连接器或者apr连接器或者使用单独的http服务器处理静态资源一直被频繁访问的系统提高网络通信速度在机器可以承受的范围里connectiontimeout尽量小acceptcountmaxconnectionsmaxthreadsminsparethreads尽量大考虑集群分布式部署其他配置配置项说明enablelookups是否启用客户端dns查询maxkeepaliverequests最大长连接数量keepalivetimeout长连接最大保持时间executor定义线程池可以使多个connector使用同一个executorcompression对文本内容使用gzip压缩
maxThreads maxConnections
连接器处理请求
连接器处理相关配置
配置项
maxConnections Socket属性 recieveBuffSize,sendBuffSize 等 useComet
说明
Endpoint run方法中判断是否已经到达最大连接数,如果到达最 大连接数后将等待。 Socket往poller注册前设置socket的参数。作为后面从socket读 取数据和发送数据的参数。 设置是否允许comet servlet,支持事件的方式异步处理servlet