tomcat 一时失言乱红尘 2022-08-02 06:06 33阅读 0赞 ## 配置综述 ## 对tomcat服务器的配置,主要是指tomcat主目录下面conf文件夹下对各个配置文件的配置,包括用户权限访问控制,安全配置,集群配置,与HTTP服务器进行集成(Apache服务器,Nginx服务器等),JNDI资源的设置与访问等。以下是我个人学习tomcat.apache.org官网的一些笔记,或者是翻译。 配置文件可以描述为以下几种主要的目录: 1. Server:顶层元素由一组Connector和一个Engine组成 2. Connectors:外部客户端发送请求到特定Service的中间接口 3. Containers:处理接受的请求并产生对应通信请求的部件,Engine为Service处理所有请求,Host处理请求到特定虚拟Host的请求,Context处理特定的webApplication工程。 4. Nested Component:可以内嵌到Container容器中的元素,有些元素可以内嵌到所有的Container容易,有些只能内嵌到Context中 ## Server ## < Server >server.xml的顶层元素,由xml文件定义可以知道,server元素有且必须为一个,他的属性如下所示 1. className:须实现org.apache.catalina.Server接口,不写为默认 2. address:tomcat使用的ip地址,默认为localhost 3. port:设置为-1表示不允许使用bin目录下的关闭脚本,不推荐配置-1 4. shutdown:通过tcp/ip发送关闭的命令 ## Service ## < Service >元素代表了一到多个Connectors共享一个Engine处理接受到的请求,Service必须内嵌到Server中,可以有多个 1. className:必须实现org.apache.catalina.Service接口,可默认不写 2. name:Service的名字,如果我们使用标准的Service会在log目录看到日志,且Service的名字必须是唯一的 ## Executor ## Executor:代表的是可以在部件中共享使用的线程池,必须实现org.apache.catalina.Executor接口,所有的Executor都支持一下两种属性 1. className:需实现特定接口,如果实现了LifeCycle接口,可以被容器开启和关闭,默认的实现为org.apache.catalina.core.StandardThreadExecutor 2. name:代表该线程池的名字,其他部件可以通过name引用该线程池 org.apache.catalina.core.StandardThreadExecutor默认实现的属性如下所示: 1. threadPriority:优先级,默认为5,等价于Thread.NORM\_PRIORITY常量 2. daemon:守护线程 3. namePrefix:线程前缀名 4. maxThreads:最大活跃线程数,默认为200 5. minSpareThreads:最小活跃线程数,默认为25 6. maxIdleTime:空闲线程经过maxIdleTime毫秒后销毁,默认为60000毫秒(1分钟) 7. maxQueueSize:等待被执行的最大任务数量,默认为Integer.MAX\_VALUE 8. prestartminSpareThreads:是否立即生成minSpareThreads线程数,默认为false 9. threadRenewalDelay: ## HTTP Connectors ## HTTPConectors支持HTTP协议,一个HTTPConector在指定的tcp端口上监听请求,与之关联的Engine的负责请求的处理并产生相应的响应,一个Service可以支持多种Conector。 所有标准的Connector支持如下的属性: 1. allowTrace:是否可以追踪HTTP请求,默认为false 2. asyncTimeout: 异步请求超时时间设置,默认为10000毫秒 3. enableLookups:调用request.getRemoteHost()进行域名转换需设置为true,默认为false,直接返回ip 4. maxHeaderCount:最大header数量,小于0为没有限制,默认为10 5. maxParameterCount:get和post请求最多参数数量,默认为10000,小于0没有限制 6. maxPostSize:小于0没有限制,默认为2Mb 7. maxSavePostSize:表单验证或者证书验证时缓存的post数据最大值,-1位不限制大小,0在证书验证中不保存数据,默认为4096Kb 8. parseBodyMethods:默认为post 9. **port:** connector监听接受请求的端口号,0位随机选择 10. protocol:通信协议,默认为HTTP/1.1,自动选择BIO或者是APR/native方式,如果OS的path上存在APR的library,首先使用apr,不同通信方式为 BIO:org.apache.coyote.http11.Http11Protocol NIO:org.apache.coyote.http11.Http11NioProtocol APR:org.apache.coyote.http11.Http11AprProtocol 1. proxyName:代理服务器名字 2. proxyPort:代理拂服务器端口 3. redirectPort:如果本Connector不支持ssl请求,如果某个request符合< security-constraint >走https通道,Catalina将该请求重定向到redirectPort端口 4. scheme:默认为http,ssl为https 5. secure:默认为false,request.isSecure()返回值 6. URIEncoding:默认为ISO-8859-1 7. useBodyEncodingForURI:默认为false 8. useIPVHosts:默认为false 9. xpoweredBy:默认为false BIO,NIO以及APR都支持的属性 1. acceptCount:最大接受request数,默认为100,超过此数目后新连接将被拒接 2. acceptorThreadCount:接受简历连接的线程数量,默认为1,对于非持久链接,可以增大 3. acceptorThreadPriority:acceptor线程的优先级,默认为5等价于Thread.NORM\_PRIORITY 4. address:默认将会使用该server的所有服务器 5. allowedTrailerHeaders: 6. bindOnInit:默认为true 7. compressableMimeType:默认为text/html,text/xml,text/plain,text/css 8. compression:Connector可以使用HTTP/1.1GZIP压缩技术去节省服务器的流量,这个的可能取值是on允许压缩文本数据,off不允许压缩,force压缩所有情景,或者取值一个整数作为是否压缩的阈值,默认为off 9. compressionMinSize:压缩阈值,默认为2048 10. connectionLinger:被Connector使用的socket在关闭后将会停留多少秒,默认为-1,表示不允许socket逗留 11. connectionTimeout: Connector在建立连接后等待请求到达的超时阈值,-1表示不存在超时连接,默认为60000毫秒,需注意,在标准的server.xml中的设置为20000毫秒;除非disableuploadtimeout设置为false,这个时间也将被用于读取请求报文时 12. connectionUploadTimeout:仅当disableuploadtimeout设置为false才生效,单位为毫秒 13. disableUploadTimeout:默认为false,表示不允许更长的超时 14. executor:引用Executor元素的名字,如果该executor存在,配置的线程相关属性将无效,如果不存在,使用一个内部线程池 15. executorTerminationTimeoutMillis:内部线程池在Connector处理请求钱等待时间,默认BIO为0,NIO和APR为5000毫秒 16. keepAliveTimeout:默认使用connectionTimeOut属性,表示connector在处理完一个http请求了等待多少毫秒就会关闭连接 17. maxConnections:服务器在任何时刻可以接收并处理的连接数,连接数达到时,服务器可以继续建立连接,但是并不处理。需注意,一旦达到maxConnections数量,服务器依旧可以接收连接达到acceptCount,maxConnection根据Connector的不同而不同,BIO连接数为maxThread线程数,NIO为1000,APR/native为8192。如果值为-1,表示不计算不启用连接数限制 18. maxExtensionSize:限制httpRequest的报文长度,默认为8192,值为-1表示没有限制 19. maxHttpHeaderSize:报文头长度,默认为8192kb 20. maxKeepAliveRequests:保持长连接的http请求,设置为1表示不启用长连接,-1表示为无限制,默认为100 21. maxSwallowSize:最大可上传的报文数大小,默认为2097152 kb,负数表示不限制 22. maxThreads:该Connector的线程数量,默认为200 23. maxTrailerSize:-1为不限制,默认为8291kb 24. minSpareThreads:默认为10,最小在运行线程 25. noCompressionUserAgents:符合该正则表达式的连接将不使用压缩 26. processorCache:可以被缓存的对象的数量,-1表示不限制,默认为200,低于Servlet3.0版本,使其等于maxThreads的属性,如果为Servlet3.0或更高,可以大于maxThread 27. restrictedUserAgents:符合该正则表达式的将不能使用keepalive保持长连接 28. server:响应报文头的server属性,默认为Apache-Coyote/1.1 29. socketBuffer:socket输出缓冲区,-1不启用缓冲区,默认为9000byte 30. SSLEnabled:默认为false,启用ssl协议 31. tcpNoDelay:默认为true 32. threadPriority:默认为java.lang.Thread.NORM\_PRIORITY,对应jdk中线程的优先级 33. upgradeAsyncWriteBufferSize:异步写缓冲区大小,单位为byte,默认为8192 ## Java Tcp Socket属性 ## 以下属性BIO跟NIO都有的Socket属性(默认为jdk原始值) 1. socket.rxBufSize:接受缓冲区大小(int) 2. socket.txBufSize:发送缓冲区大小(int) 3. socket.tcpNoDelay:等价于tcpNoDelay(boolean) 4. socket.soKeepAlive:持久连接(boolean) 5. socket.ooBInline:紧急发送(boolean) 6. socket.soReuseAddress:重用地址(boolean) 7. socket.soLingerOn:(boolean) 8. socket.soTimeout:等价于connectionTime 9. socket.performanceConnectionTime:(int) 10. socket.performanceLatency: 11. socket.performanceBandwidth: 12. socket.unlockTimeout:处理完完成后释放连接间隔,单位毫秒,默认为250 ## BIO特有属性 ## 1. disableKeepAlivePercentage:不允许保持持久连接的百分比,默认为75,取值为0~100 ## NIO特有属性 ## 1. pollerThreadCount:pool事件的处理线程数量,默认为1 2. pollerThreadPriority:默认为5,对应于java.lang.Thread.NORM\_PRIORITY 3. selectorTimeout:默认为1000毫秒,不要设置过大 4. useComet:默认为true 5. useSendfile:默认为true 6. socket.directBuffer:默认为false,是否使用java的ByteBuffers,在Sun’sJDK中需要在tomcat启动脚本中加入-XX:MaxDirectMemorySize=256m. 7. socket.appWriteBufSize:tomcat中关联writeByteBuffer,默认为8192,并发连接数如果不高,可以适当提高该属性值 8. socket.bufferPool:NIO使用NioChannel 类缓存socket,默认为500,-1表示没有限制,0表示不缓存任何socket 9. socket.processorCache:默认为500,-1表示无限制,0不缓存 10. socket.keyCache:默认为500,-1表示无限制,0不缓存 11. socket.eventCache:默认为500,-1表示无限制,0不缓存 12. selectorPool.maxSelectors:减少对selector的争夺,默认为200,org.apache.tomcat.util.net.NioSelectorShared属性设置为false时将会启用该属性 13. selectorPool.maxSpareSelectors:减少selector争夺,默认为-1表示没有上限,当org.apache.tomcat.util.net.NioSelectorShared设置为false时启用该属性 14. command-line-options:该-Dorg.apache.tomcat.util.net.NioSelectorShared=true|false对于NIO connector是有效的,默认为true,设置为false表示为每个线程拥有一个selector 15. oomParachute:
相关 tomcat 1. c/s: 客户端和服务端 : 例如QQ; 安全, 升级比较麻烦 b/s: 浏览器和服务端: 只需要编写服务端; 不安全 2. web资源介绍: 灰太狼/ 2022年06月14日 08:49/ 0 赞/ 73 阅读
相关 tomcat Tomcat 1.概述 通过上面的讲解大家对JSP与Servlet已经有所理解,最起码知道它们是做什么的,说到底它们都是程序设计语言,是帮助我们更好的编写程序。大家都知 缺乏、安全感/ 2022年06月11日 07:55/ 0 赞/ 436 阅读
相关 Tomcat Tomcat简介 WEB服务器与应用服务器的概念 WEB服务器:专门处理HTTP请求,提供WEB信息浏览服务。 应用服务器:可解析运行后台代码,为应用 客官°小女子只卖身不卖艺/ 2022年06月07日 03:07/ 0 赞/ 262 阅读
相关 Tomcat 1.基本调优 bin/catalina.sh 加一行 JAVA\_OPTS='-Xms128m -Xmx512m -XX:PermSize=128m' 2.设置脚本开机启 r囧r小猫/ 2022年05月31日 22:48/ 0 赞/ 240 阅读
相关 tomcat 一、安装Tomcat5.5.20 1、下载安装包 <table> <tbody> <tr> <td><span><strong>代码:</stro 一时失言乱红尘/ 2022年05月11日 12:16/ 0 赞/ 120 阅读
相关 tomcat 前文: 对tomcat的构的初步解析 一、web服务器 ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_te 偏执的太偏执、/ 2022年03月19日 16:58/ 0 赞/ 87 阅读
相关 tomcat tomcat结构 模块组成结构 Tomcat的核心组件就Connector和Container,一个Connector+一个Container(Engine)构成一个 ﹏ヽ暗。殇╰゛Y/ 2022年03月16日 07:51/ 0 赞/ 131 阅读
相关 Tomcat [Tomcat][] Tomcat运行在JVM之上,它和HTTP服务器一样,绑定IP地址并监听TCP端口,同时还包含以下指责: 1. 管理Servlet程序的生命周期 左手的ㄟ右手/ 2022年01月28日 13:21/ 0 赞/ 173 阅读
相关 Tomcat tomcat目录层次结构 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6L 我会带着你远行/ 2021年11月17日 09:02/ 0 赞/ 232 阅读
相关 Tomcat Tomcat文件目录 |-bin: 存放tomcat的命令。 |- conf: 存放tomcat的配置信息。其中server.xml文件是核心的配置文件。 ゝ一世哀愁。/ 2021年09月11日 05:40/ 0 赞/ 362 阅读
还没有评论,来说两句吧...