#vim $TOMCAT_HOME/conf/server.xml

<?xml version='1.0' encoding='utf-8'?>
<Server port="8005" shutdown="SHUTDOWN"><!--APR library loader. Documentation at /docs/apr.html --><Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" /><!--Initialize Jasper prior to webapps are loaded. Documentation at /docs/jasper-howto.html --><Listener className="org.apache.catalina.core.JasperListener" /><!-- Prevent memory leaks due to use of particular java/javax APIs--><Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" /><!-- JMX Support for the Tomcat server. Documentation at /docs/non-existent.html --><Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" /><Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" /><GlobalNamingResources><Resource name="UserDatabase" auth="Container"type="org.apache.catalina.UserDatabase"description="User database that can be updated and saved"factory="org.apache.catalina.users.MemoryUserDatabaseFactory"pathname="conf/tomcat-users.xml" /></GlobalNamingResources><Service name="Catalina"><Connector    port="8080" protocol="HTTP/1.1" redirectPort="8443" maxThreads="1000"   minSpareThreads="100"   acceptCount="1000"  maxConnections="1000"  connectionTimeout="20000"   maxHttpHeaderSize="8192"  tcpNoDelay="true"compression="on"  compressionMinSize="4096"  disableUploadTimeout="true"  enableLookups="false"  URIEncoding="UTF-8"/><Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /><Engine name="Catalina" defaultHost="localhost"><Realm className="org.apache.catalina.realm.UserDatabaseRealm"resourceName="UserDatabase"/><Host name="localhost"  appBase="webapps"unpackWARs="true" autoDeploy="true"xmlValidation="false" xmlNamespaceAware="false"></Host></Engine></Service>
</Server>

1)port:代表Tomcat监听端口,也就是网站的访问端口,默认为8080,可以根据需要改成其他。
2)protocol:协议类型,可选类型有四种,分别为BIO(阻塞型IO),NIO,NIO2和APR。
    (1)BIO:BIO(Blocking I/O),顾名思义,即阻塞式I/O操作,表示Tomcat使用的是传统的Java I/O操作(即java.io包及其子包)。Tomcat在默认情况下,是以bio模式运行的。遗憾的是,就一般而言,bio模式是三种运行模式中性能最低的一种。BIO配置采用默认即可。
    (2)NIO:NIO(New I/O),是Java SE 1.4及后续版本提供的一种新的I/O操作方式(即java.nio包及其子包)。Java nio是一个基于缓冲区、并能提供非阻塞I/O操作的java API,因此nio也被看成是non-blocking I/O的缩写。它拥有比传统I/O操作(bio)更好的并发运行性能。
    (3)APR:APR(Apache Portable Runtime/Apache可移植运行时),是Apache HTTP服务器的支持库。你可以简单地理解为:Tomcat将以JNI的形式调用 Apache HTTP服务器的核心动态链接库来处理文件读取或网络传输操作,从而大大地提高 Tomcat对静态文件的处理性能。

三种协议配置

//BIO
protocol="HTTP/1.1"
//NIO
protocol="org.apache.coyote.http11.Http11NioProtocol"
//NIO2
protocol="org.apache.coyote.http11.Http11Nio2Protocol"
//APR
protocol="org.apache.coyote.http11.Http11AprProtocol" 

3)maxThreads:由该连接器创建的处理请求线程的最大数目,也就是可以处理的同时请求的最大数目。如果未配置默认值为200。如果一个执行器与此连接器关联,则忽略此属性,因为该属性将被忽略,所以该连接器将使用执行器而不是一个内部线程池来执行任务。
    maxThreads是一个重要的配置属性,maxThreads配置的合理直接影响了Tomcat的相关性能,所以这里我们重点讨论下。
    maxThreads并不是配置的越大越好,事实上你即使配置成999999也是没有用的,因为这个最大值是受操作系统及相关硬件所制约的,并且最大值并不一定是最优值,所以我们追寻的应该是最优值而不是最大值。
        
4)minSpareThreads:线程的最小运行数目,这些始终保持运行。如果未指定,默认值为10。
5)acceptCount:当所有可能的请求处理线程都在使用时传入连接请求的最大队列长度。如果未指定,默认值为100。一般是设置的跟 maxThreads一样或一半,此值设置的过大会导致排队的请求超时而未被处理。所以这个值应该是主要根据应用的访问峰值与平均值来权衡配置。
6)maxConnections:在任何给定的时间内,服务器将接受和处理的最大连接数。当这个数字已经达到时,服务器将接受但不处理,等待进一步连接。NIO与NIO2的默认值为10000,APR默认值为8192。
7)connectionTimeout:当请求已经被接受,但未被处理,也就是等待中的超时时间。单位为毫秒,默认值为60000。通常情况下设置为30000。
8)maxHttpHeaderSize:请求和响应的HTTP头的最大大小,以字节为单位指定。如果没有指定,这个属性被设置为8192(8 KB)。
9)tcpNoDelay:如果为true,服务器socket会设置TCP_NO_DELAY选项,在大多数情况下可以提高性能。缺省情况下设为true。
10)compression:是否启用gzip压缩,默认为关闭状态。这个参数的可接受值为“off”(不使用压缩),“on”(压缩文本数据),“force”(在所有的情况下强制压缩)。
11)compressionMinSize:如果compression="on",则启用此项。被压缩前数据的最小值,也就是超过这个值后才被压缩。如果没有指定,这个属性默认为“2048”(2K),单位为byte。
12)disableUploadTimeout:这个标志允许servlet Container在一个servlet执行的时候,使用一个不同的,更长的连接超时。最终的结果是给servlet更长的时间以便完成其执行,或者在数据上载的时候更长的超时时间。如果没有指定,设为false。
13)enableLookups:关闭DNS反向查询。
14)URIEncoding:URL编码字符集。
Connector 还有很多其他参数,可以参考Tomcat官网,这里只介绍与性能相关的部分。

tomcat优化之server.xml相关推荐

  1. Linux下的Tomcat服务器修改server.xml中的8080端口号后出现不能访问首页

    QUESTION:Linux下的Tomcat服务器修改server.xml中的8080端口号后出现不能访问首页 ANSWER: 简单直接的有效方法:重装tomcat服务器.

  2. tomcat中conf/server.xml配置线程池不生效的问题注意添加线程池节点executor后要在connector中增加executor属性

    优化连接数,主要是在conf/server.xml配置文件中进行修改. 优化线程数 找到Connector port="8080" protocol="HTTP/1.1& ...

  3. Tomcat启动分析server.xml

    2019独角兽企业重金招聘Python工程师标准>>> Tomcat Server的结构图 该文件描述了如何启动Tomcat Server <Server> <Li ...

  4. Tomcat的配置文件server.xml叙述

    元素名 属性 解释 server port 指定一个端口,这个端口负责监听关闭tomcat的请求 shutdown  指定向端口发送的命令字符串 service name          指定ser ...

  5. [转载]tomcat的配置文件server.xml不支持中文注释的解决办法

    原文链接:http://tjmljw.iteye.com/blog/1500370 启动tomcat失败,控制台一闪而过,打开catalina的log发现错误指向了conf/server.xml,报错 ...

  6. Docker Centos 7.X部署Tomcat 并且修改Server.xml配置文件方案 并设置时区 只要十一步

    我用的是腾讯云 Centos 7.3版本,使用Docker最好使用7.x以上版本 1.拉取镜像 docker pull tomcat:8 2.创建容器并且挂载webapps的目录(我这里将本地端口映射 ...

  7. 修改tomcat的conf/server.xml解决网页乱码

    --后台 转码 str= new String(str.getBytes("iso8859-1"),"gb2312"); str= new String(str ...

  8. Tomcat 修改端口(server.xml)

    1.打开Tomcat的安装目录,进入子目录conf. 2.找到[conf]目录下的[server.xml]. 3.打开server.xml 4.修改Shutdown端口 PS:默认端口号为8005 5 ...

  9. Spring Boot笔记-新增嵌入式tomcat配置(修改tomcat中conf/server.xml)

    这里以spring boot 2.x为例 这里我直接贴代码,设置2个头,一个是X-Forwarded-For一个是X-Forwarded-Proto及将头设置为https. @Configuratio ...

最新文章

  1. python数据结构与算法:排序算法(面试经验总结)
  2. goland创建一个不限长度的字节切片_Go语言入门必知教程-切片
  3. boost::mpi模块实现scan集合的测试
  4. APL开发日志--2012-11-18
  5. C++98C++11的区别
  6. 让8只数码管初始显示零,每隔大约1s加一显示,到数码管显示9后,再从一开始显示
  7. php怎么修改div自带属性吗,修改html 属性,css样式。
  8. Flash MX 2004 中的文本遮罩
  9. 中国吉非替尼行业市场供需与战略研究报告
  10. Fundamentals of speech signal processing
  11. 代价函数详解(合页代价与softmax代价)
  12. JAVA基础-面型对象测试题
  13. 网站跳出率高怎么解决?
  14. 2019 告辞了您嘞 ~
  15. 【模拟】Parity
  16. 用JavaScript来对QUOTED-PRINTABLE进行解码和编码算法
  17. 基于LMS及FxLMS算法的ANC主动降噪仿真分析
  18. 2017暴雪php,动视暴雪2017Q4财报 开启全新里程碑
  19. c语言对浮点数截断,C语言中浮点数精度进行截断输出
  20. 浏览器功能大比拼:谁更出彩?

热门文章

  1. ISFP型人格的性格缺陷和心理问题分析
  2. 不同模式电商时履约,运单的差异
  3. 调试器工作原理系列一: 基础篇
  4. c# 阿拉伯数字转换成英文
  5. What is Comunion 2022?
  6. 12个免费的从文本到语音转换 的在线服务和工具
  7. 腾讯春招提前批面试经历(已收到offer)
  8. SpringBoot知识清单
  9. 铁腕军阀服务器无响应,铁腕军阀冬季攻势
  10. 联想自带win7家庭版升级win7旗舰版